06 - Matlab符号计算
Download
Report
Transcript 06 - Matlab符号计算
Matlab 符号计算
一、符号计算基础
二、符号微积分
三、符号表达式的化简与替换
四、求解符号方程(组)
五、绘制符号函数的图形
一、符号计算基础
•
•
•
•
•
•
•
1、什么是符号计算
2、创建符号量 sym / syms
3、替换符号量 subs
4、符号计算的运算符
5、符号计算的基本函数
6、符号计算的精度控制
7、符号量与数值量之间的转换
1、什么是符号计算?
• 符号计算以推理解析的方式进行,不受计算误差积累问题困
扰;
• 符号计算给出解析解,当解析解不存在时,会给出数值解;
• 符号计算指令的调用比较简单,与教科书上的公式相近;
• 计算所需时间比数值计算要多很多;
• 常用的符号计算软件有Maple、Mathmatica、MathCAD等。
• Matlab 的符号计算功能是建立在 Maple 的基础上的, 通过
Symbolic Math Toolbox(符号数学工具箱)和Extended
Symbolic Math Toolbox(扩展符号数学工具箱)实现。
数值运算的误差
1 1
3 1 4
?
?
2 3
10 2 5
1 4 3
?
2 5 10
2、创建符号量
(1) sym()
每次只能创建 一个 符号量。
S = sym(A)
x = sym('x')
x = sym('x','real')
x = sym('x','positive')
x = sym('x','unreal')
S = sym(A,flag)
设x为实数
设x为正实数
去除x的“实”、“正”属性
flag为'r', 'd', 'e', 或 'f'
a=sym('a')
a是符号变量
b=sym(1/3)
b是符号常量
f=sym('[1,ab;c,d]')
f是符号矩阵
b = sym('1/3+sqrt(2)')
用单引号括起来,是以最精确的
形式存储符号常数
b=
1/3+sqrt(2)
a = sym(1/3 + sqrt(2))
a=
7870251548315938*2^(-52)
p
p
p, q为正整数时, , ,
q
q
称为“ 有理” 表示。
不用单引号,则是以最
接近的“有理”表示的
形式存储符号常数
p ,2q , 10q
(2) syms
可以同时建立 多个 符号变量
syms arg1 arg2 ...
syms arg1 arg2 ... real
syms arg1 arg2 ... unreal
syms arg1 arg2 ... positive
syms a b c
a=sym('a');
b=sym('b');
c=sym('c');
a b c中间一定要用空格隔开,不能用逗号
syms不能用来创建符号常量
(3)创建符号表达式
用 sym 命令创建符号表达式:
>> f = sym('a*x+b')
f=
a*x+b
先定义符号变量,再按普通书写形式创建符号表达式:
>> syms a x b
>> f = a*x + b
f=
a*x+b
(4)创建符号数组
将数值矩阵转化成符号数组:
B = [2/3,sqrt(2);5.2,log(3)];
C = sym(B)
使用 sym 函数直接生成:
A=sym('[1+x,sin(x); 5,exp(x)]')
先定义符号变量,再按普通书写 形式创建符号数组:
syms a b x y
C = [a,b;x,y]
(5) findsym( )
找出符号表达式/数组中的符号变量
findsym(S)
findsym(S,n)
按字母顺序列出 S 中的所有符号变量
列出 S 中离 x 最近的 n 个符号变量
若表达式中有两个符号变量与
则ASCII 码大者优先。
x 的距离相等,
>> f = sym('2*w-3*y+z^2+5*a')
f=
2*w-3*y+z^2+5*a
>> findsym(f,3)
ans =
y,w,z
>> findsym(f)
ans =
a, w, y, z
>> findsym(f,1)
ans =
y
3、替换符号量
subs( ) 用给定的数据替换符号表达式中的指定的符号变量
R = subs(S)
R = subs(S, new)
R = subs(S,old,new)
若
则
替换 S 中的所有变量
用 new 替换 S 中的缺省变量
用 new 替换 S 中的 old
new 是一个由多个符号变量组成的数组,
old 应该具有与 new 相同的形状的数组。
syms a x b
f = a*x+b
a=1
b=2
c = subs(f)
syms a x b
f = a*x+b
c = subs(f,5)
c =x+2
缺省变量:
c = 5*a+b
syms a x b
f = a*x+b
c = subs(f,[a,b],[1,2])
c = x+2
findsym(S,1)的返回结果
syms a x b
syms a x b
f = a*x+b
f = a*x+b
c = subs(f,1:5)
c = subs(f,[1,2;3,4])
c=
[ a+b, 2*a+b, 3*a+b, 4*a+b, 5*a+b]
c=
[ a+b, 2*a+b]
[ 3*a+b, 4*a+b]
syms a x b
syms a x b
f = a*x+b
f = a*x+b
c = subs(f,{a,b},{[1,2],[3,4]})
c = subs(f,{a,b},{[1,2;3,4],5})
c=
[ x+3, 2*x+4]
c=
[ x+5, 2*x+5]
[ 3*x+5, 4*x+5]
练习:指出下面各条语句的输出结果
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
f=sym('2*u');
subs(f,'u',2)
f2=subs(f,'u','u+2')
a=3;
subs(f2,'u',a+2)
subs(f2,'u','a+2')
syms x y
f3=subs(f,'u',x+y)
subs(f3,[x,y],[1,2])
subs(f3,[x,y],[x+y,x+y])
4、符号计算的运算符
Matlab 符号计算中采用的运算符,在名称和使用上,
都与数值计算中的运算符完全相同。
矩阵运算:+
-
*
\
/
^
数组运算:+
-
.*
.\
./
.^
矩阵转置:'
.'
X=sym('[a,b;c,d]')
Y=sym('[a,1;b,0]')
Z1=X*Y
Z2=X.'.*Y
Z2 =
Z1 =
[ a^2+b^2,
[ c*a+d*b,
a]
c]
[ a^2, c]
[ b^2, 0]
5、符号计算的基本函数
Matlab 符号计算中,一些基本的函数,在名称和使用
上,与数值计算中的函数基本相同。
三角函数,双曲函数及它们的反函数,无论在数值计算还是在
符号计算中,使用方法相同。但是没有 atan2函数。
指数、对数函数:与数值计算一样
复数函数:符号计算中,没有angle函数(求相角)
矩阵代数函数:与数值计算一样
与数组相关的函数,如size,length,括号[ ]、( )的作用等等,
都与数值计算一样
练习:计算下列行列式
x
y
x y
y
x y
x y
x
x
y
a 1 0
1 b 1
0 1 c
0 0 1
0
0
1
d
6、符号计算的精度控制
digits(n) 设置符号数值计算以n位相对精度进行,默认为32位
xs = vpa(x) 在digits指定的精度下,给出x的数值型符号结果xs
xs = vpa(x,n) 在n位相对精度下,给出x的数值型符号结果xs
a = sym(pi)
digits(20)
b = vpa(a*a)
a = pi
b = 9.8696044010893586191
c = 9.8696044010893586188344909998761
d = 9.869604401089358618834490999876151135313
digits(32)
c = vpa(a*a)
d = vpa(a*a,40)
7、符号量与数值量之间的转换
double(x)
把符号常数转化为16位相对精度的浮点数值对象。
a = sym('1/123') + sym(sqrt(2)) + sym('pi')
b = double(a)
a = 1/123+2^(1/2)+pi
b=
4.5639
s = poly2sym(p) 把多项式转化相应的符号表达式
p = sym2poly(s)
syms x
p1 = [1,2,3]
s1 = x + 2*x^3 - 6
s2 = poly2sym(p1,x)
p2 = sym2poly(s1)
把多项式的符号表达式转换为数值多项式
s2 =
x^2+2*x+3
p2 =
2
0
1
-6
二、符号微积分
•
•
•
•
•
1、极限
2、微分
3、积分
4、级数求和
5、函数的泰勒级数展开
1、极限
limit(F)
limit(F,a)
limit(F,v,a)
limit(F,v,a,’right’)
limit(F,v,a,’left’)
求默认变量→0时F的极限
求默认变量→a时F的极限
求v →a时F的极限
求v →a+时F的右极限
求v →a-时F的左极限
F为符号表达式,没有指定变量时,由 findsym 确定默认变量
1 lim
h 0
sin x h sin x
h
a
1
2 f x xlim
x
x
syms x a h
F = (sin(x+h) - sin(x))/h
f = (1 + a/x)^x
lim_1 = limit(F,h,0)
lim_2 = limit(f,inf)
x
lim
x 0 x
syms x
limit(x/abs(x), x, 0, 'left')
ans = -1
x
lim
x 0 x
syms x
limit(x/abs(x), x, 0, 'right')
ans = 1
syms x
limit(x/abs(x), x, 0)
ans = NaN
2、微分
diff(S)
diff(S,n)
diff(S,v)
diff(S,v,n)
求 S 对默认变量的一阶导数
求 S 对默认变量的 n 阶导数
求 S 对变量 v 的一阶导数
求 S 对变量 v 的 n 阶导数,也可写成 diff(f,n,v)
x
1
求
f
x
e
x sin x 的导数
2
2
z
z
ax
2 设z e cos by,求 2 ,
y xy
syms x y a b
f = sqrt(exp(x)+x*sin(x))
df = diff(f)
z = exp(a*x)*cos(b*y)
yy = diff(z,y,2)
xy = diff(diff(z,x),y)
3、积分
int(S)
int(S,v)
int(S,a,b)
int(S,v,a,b)
求 S 对默认变量的不定积分
求 S 对变量 v 的不定积分
求 S 对默认变量的定积分
求 S 对变量 v 的定积分
a:积分下限,b:积分上限。
当 a 或 b 取 inf(或 -inf)时,计算的就是广义积分。
1 sin xy dy
syms x y
2 06 sin x 2 dx
1
3
1 2 dx
x
1
dx
4 2
x 2x 3
A1 = int(sin(x*y),y)
A2 = int(sin(x)+2,0,pi/6)
A3 = int(1/x^2,1,inf)
A4 = int(1/(x^2-2*x+3),-inf,inf)
练习:求下面的积分,给出50位精度的数值
2
x2
x2 y
x
xy
1
( x y z )dzdydx
2
先对 z 变量的积分
然后对 y 变量的积分
最后对 x 变量的积分
2
2
4、级数求和
symsum(s,v) 求s的前v项的和,变量为 v = 0,1,2,…,v-1
symsum(s)
功能同上,对默认变量求和
symsum(s,v,a,b)
变量v = a,a+1,…,b,求这些项的和
symsum(s,a,b)
默认变量 = a,a+1,…,b,求这些项的和
求:
100
1 k ,
k 1
1
2 2;
k 1 k
syms k
a = symsum(k,1,100)
b = symsum(1/k^2,1,inf)
n 1
求 q
n
n 0
syms q n
s1 = symsum(q^n,n,0,n-1)
s2 = symsum(q^n,n)
s1 =
√√√
q^n/(q-1)-1/(q-1)
s2 =
???
q^n/(q-1)
按照symsum函数的说明,这里s2应
该与s1相同,但结果却并不一致,
故建议使用symsum函数时使用下面
的完整的形式:
symsum(s,v,a,b)
5、函数的泰勒级数展开
在x a处展开式:f x f a
在x 0处展开:f x f 0
taylor(f)
taylor(f,n)
taylor(f,a)
taylor(f,n,a)
taylor(f,n,v)
taylor(f,n,v,a)
f 'a
1!
f ' 0
1!
f '' a
2!
f '' 0
2!
x a
n
n 0
f n 0
n 0
n!
xn
f n a
n!
求 f 在默认变量 = 0 处的 5 阶泰勒展开式
求 f 在默认变量 = 0 处的 n-1 阶泰勒展开式
求 f 在默认变量 = a 处的 5 阶泰勒展开式
求 f 在默认变量 = a 处 n-1 阶泰勒展开式
求 f 在变量 v = 0 处的 n-1 阶泰勒展开式
求 f 在变量 v = a 处的 n-1 阶泰勒展开式
当 a 为正整数时,请指定 n 的值。例如: a = 4时,
taylor(f,4) : 返回的是f 在 0 处的 3阶泰勒展开式
taylor(f,7,4):返回的是f 在 4 处的 6阶泰勒展开式
求x 0的7阶泰勒展开式:
sin x
1 f x
x
2 f x ex
3 f x sin x
4 f x cos x
syms x
f = sin(x)/x
t1 = taylor(f,8)
t2 = taylor(exp(x), 8)
t3 = taylor(sin(x), 8)
t4 = taylor(cos(x), 8)
三、符号表达式的化简
1、factor
2、expand
3、collect
4、simplify
5、simple
6、horner
7、numden
1、factor
factor(f)
对 f 进行因式分解,也可用于正整数的分解
ans =
syms x y
factor(x^3 - y^3)
(x-y)*(x^2+x*y+y^2)
a = 1234567890
b1 = factor(a)
b2 = factor(sym(a))
输入数值量,返回一个行数组
输入符号量,返回符号表达式
b1 =
2
3
3
b2 =
(2)*(3)^2*(5)*(3803)*(3607)
5
3607
3803
1
a
a2
4
a
1
b
b2
4
b
1
c
c2
4
c
1
d
?
2
d
4
d
syms a b c d
r = [a,b,c,d]
A = [r.^0;r;r.^2;r.^4]
B = det(A)
C = factor(B)
2、expand
expand(S)
把 S 展开为多项式形式,也可展开复合的
三角函数、指数函数
syms x
ans =
expand((x-2)*(x-4))
x^2-6*x+8
syms x y;
expand(cos(x+y))
ans =
syms a b
expand(exp((a + b)^2))
ans =
cos(x)*cos(y)-sin(x)*sin(y)
exp(a^2)*exp(a*b)^2*exp(b^2)
3、collect
collect(S)
collect(S,v)
按 默认变量 对 S 合并同类项
按指定变量 v 对 S 合并同类项
syms x y;
f = (x+y)*(x^2+y^2+1)
f1 = collect(f)
f2 = collect(f,y)
f1 =
x^3+y*x^2+(y^2+1)*x+y*(y^2+1)
f2 =
y^3+x*y^2+(x^2+1)*y+x*(x^2+1)
4、simplify
simplify(S): 用内置的化简规则对 S 进行化简
syms x;
f = sin(x)^2 + cos(x)^2 ;
f1 = simplify(f)
syms a b c;
g = exp(c*log(sqrt(a+b)));
g1 = simplify(g)
f1 =
1
g1 =
(a+b)^(1/2*c)
5、simple
simple(S) 对 S 尝试多种不同的算法(包括simplify)进行简
化,并显示相应的结果,最后返回其中最简短的形式并赋值给
默认变量ans
r = simple(S) 对 S 尝试多种不同的算法(包括simplify)进
行简化,但不显示相应的结果,只是返回其中最简短的形式并
赋值给变量 r
[r, How] = simple(S)
对 S 尝试多种不同的算法(包括
simplify)进行简化,但不显示相应的结果,只是返回其中最简
短的形式并赋值给变量 r,同时返回字符串How ,记录得到 r 所
使用的化简方法。
化简: f ( x)
3
1
6 12
2 8
3
x
x
x
syms x;
f = (1/x^3+6/x^2+12/x+8)^(1/3);
f1 = simple(f)
f2 = simple(f1)
f3 = simple(f2)
f1 = (2*x+1)/x
f2 = 2+1/x
f3 = 2+1/x
多次使用 simple ,直到结果与前一次相同,以达到
最简单的表示形式。
6、horner
horner(P) 将多项式 P 改写为horner形式(这种形式可以快
速计算多项式的值)
syms x;
f = x^4+2*x^3+4*x^2+x+1;
g = horner(f)
g=
1+(1+(4+(x+2)*x)*x)*x
7、numden
[N,D] = numden(f)
返回值: N 为 f 的分子,D 为 f 的分母
syms x y;
f = x/y + y/x;
[N,D] = numden(f)
N=
D=
x^2+y^2
y*x
四、求解符号方程
• 1、线性方程组的符号解
• 2、符号方程(组)求解
• 3、常微分方程(组)的求解
1、线性方程组的符号解
x y z a
3 x y 6 z 7
y 3z 4
clc;
clear all;
A = sym('[1,1,1;3,-1,6;0,1,3]')
b = sym('[a;7;4]')
s = A\b
s=
-14/15+3/5*a
-3/5+3/5*a
23/15-1/5*a
2、符号方程(组)求解
求方程指定变量var的解
s = solve(eq,var)
s = solve(eq)
求方程默认自变量的解
eq 是用字符串表示的方程,或符号表达式。
如何求方程 ax bx c d 的解?
2
(1)用 字符串 创建方程
eq1 = 'a*x^2+b*x+c=d'
sx = solve(eq1)
sa = solve(eq1,'a')
eq1 = 'a*x^2+b*x+c-d'
sx = solve(eq1)
sa = solve(eq1,'a')
若方程 eq 中不含等号,则表示解方程 eq = 0
sx =
-1/2*(b-(b^2-4*a*c+4*a*d)^(1/2))/a
-1/2*(b+(b^2-4*a*c+4*a*d)^(1/2))/a
sa =
-(b*x+c-d)/x^2
sx是2行1列
的符号数组
以a为方程的变量求出的解
(2)用符号表达式创建方程
syms a b c d x
eq1 = a*x^2+b*x+c-d;
sx = solve(eq1)
sa = solve(eq1,a)
符号表达式不能写成:
eq = a*x^2+b*x+c=d
解方程
x 3x 1 0
3
syms x;
f = x^3-3*x+1;
s = solve(f,x)
s = solve('x^3-3*x+1','x')
s = solve('x^3-3*x+1=0','x')
上面的三种方法都可以求得方程的解。
solve 也可以解方程组
s = solve( f1 , f2 , ... , fn , v1 , v2 , ... , vn)
求解由 f1 , f2 , ... , fn 确定的方程组关于 v1 , v2 , ... , vn 的解
若不提供v1 , v2 , ... , vN ,Matlab会自动确定默认变量。
返回值 s 是一个架构数组,如果要显示(引用)每个解,
使用 s.v1,s.v2
x y z 1
解方程组: x z 2
x3 y 2
eq1 = 'x + y - z = 1'
eq2 = 'x + z = 2'
eq3 = 'x^3 + y = 2'
s = solve(eq1,eq2,eq3)
x = s.x
y = s.y
z = s.z
s=
x: [3x1 sym]
y: [3x1 sym]
z: [3x1 sym]
x=
y=
z=
1
1
1
1/2*5^(1/2)-1/2
-5^(1/2)+4
-1/2*5^(1/2)+5/2
-1/2*5^(1/2)-1/2
5^(1/2)+4
1/2*5^(1/2)+5/2
x(1),y(1),z(1)是方程组的第 1 组解
x(2),y(2),z(2)是方程组的第 2 组解
x(3),y(3),z(3)是方程组的第 3 组解
uy 2 vz w 0 y ?
z ?
y z w 0
clc;
clear all;
syms u v w y z
eq1 = u*y^2 + v*z + w;
eq2 = y + z + w;
s = solve(eq1,eq2,y,z)
求范德瓦尔斯气体的三个临界参量
2P
a
P
P 2 V b RT ,
0, 2 0
V
V T
V T
Pc , Vc , Tc ?
clc;
clear all;
syms a b R T V
P = R*T/(V-b) - a/V^2
PV = diff(P,V)
PV2 = diff(PV,V)
S = solve(PV,PV2,V,T)
Vc = S.V
Tc = S.T
Pc = subs(P,{V,T},{S.V,S.T})
clc;
clear all;
F = '(P+a/V^2)*(V-b)-R*T'
FV = diff(F,'V');
FV2 = diff(FV,'V');
S = solve(F,FV,FV2,'P','T','V');
Pc = S.P
Vc = S.V
Tc = S.T
先定义隐函数,然后对隐函数求偏导数,
再解方程组,也可得到正确的结果,但要
注意:FV 并不等于左边的PV,
FV2 也不等于左边的PV2。
标准解法
为什么结果相同呢?问题的关键
在于题中的两个边界条件都为0,具体请参
见下一张ppt中的说明。
设函数F x, y, z 在点P x0 , y0 , z0 的某一邻域内有连续的偏导数,且F x0 , y0 , z0 0, Fz x0 , y0 , z0 0,
则方程F x, y, z =0在点P x0 , y0 , z0 的某一邻域内恒能确定一个单值连续且具有连续偏导数的函数
Fy
Fx z
z
z f x, y , 它满足条件z0 f x0 , y0 ,并有: ,
x
Fz y
Fz
2 P
a
P
对于具体问题:
P 2 V b RT ,
0, 2 0
V
V
T
V T
a
定义隐函数: F V , T , P P 2 V b RT ,
V
F 对P的偏导数 FP V b 0,
对应显函数P P V , T
a 2ab
2a 6ab
P
,
注
意:
matlab
中
diff
F
,
'
V
'
F
4
V VV
2
3
3
V
V
V
V
FV
P
P
因为
=
所
以
=0 这个条件等价于 FV 0
FP
V T
V T
FP
P
F
F
F
V
VV
P
FV V FP 2 FV
2 P
FV
V
V
又
2
2
V
F
V
F
FP 2
T
P
P
F 对V 的偏导数 FV
2 P
所以 2 =0 这个条件等价于 FV V FP 2 FV =0,
V T
考虑到第一个条件,因此第二个条件等价于FV V 0
solve 在得不到解析解时,会给出数值解
解方程 x 2 2
x
s = solve('(x+2)^x = 2')
s=
.69829942170241042826920133106081
解方程 x cos x
s = solve('x = cos(x)')
s=
.73908513321516064165531208767387
y =
3、常微分方程(组)的求解
dsolve('eq1','eq2', ... ,'cond1','cond2', ... ,'v')
y 为输出,
eq1、eq2、...为微分方程,
cond1、cond2、...为初值条件,
v 为自变量。
只有很少一部分微分方程(组)能求出解析解。
大部分微分方程(组)只能利用数值方法求数值解。
dsolve 的使用
微分方程中用 D 表示对 自变量 的导数,如:
Dy
y'; D2y
y''; D3y
y'''
如果省略初值条件,则表示求通解;
如果省略自变量,则默认自变量为 t
dsolve('Dy=2*x','x');
dsolve('Dy=2*x');
dy/dx = 2x
dy/dt = 2x
例 :求微分方程
dy
x2
的通解。
2 xy xe
dx
eq1 = 'Dy+2*x*y=x*exp(-x^2)'
y = dsolve(eq1,'x')
例 :求微分方程 xy ' y e x 0 在初值条件 y(1) 2e
下的特解。
eq1 = 'x*Dy+y-exp(x)=0'
cond1 = 'y(1)=2*exp(1)'
y = dsolve(eq1,cond1,'x')
dx
t
5
x
y
e
x |t 0 1
dt
例:求微分方程组
在初值条件
y |t 0 0
dy
x 3y 0
dt
下的特解。
Eq1 = 'Dx+5*x+y=exp(t)'
Eq2 = 'Dy-x-3*y=0'
Cond1 = 'x(0)=1'
Cond2 = 'y(0)=0'
S = dsolve(Eq1,Eq2,Cond1,Cond2,'t')
S.x
%查看解函数 x(t)
S.Y
%查看解函数 y(t)
五、绘制符号函数的图形
•
•
•
•
•
•
1、fplot命令
2、ezplot命令
3、ezpolar命令
4、ezplot3命令
5、ezmesh命令
6、ezsurf命令
1、fplot
fplot(fun,limits) 绘制函数y=fun(x)的图形
limits可以是[xmin,xmax]形式
或[xmin,xmax,ymin,ymax]形式
sin x
y
, 20 x 20
x
fplot('sin(x)/x',[-20,20])
2、ezplot
ezplot(f,[a,b])
绘制 f f(x) 在区间 a x b 上的图形
ezplot(f)
绘制 f f(x) 在区间 2 x 2 上的图形
ezplot(f(x,y),[a,b,c,d]) f ( x, y) 在 a x b , c y d 上的图形
ezplot(f(x,y))
f ( x, y) 在 2 x,y 2 上的图形
ezplot(f,g,[a,b])
x f (t ), y g (t ) 在区间 a t b 上的图形
ezplot(f,g)
x f (t ), y g (t ) 在区间 0 t 2 上的图形
x y 1
2
2
ezplot('x^2 - y^2 = 1')
3、ezpolar
在极坐标系中绘制符号函数的图形
f
ezpolar(f)
在 [0, 2pi] 区间绘制 f 的图形
ezpolar(f,[a,b]) 在 [a, b] 区间绘制 f 的图形
1
1 3
例:
2 sin 7t cos 30t ,t ,
8
2
2 2
1
100 t
2
100
f = '100/(100+(t-1/2*pi)^8)*(2-sin(7*t)-1/2*cos(30*t))‘
ezpolar(f,[-pi/2,3*pi/2])
4、ezplot3
绘制空间曲线
x = x(t), y = y(t), z = z(t)
t 0, 2
ezplot3(x,y,z)
ezplot3(x,y,z,[tmin,tmax])
x = 't*cos(t)'
y = 't*sin(t)'
z = 't'
ezplot3(x,y,z,[0,10*pi])
5、ezmesh
绘制符号函数的三维网格图
(1)曲面由显函数f = f(x,y)确定
ezmesh(f)
x, y 2 , 2
ezmesh(f,[xmin,xmax,ymin,ymax])
ezmesh(f,[a,b]) x, y a, b
ezmesh('x*exp(-x^2-y^2)')
(2)曲面由参数方程x=x(s,t),y=y(s,t),z=z(s,t)确定
ezmesh(x,y,z) s, t 2 ,2
ezmesh(x,y,z,[smin,smax,tmin,tmax])
ezmesh(x,y,z,[a,b]) s, t a, b
x = 's-sin(s)*cos(t)'
y = '(1-cos(s))*sin(t)'
z = 's'
ezmesh(x,y,z,pi*[-2,2])
6、ezsurf
绘制符号函数的彩色曲面图
(1)曲面由显函数 f = f(x,y) 确定
ezsurf(f) x, y 2 , 2
ezsurf(f,[xmin,xmax,ymin,ymax])
ezsurf(f,[a,b]) x, y a, b
ezsurf('x*(y^2)/(x^2+y^4)')
(2)曲面由参数方程 x = x(s,t), y = y(s,t), z = z(s,t)确定
ezsurf(x,y,z) s, t 2 ,2
ezsurfh(x,y,z,[smin,smax,tmin,tmax])
ezsurf(x,y,z,[a,b]) s, t a, b
x = 'cos(s)*cos(t)'
y = 'cos(s)*sin(t)'
z = 'sin(s)'
ezsurf(x,y,z,[0,pi/2,0,3*pi/2])