精讲多练Matlab3
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
expand(s) %对s展开 collect(s,x) %对s按变量x合并同
类项(无同类项) factor(ans) % 对ans分解因式
(3)表达式化简
MATLAB提供的对符号表达式化简的函数有:
simplify(S) 应用函数规则对S进行化简。
simple(S) 调用MATLAB的其他函数对表达式 进行综合化简,并显示化简过程。
det(A) det(B)
%计算符号矩阵A的行列式 %计算数值矩阵B的行列式
例3.2 计算二次方程f=ax^2+bx+c的积分、微分。 >>syms a b c x >>f=sym('a*x^2+b*x+c') >>df=diff(f) >>nf=int(f)
表3-1默认自变量
• 默认原则:自变量为除了i和j之外并且在字 母位置上最接近x的小写字母;如果式子中 没有上述字母,则x会被视为默认的自变量。
(1)符号函数积分。在MATLAB命令窗口,输入命令:
syms x;
f=6+0.3*x;
m=int(f,0,10) (2)数值积分。 先建立一个函数文件fx.m:
function fx=fx(x)
fx=6+0.3*x; 再在MATLAB命令窗口,输入命令:
m=quad('fx',0,10,1e-6)
%求(4)。z对y的偏导数
f=x^2+y^2+z^2-a^2;
zx=-diff(f,x)/diff(f,z) %求(5)。按隐函数求导公式求z对x的偏导数
zy=-diff(f,y)/diff(f,z) %求(5)。按隐函数求导公式求z对y的偏导数
例3.12在曲线y=x3+3x-2上哪一点的切线与 直线y=4x-1平行。
3.1 符号变量和符号表达式 (Symbolic expression)
1. 建立符号变量和符号常数 (1)sym函数
sym函数用来建立单个符号量,例如, a=sym(‘a’)建立符号变量a,此后,用户可以在表 达式中使用变量a进行各种运算。 (2)syms函数 syms函数的一般调用格式为:
syms var1 var2 … varn 函数定义符号变量var1,var2,…,varn等。用这种 格式定义符号变量时不要在变量名上加字符分界符 ('),变量间用空格而不要用逗号分隔。
符号表达式 a*x^2+b*x+c 1/(4+cos(t)) 4*x/y 2*a+b 2*i+4*j
默认自变量 x t x b x
findsym (S,n)——符号表达式中变量的确定
MATLAB中的符号可以表示符号变量和符号常数。 findsym可以帮助用户查找一个符号表达式中 的的符号变量。该函数的调用格式为:
例3.17求空间曲线c从点(0,0,0)到点(3,3,2)的 长度。求曲线c的长度是曲线一型
命令如下:
syms t;
x=3*t;y=3*t^2;z=2*t^3;
f=diff([x,y,z],t)
%求x,y,z对参数t的导数
g=sqrt(f*f') %计算一型积分公式中的根式部分
l=int(g,t,0,1)
taylor(f2,6)
%求(2)。
例3.24将多项式表示成x+1的幂的多项式。 命令如下: x=sym('x'); p=1+3*x+5*x^2-2*x^3; f=taylor(p,x,-1,4)
例3.6符号表达式的四则运算示例。
在 MATLAB命令窗口,输入命令:
syms x y z;
f=2*x+x^2*x-5*x+x^3 %符号表达式的结果为最简形式
f=2*x/(5*x)
%符号表达式的结果为最简形式
f=(x+y)*(x-y)
%符号表达式的结果不是x^2-y^2,而是
(x+y)*(x-y)
精讲多练MATLAB
杨琦 西安交通大学计算机教学中心
2003-05-14
第3章 MATLAB的符号计算
3.1 符号变量和符号表达式(Symbolic expression) 3.2 微积分 3.3 方程求解 3.4 符号表示式的运算 3.5 数学式的化简 3.6 sym函数 3.7 求反函数和复合函数 3.8 表达式替换 3.9 任意精度计算 3.10 符号积分变换 3.11 Maple函数的使用
%求s1
s2=symsum((-1)^(n+1)/n,1,inf) 指定求和变量,缺省为n
%求s2。未
s3=symsum(n*x^n,n,1,inf) 的求和变量n不能省略。
%求s3。此处
s4=symsum(n^2,1,100) 限级数的和
%求s4。计算有
级数应用举例(3)
3.4.2 函数的泰勒级数 MATLAB中提供了将函数展开为幂级数的函数taylor,
simplify(F) simple(F)
利用代数上的函数规则对表达式F进 行化简
以尽可能的办法将F表示式再做简化, 目的是使表达式以最少的字表示出 来
2. 符号矩阵运算 transpose(S) 返回S矩阵的转置矩阵。 determ(S) 返回S矩阵的行列式值。 colspace(S) 返回S矩阵列空间的基。 [Q,D]=eigensys(S) Q返回S矩阵的特征向量,D返
命令如下:
x=sym('x');
y=x^3+3*x-2;
%定义曲线函数
f=diff(y);
%对曲线求导数
g=f-4;
solve(g)
%求方程f-4=0的根,
即求曲线何处的导数为4
3. 符号积分
1. 不定积分 在MATLAB中,求不定积分的函数是int,其调用格式
为: int(f,x) int函数求函数f对变量x的不定积分。参数x可以缺省,
int(f,x,a,b)
例3.14求定积分。
命令如下:
x=sym('x');t=sym('t');
int(abs(1-x),1,2)
%求定积分(1)
f=1/(1+x^2);
int(f,-inf,inf)
%求定积分(2)
int(4*t*x,x,2,sin(t))
%求定积分(3)
f=x^3/(x-1)^100;
syms a m x;
f=(x^(1/m)-a^(1/m))/(x-a);
limit(f,x,a)
%求极限(1)
f=(sin(a+x)-sin(a-x))/x;
limit(f)
%求极限(2)
limit(f,inf)
%求f函数在x→∞(包
括+∞和-∞)处的极限
limit(f,x,inf,'left')
%求极限(3)
f=(sqrt(x)-sqrt(a)-sqrt(x-a))/sqrt(x*xa*a);
limit(f,x,a,'right')
%求极限(4)
2. 微分
MATLAB中的求导的函数为: diff(f,x,n) diff函数求函数f对变量x的n阶导数。参数x的用法同
求极限函数limit,可以缺省,缺省值与limit相同, n的缺省值是1。
例3.1考察符号变量和数值变量的差别。
在 MATLAB命令窗口,输入命令:
a=sym('a');b=sym('b');c=sym('c');d=sym('d');
%定义4个符号变量
w=10;x=5;y=-8;z=11;
%定义4个数值变量
A=[a,b;c,d]
%建立符号矩阵A
B=[w,x;y,z]
%建立数值矩阵B
%计算曲线c的长度
4. 级数
可用于级数的函数有 symsum(s,v,a,b) 自变量v在[a,b]之间
取值时,对通项s求和 toylor(F,v,n) 求F对自变量v的泰勒级
数展开,至n阶小。
级数应用举例(1)
级数应用举例(2)
例3.22求级数之和。
命令如下:
n=sym('n');
s1=symsum(1/n^2,n,1,inf)
命令如下:
syms a b x y;
A=[2*a^2*b^3*x^24*a*b^4*x^3+10*a*b^6*x^4,3*x*y5*x^2;4,a^3-b^3];
factor(A)
%对A的每个元素分解因式
例3.8 计算表达式S的值。 命令如下:
syms x y;
s=(-7*x^2-8*y^2)*(x^2+3*y^2);
命令如下:
syms a b c;
U=[a,b,c];
A=[[1,1,1];U;U.^2]%建立范得蒙符号矩阵
det(A)
%计算A的行列式值
例3.5建立x,y的一般二元函数。 在MATLAB命令窗口,输入命令: syms x y; f=sym('f(x,y)');
3.5 数学式的化简
1. 符号表达式运算 (1)符号表达式的四则运算
(2)因式分解与展开
factor(S) 对S分解因式,S是符号表达 式或符号矩阵。
expand(S) 对S进行展开,S是符号表 达式或符号矩阵。
collect(S) 对S合并同类项,S是符号 表达式或符号矩阵。
collect(S,v) 对S按变量v合并同类项, S是符号表达式或符号矩阵。
例3.7 对符号矩阵A的每个元素分解因式。
findsym(S,n) 函数返回符号表达式S中的n个符号变量,若没有
指定n,则返回S中的全部符号变量。 在求函数的极限、导数和积分时,如果用户没有
明确指定自变量,MATLAB将按缺省原则确定 主变量并对其进行相应微积分运算。可用 findsym(S,1)查找系统的缺省变量,事实上, MATLAB按离字符'x'最近原则确定缺省变量。
I=int(f,2,3)
%用符号积分的方法求定积分(4)
double(I)
%将上述符号结果转换为数值
例3.15求椭球的体积。 命令如下: syms a b c z; f=pi*a*b*(c^2-z^2)/c^2; V=int(f,z,-c,c) V= 4/3*pi*a*b*c
例3.16轴的长度为10米,若该轴的线性密度计算公式是 f(x)=6+0.3x千克/米(其中x为距轴的端点距离),求 轴的质量。
其调用格式为:
taylor(f,v,n,a)
例3.23求函数在指定点的泰勒展开式。
命令如下:
x=sym('x');
f1=(1+x+x^2)/(1-x+x^2);
f2=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3);
taylor(f1,x,5) 择n=5
%求(1)。展开到x的4次幂时应选
diff(f2)/diff(f1)
%求(3)。按参数方程求导公式求y对x的导数
(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2))/(diff(f1))^3 %求(3)。求y 对x的二阶导数
f=x*exp(y)/y^2;
diff(f,x)
%求(4)。z对x的偏导数
diff(f,y)
缺省原则与diff函数相同。
例3.13求不定积分。
命令如下:
x=sym('x');
f=(3-x^2)^3;
int(f)
%^4);
int(f)
%求不定积分(2)
g=simple(ans) 函数对结果化简
%调用simple
2. 符号函数的定积分
定积分在实际工作中有广泛的应用。在MATLAB中,定 积分的计算使用函数:
2. 建立符号表达式
例3.3用两种方法建立符号表达式。
在MATLAB窗口,输入命令:
U=sym('3*x^2+5*y+2*x*y+6') syms x y; V=3*x^2+5*y+2*x*y+6 2*U-V+6
%定义符号表达式U %建立符号变量x、y %定义符号表达式V %求符号表达式的值
例3.4计算3阶范得蒙矩阵行列式的值。设A是 一个由符号变量a,b,c确定的范得蒙矩阵。
例3.9化简
命令如下:
syms x y;
s=(x^2+y^2)^2+(x^2-y^2)^2;
simple(s) 果
%MATLAB自动调用多种函数对s进行化简,并显示每步结
表3-4 符号化简函数
函数
功能
collect(F) 将表达式F中相同幂次的项合并
expand(F) 将表达式F展开
factor(F) 将表达式F因式分解
例3.11求函数的导数。
命令如下:
syms a b t x y z;
f=sqrt(1+exp(x));
diff(f)
%求(1)。未指定求导变量和阶数,按缺省规则处理
f=x*cos(x);
diff(f,x,2)
%求(2)。求f对x的二阶导数
diff(f,x,3)
%求(2)。求f对x的三阶导数
f1=a*cos(t);f2=b*sin(t);
回S矩阵的特征值。
3.2 微积分
1. 函数的极限 limit函数的调用格式为: limit(f,x,a) limit函数的另一种功能是求单边极限,其调用格式为: limit(f,x,a,'right') 或 limit(f,x,a,'left')
例3.10求极限。
在MATLAB命令窗口,输入命令:
类项(无同类项) factor(ans) % 对ans分解因式
(3)表达式化简
MATLAB提供的对符号表达式化简的函数有:
simplify(S) 应用函数规则对S进行化简。
simple(S) 调用MATLAB的其他函数对表达式 进行综合化简,并显示化简过程。
det(A) det(B)
%计算符号矩阵A的行列式 %计算数值矩阵B的行列式
例3.2 计算二次方程f=ax^2+bx+c的积分、微分。 >>syms a b c x >>f=sym('a*x^2+b*x+c') >>df=diff(f) >>nf=int(f)
表3-1默认自变量
• 默认原则:自变量为除了i和j之外并且在字 母位置上最接近x的小写字母;如果式子中 没有上述字母,则x会被视为默认的自变量。
(1)符号函数积分。在MATLAB命令窗口,输入命令:
syms x;
f=6+0.3*x;
m=int(f,0,10) (2)数值积分。 先建立一个函数文件fx.m:
function fx=fx(x)
fx=6+0.3*x; 再在MATLAB命令窗口,输入命令:
m=quad('fx',0,10,1e-6)
%求(4)。z对y的偏导数
f=x^2+y^2+z^2-a^2;
zx=-diff(f,x)/diff(f,z) %求(5)。按隐函数求导公式求z对x的偏导数
zy=-diff(f,y)/diff(f,z) %求(5)。按隐函数求导公式求z对y的偏导数
例3.12在曲线y=x3+3x-2上哪一点的切线与 直线y=4x-1平行。
3.1 符号变量和符号表达式 (Symbolic expression)
1. 建立符号变量和符号常数 (1)sym函数
sym函数用来建立单个符号量,例如, a=sym(‘a’)建立符号变量a,此后,用户可以在表 达式中使用变量a进行各种运算。 (2)syms函数 syms函数的一般调用格式为:
syms var1 var2 … varn 函数定义符号变量var1,var2,…,varn等。用这种 格式定义符号变量时不要在变量名上加字符分界符 ('),变量间用空格而不要用逗号分隔。
符号表达式 a*x^2+b*x+c 1/(4+cos(t)) 4*x/y 2*a+b 2*i+4*j
默认自变量 x t x b x
findsym (S,n)——符号表达式中变量的确定
MATLAB中的符号可以表示符号变量和符号常数。 findsym可以帮助用户查找一个符号表达式中 的的符号变量。该函数的调用格式为:
例3.17求空间曲线c从点(0,0,0)到点(3,3,2)的 长度。求曲线c的长度是曲线一型
命令如下:
syms t;
x=3*t;y=3*t^2;z=2*t^3;
f=diff([x,y,z],t)
%求x,y,z对参数t的导数
g=sqrt(f*f') %计算一型积分公式中的根式部分
l=int(g,t,0,1)
taylor(f2,6)
%求(2)。
例3.24将多项式表示成x+1的幂的多项式。 命令如下: x=sym('x'); p=1+3*x+5*x^2-2*x^3; f=taylor(p,x,-1,4)
例3.6符号表达式的四则运算示例。
在 MATLAB命令窗口,输入命令:
syms x y z;
f=2*x+x^2*x-5*x+x^3 %符号表达式的结果为最简形式
f=2*x/(5*x)
%符号表达式的结果为最简形式
f=(x+y)*(x-y)
%符号表达式的结果不是x^2-y^2,而是
(x+y)*(x-y)
精讲多练MATLAB
杨琦 西安交通大学计算机教学中心
2003-05-14
第3章 MATLAB的符号计算
3.1 符号变量和符号表达式(Symbolic expression) 3.2 微积分 3.3 方程求解 3.4 符号表示式的运算 3.5 数学式的化简 3.6 sym函数 3.7 求反函数和复合函数 3.8 表达式替换 3.9 任意精度计算 3.10 符号积分变换 3.11 Maple函数的使用
%求s1
s2=symsum((-1)^(n+1)/n,1,inf) 指定求和变量,缺省为n
%求s2。未
s3=symsum(n*x^n,n,1,inf) 的求和变量n不能省略。
%求s3。此处
s4=symsum(n^2,1,100) 限级数的和
%求s4。计算有
级数应用举例(3)
3.4.2 函数的泰勒级数 MATLAB中提供了将函数展开为幂级数的函数taylor,
simplify(F) simple(F)
利用代数上的函数规则对表达式F进 行化简
以尽可能的办法将F表示式再做简化, 目的是使表达式以最少的字表示出 来
2. 符号矩阵运算 transpose(S) 返回S矩阵的转置矩阵。 determ(S) 返回S矩阵的行列式值。 colspace(S) 返回S矩阵列空间的基。 [Q,D]=eigensys(S) Q返回S矩阵的特征向量,D返
命令如下:
x=sym('x');
y=x^3+3*x-2;
%定义曲线函数
f=diff(y);
%对曲线求导数
g=f-4;
solve(g)
%求方程f-4=0的根,
即求曲线何处的导数为4
3. 符号积分
1. 不定积分 在MATLAB中,求不定积分的函数是int,其调用格式
为: int(f,x) int函数求函数f对变量x的不定积分。参数x可以缺省,
int(f,x,a,b)
例3.14求定积分。
命令如下:
x=sym('x');t=sym('t');
int(abs(1-x),1,2)
%求定积分(1)
f=1/(1+x^2);
int(f,-inf,inf)
%求定积分(2)
int(4*t*x,x,2,sin(t))
%求定积分(3)
f=x^3/(x-1)^100;
syms a m x;
f=(x^(1/m)-a^(1/m))/(x-a);
limit(f,x,a)
%求极限(1)
f=(sin(a+x)-sin(a-x))/x;
limit(f)
%求极限(2)
limit(f,inf)
%求f函数在x→∞(包
括+∞和-∞)处的极限
limit(f,x,inf,'left')
%求极限(3)
f=(sqrt(x)-sqrt(a)-sqrt(x-a))/sqrt(x*xa*a);
limit(f,x,a,'right')
%求极限(4)
2. 微分
MATLAB中的求导的函数为: diff(f,x,n) diff函数求函数f对变量x的n阶导数。参数x的用法同
求极限函数limit,可以缺省,缺省值与limit相同, n的缺省值是1。
例3.1考察符号变量和数值变量的差别。
在 MATLAB命令窗口,输入命令:
a=sym('a');b=sym('b');c=sym('c');d=sym('d');
%定义4个符号变量
w=10;x=5;y=-8;z=11;
%定义4个数值变量
A=[a,b;c,d]
%建立符号矩阵A
B=[w,x;y,z]
%建立数值矩阵B
%计算曲线c的长度
4. 级数
可用于级数的函数有 symsum(s,v,a,b) 自变量v在[a,b]之间
取值时,对通项s求和 toylor(F,v,n) 求F对自变量v的泰勒级
数展开,至n阶小。
级数应用举例(1)
级数应用举例(2)
例3.22求级数之和。
命令如下:
n=sym('n');
s1=symsum(1/n^2,n,1,inf)
命令如下:
syms a b x y;
A=[2*a^2*b^3*x^24*a*b^4*x^3+10*a*b^6*x^4,3*x*y5*x^2;4,a^3-b^3];
factor(A)
%对A的每个元素分解因式
例3.8 计算表达式S的值。 命令如下:
syms x y;
s=(-7*x^2-8*y^2)*(x^2+3*y^2);
命令如下:
syms a b c;
U=[a,b,c];
A=[[1,1,1];U;U.^2]%建立范得蒙符号矩阵
det(A)
%计算A的行列式值
例3.5建立x,y的一般二元函数。 在MATLAB命令窗口,输入命令: syms x y; f=sym('f(x,y)');
3.5 数学式的化简
1. 符号表达式运算 (1)符号表达式的四则运算
(2)因式分解与展开
factor(S) 对S分解因式,S是符号表达 式或符号矩阵。
expand(S) 对S进行展开,S是符号表 达式或符号矩阵。
collect(S) 对S合并同类项,S是符号 表达式或符号矩阵。
collect(S,v) 对S按变量v合并同类项, S是符号表达式或符号矩阵。
例3.7 对符号矩阵A的每个元素分解因式。
findsym(S,n) 函数返回符号表达式S中的n个符号变量,若没有
指定n,则返回S中的全部符号变量。 在求函数的极限、导数和积分时,如果用户没有
明确指定自变量,MATLAB将按缺省原则确定 主变量并对其进行相应微积分运算。可用 findsym(S,1)查找系统的缺省变量,事实上, MATLAB按离字符'x'最近原则确定缺省变量。
I=int(f,2,3)
%用符号积分的方法求定积分(4)
double(I)
%将上述符号结果转换为数值
例3.15求椭球的体积。 命令如下: syms a b c z; f=pi*a*b*(c^2-z^2)/c^2; V=int(f,z,-c,c) V= 4/3*pi*a*b*c
例3.16轴的长度为10米,若该轴的线性密度计算公式是 f(x)=6+0.3x千克/米(其中x为距轴的端点距离),求 轴的质量。
其调用格式为:
taylor(f,v,n,a)
例3.23求函数在指定点的泰勒展开式。
命令如下:
x=sym('x');
f1=(1+x+x^2)/(1-x+x^2);
f2=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3);
taylor(f1,x,5) 择n=5
%求(1)。展开到x的4次幂时应选
diff(f2)/diff(f1)
%求(3)。按参数方程求导公式求y对x的导数
(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2))/(diff(f1))^3 %求(3)。求y 对x的二阶导数
f=x*exp(y)/y^2;
diff(f,x)
%求(4)。z对x的偏导数
diff(f,y)
缺省原则与diff函数相同。
例3.13求不定积分。
命令如下:
x=sym('x');
f=(3-x^2)^3;
int(f)
%^4);
int(f)
%求不定积分(2)
g=simple(ans) 函数对结果化简
%调用simple
2. 符号函数的定积分
定积分在实际工作中有广泛的应用。在MATLAB中,定 积分的计算使用函数:
2. 建立符号表达式
例3.3用两种方法建立符号表达式。
在MATLAB窗口,输入命令:
U=sym('3*x^2+5*y+2*x*y+6') syms x y; V=3*x^2+5*y+2*x*y+6 2*U-V+6
%定义符号表达式U %建立符号变量x、y %定义符号表达式V %求符号表达式的值
例3.4计算3阶范得蒙矩阵行列式的值。设A是 一个由符号变量a,b,c确定的范得蒙矩阵。
例3.9化简
命令如下:
syms x y;
s=(x^2+y^2)^2+(x^2-y^2)^2;
simple(s) 果
%MATLAB自动调用多种函数对s进行化简,并显示每步结
表3-4 符号化简函数
函数
功能
collect(F) 将表达式F中相同幂次的项合并
expand(F) 将表达式F展开
factor(F) 将表达式F因式分解
例3.11求函数的导数。
命令如下:
syms a b t x y z;
f=sqrt(1+exp(x));
diff(f)
%求(1)。未指定求导变量和阶数,按缺省规则处理
f=x*cos(x);
diff(f,x,2)
%求(2)。求f对x的二阶导数
diff(f,x,3)
%求(2)。求f对x的三阶导数
f1=a*cos(t);f2=b*sin(t);
回S矩阵的特征值。
3.2 微积分
1. 函数的极限 limit函数的调用格式为: limit(f,x,a) limit函数的另一种功能是求单边极限,其调用格式为: limit(f,x,a,'right') 或 limit(f,x,a,'left')
例3.10求极限。
在MATLAB命令窗口,输入命令: