MATLAB在边界值问题中的应用:曲线、向量场、极限与积分的可视化
立即解锁
发布时间: 2025-09-06 01:54:35 阅读量: 29 订阅数: 28 AIGC 


微纳流体与磁场热质传递
# MATLAB在边界值问题中的应用:曲线、向量场、极限与积分的可视化
## 1. MATLAB简介
### 1.1 曲线和曲面绘制
在MATLAB中,绘制3D表面图、等高线图和梯度图比简单的线图要复杂一些。不过,通过一些示例和简单修改,就能创建所需的大部分图形。
#### 1.1.1 2D和3D图形命令
- **2D图形命令**:`plot`用于绘制向量之间的关系,还有`polar`、`bar`、`stairs`、`loglog`、`semilogx`和`semilogy`等命令。
- **3D图形命令**:常用的有`plot3`、`contour`、`mesh`和`surf`,其他还有`pcolor`、`image`、`contour3`、`fill3`、`cylinder`和`sphere`。
| 命令 | 描述 |
| --- | --- |
| `plot(y)` | 当Y为实数时,绘制Y的列与每个值的索引的关系;对于复数Y,等价于`plot(real(Y), imag(Y))` |
| `plot3(X1,Y1,Z1)` | 显示一组数据点的三维图 |
| `surf(Z)` | 从矩阵Z的z分量创建三维阴影表面,使用`x = 1:n`和`y = 1:m`,其中`[m,n] = size(Z)` |
| `ezsurf(fun)` | 使用`surf`函数创建`fun(x,y)`的图形,函数在默认域`-2π < x < 2π, -2π < y < 2π`内绘制 |
| `y = linspace(a,b,n)` | 生成一个包含n个点的行向量y,这些点在a和b之间线性分布并包括a和b |
| `mesh(X,Y,Z)` | 绘制线框网格,颜色由Z决定,颜色与表面高度成正比 |
| `[X,Y] = meshgrid(x,y)` | 将向量x和y指定的域转换为数组X和Y,可用于计算二元函数和三维网格/表面图 |
| `subplot(m,n,p)` | 将图形窗口划分为m×n的小坐标轴矩阵,选择第p个坐标轴对象进行当前绘图,并返回坐标轴句柄 |
| `colormap(map)` | 将颜色图设置为矩阵map,如果map中的任何值不在`[0 1]`区间内,会收到错误提示“Colormap must have values in [0, 1]” |
| `Prism` | 重复六种颜色:红色、橙色、黄色、绿色、蓝色和紫色 |
| `Flag` | 由红色、白色、蓝色和黑色组成,每个索引增量时颜色完全改变 |
| `hsv` | 改变色相 - 饱和度 - 值颜色模型的色相分量,颜色从红色开始,经过黄色、绿色、青色、蓝色、品红色,再回到红色 |
| `shading flat` | 控制表面和补丁图形对象的颜色阴影 |
#### 1.1.2 示例代码
以下是一些绘制曲线和曲面的示例代码:
```matlab
% 示例1:绘制以(1, 3)为中心的圆
clc
clear all
t = linspace(0, 2*pi, 101);
x = 1 +2*cos(t);
y = 3 +2*sin(t);
plot(x,y,'r.')
axis equal
xlabel('x-axis')
ylabel('y-axis')
title('Circle')
% 示例2:不使用hold on函数绘制图形
y = linspace(-10,10,1000)
plot(y,cos(y),'b.',y,cos(2*y),'g.')
xlabel('x axis')
ylabel('y axis')
legend('cos(x)','cos(2x)','location','northeast')
% 示例3:使用plot3绘制表面
t=linspace(0,2*pi,500);
x=cos(t);
y=sin(t);
z=sin(5*t);
comet3(x,y,z)
plot3(x,y,z,'g*','markersize',7)
xlabel('x-axis')
ylabel('y-axis')
zlabel('z-axis')
title('3D Curve')
% 示例4:在一个窗口中绘制四条曲线sinx, cosx, e^(-x), sin3x
clc
clear all
x=0:.1:2*pi;
subplot(2,2,1);
plot(x,sin(x),'b*');
title('sin(x)')
subplot(2,2,2);
plot(x,cos(x),'r-o');
title('cos(x)')
subplot(2,2,3)
plot(x,exp(-x),'g.');
title('exp(-x)')
subplot(2,2,4);
plot(x,sin(3*x),'m-o');
title('sin(3x)')
% 示例5:使用ezsurf和ezplot绘制表面
syms x y
f = 2*(x^2+y^2)
ezsurf(f)
colormap cool
% 示例6:为函数x^2 + 2*x - 6绘制ezplot
syms x
y = x^2+2*x-6
ezplot(y)
% 示例7
x=-1:.05:1;
y=-1:.05:1;
[x,y]=meshgrid(x,y);
z=x.*y.^2-x.^3
surf(x,y,z);
colormap spring
shading interp
```
### 1.2 向量场和梯度
#### 1.2.1 目标
- 编写MATLAB代码可视化二维和三维向量场。
- 找到梯度向量并与等高线曲线一起可视化。
- 找到给定函数在某点沿某向量方向的方向导数并与等高线曲线一起可视化。
#### 1.2.2 数学形式和命令
- **数学形式**:包括绘制二维和三维向量场、求梯度向量和方向导数。
- **MATLAB语法**:`inline`、`vectorize`、`quiver`、`quiver3`和`vectarrow`。
| 命令 | 描述 |
| --- | --- |
| `inline(expr)` | 从字符串expr中包含的MATLAB表达式构造内联函数对象 |
| `vectorize(fun)` | 在任何`^`、`*`或`/`前插入`.`,结果是一个字符串 |
| `quiver(x,y,u,v)` | 在点`(x,y)`处将速度向量显示为箭头,分量为`(u,v)` |
| `quiver3(x,y,z,u,v,w)` | 在点`(x,y,z)`处绘制分量为`(u,v,w)`的向量 |
| `vectarrow(p0,p1)` | 绘制从点p0指向点p1的带箭头的线向量,根据输入的维度可以绘制二维和三维向量 |
#### 1.2.3 示例代码
```matlab
% 示例1:绘制二维向量场x*i + y*j
syms x y
F=input('enter the vector as i,j and korder in vector form:');
P = inline(vectorize(F(1)), 'x', 'y');
Q = inline(vectorize(F(2)), 'x', 'y');
x = linspace(0, 1, 10); y = x;
[X,Y] = meshgrid(x,y);
U = P(X,Y);
V = Q(X,Y);
quiver(X,Y,U,V,1)
axis on
xlabel('x')
ylabel('y')
% 示例2:绘制三维向量场x*i + y*j + z*k
syms x y z
F=input( 'enter the vector as i,j and korder in vector form:')
P = inlin
```
0
0
复制全文
相关推荐







