MATLAB符号计算(收藏版)

posted in: 办公技巧 | 0

符号求导存在的主要缺点_word求导符号_求和符号求导

欢迎关注工科男的Maltab学习日志,采用Mardown文本编辑器编写文章,全新排版升级,内容、代码更简洁,同时开通了视频号,工科男的日常gōng kē nán de rì cháng欢迎大家关注。——工科男

word求导符号_符号求导存在的主要缺点_求和符号求导

MATLAB符号计算

2 符号导数及其应用

3 符号积分

4 级数符号求和

5 代数方程的符号求解

6 常微分方程(组)符号求解

往期精彩阅读

1 符号计算基础

1.1符号运算

特点

1.2 符号对象

例1 考察符号变量和数值变量的差别

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
 det(A)                                  
 %计算符号矩阵A的行列式
 det(B)                                  
 %计算数值矩阵B的行列式
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
det(A)                                  
%计算符号矩阵A的行列式
det(B)                                  
%计算数值矩阵B的行列式

例2 比较符号常数与数值在代数运算时的差别

pi1=sym('pi');
k1=sym('8');
k2=sym('2');
k3=sym('3');    
% 定义符号变量
pi2=pi
r1=8
r2=2
r3=3;                         
% 定义数值变量
sin(pi1/3)                                    
% 计算符号表达式值  
sin(pi2/3)                                     
% 计算数值表达式值
sqrt(k1)                                        
% 计算符号表达式值
sqrt(r1)                                       
% 计算数值表达式值
sqrt(k3+sqrt(k2))                         
% 计算符号表达式值
sqrt(r3+sqrt(r2))                         
% 计算数值表达式值

例3 利用3种方法建立符号表达式

U=sym('3*x^2+5*y+2*x*y+6'
%定义符号表达式U
syms x y;                                       
%建立符号变量x、y
V=3*x^2+5*y+2*x*y+6             
%定义符号表达式V
2*U-V+6                                       
%求符号表达式的值
W='3*x^2+5*y+2*x*y+6'           
%定义符号表达式W

例4 建立x, y的一般二元函数

f = sym('f(x,y)');   
f = ‘f(x,y)’;

例5 符号表达式的四则运算示例

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)

factor(S) 对S分解因式,S是符号表达式或符号矩阵;

expand(S) 对S进行展开,S是符号表达式或符号矩阵;

collect(S) 对S合并同类项,S是符号表达式或符号矩阵;

collect(S, v) 对S按变量v合并同类项,S是符号表达式或符号矩阵。

例6 对符号矩阵A的每个元素分解因式

syms a b x y;
A=[2*a^2*b^3*x^2-4*a*b^4*x^3+10*a*b^6*x^4,3*x*y-5*x^2;4,a^3-b^3];
factor(A)              
%对A的每个元素分解因式

例7 计算表达式S的值

syms x y;
s=(-7*x^2-8*y^2)*(-x^2+3*y^2);
expand(s)      
%对s展开
collect(s,x)     
%对s按变量x合并同类项(无同类项)
factor(ans)     
% 对ans分解因式

例8 表达式化简举例

syms x y;
s=(x^2+y^2)^2+(x^2-y^2)^2;
simplify(s)
simple(s)      
%MATLAB自动调用多种函数对s进行化简,并显示每步结果

transpose(S) 返回S矩阵的转置矩阵

determ(S) 返回S矩阵的行列式值

colspace(S) 返回S矩阵列空间的基

[Q, D]=eigensys(S) Q返回S矩阵的特征向量,D返回S矩阵的特征值

1.3 符号表达式中变量的确定

findsym可以帮助用户查找一个符号表达式中的符号变量。该函数的调用格式为:

findsym(S,n)

函数返回符号表达式S中的n个符号变量,若没有指定n,则返回S中的全部符号变量在求函数的极限、导数和积分时,如果用户没有明确指定自变量,MATLAB将按缺省原则确定主变量并对其进行相应微积分运算。可用findsym(S,1)查找系统的缺省变量,事实上,MATLAB按离字符'x'最近原则确定缺省变量。

2 符号导数及其应用2.1函数的极限

limit函数的调用格式为:

limit(f,x,a)

limit函数的另一种功能是求单边极限,其调用格式为:

limit(f,x,a,'right') 或 limit(f,x,a,'left')

例9

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*x-a*a);
limit(f, x, a, 'right')                 
%求极限(4)

2.2 符号函数求导及其应用

求导函数为:

diff(f, x, n)

diff函数求函数f对变量x的n阶导数。参数x的用法同求极限函数limit,可以缺省,缺省值与limit相同,n的缺省值是1;

例10 求函数的导数

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);
diff(f2)/diff(f1)           
%求(3)。按参数方程求导公式求y对x的导数
f=x*exp(y)/y^2;
diff(f,x)                 
%求(4)。z对x的偏导数
diff(f,y)                 
%求(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的偏导数

例11 在曲线 上哪一点的切线与直线 平行。

x=sym('x');   
y=x^3+3*x-2;         
%定义曲线函数
f=diff(y);                
%对曲线求导数
g=f-4;
solve(g)                 
%求方程f-4=0的根,即求曲线何处的导数为4

3 符号积分

求不定积分和定积分的函数是int,其调用格式为

int(f) 求f对默认自变量的不定积分;

int(f, x) 求f对自变量t的不定积分;

int(f, a, b) 求f对默认自变量的定积分,积分区间为[a,b];

int(f, x, a, b) 求f对自变量x的定积分,积分区间为[a,b]

参数x可以缺省,缺省原则与diff函数相同

例12 求不定积分

x=sym('x');
f=(3-x^2)^3;
int(f)                       
%求不定积分(1)
f=sqrt(x^3+x^4);
int(f)                        
%求不定积分(2)
g=simple(ans)         
%调用simple函数对结果化简

例13 求定积分

x=sym(‘x’);
t=sym(‘t’); 
nt(abs(1-x),1,2
%求定积分
f=1/(1+x^2);  
int(f, -infinf)    
%求定积分
int(4*t*x,x,2,sin(t))                
%求定积分
f=x^3/(x-1)^100;
I=int(f, 23)          
%用符号积分的方法求定积分
double(I)               
%将上述符号结果转换为数值

例14 轴的长度为10米,若该轴的线性密度计算公式是 千克/米(其中x为距轴的端点距离),求轴的质量。

%(1)符号积分
syms x;  
f=6+0.3*x;   
m=int(f,0,10)

%(2)数值积分
%先建立一个函数文件fx.m:
function fx=fx(x)
fx=6+0.3*x;
%输入命令:
m=quad('fx',0,10,1e-6)

4 级数符号求和4.1 级数的符号求和

级数符号求和函数symsum,调用格式为:

symsum(a,n,n0,nn)

例15 求级数之和

n=sym('n');
s1=symsum(1/n^2,n,1,inf)        
s2=symsum((-1)^(n+1)/n,1,inf)
%未指定求和变量,缺省为n
s3=symsum(n*x^n,n,1,inf)   
%此处的求和变量n不能省略。
s4=symsum(n^2,1,100)              
%计算有限级数的和

4.2 函数的泰勒级数

函数taylor调用格式为:

taylor(f, v, n, a)

例16 求函数在指定点的泰勒展开式。

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)                
%展开到x的4次幂时应选择n=5
taylor(f2,6)        

5 代数方程的符号求解

线性代数方程组求解函数linsolve,其调用格式:

linsolve(A,b)

一般代数方程(组)求解函数是solve,其调用格式:

solve(f) —— 求一个方程的解

solve(f1,f2, …fn) —— 求n个方程的解

solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN')

例17 求线性方程组AX=b的解

%解方程组(1)的命令如下:
A=[34843343368]; 
b=[462];
X=linsolve(A,b)   

%调用linsolve函数求(1)的解
Ab          
%用另一种方法求(1)的解

%解方程组(2)的命令如下:
syms a11 a12 a13 a21 
syms a22 a23 a31 a32 
syms a33 b1 b2 b3;
A=[a11,a12,a13;a21,a22,a23;a31,a32,a33]; 
b=[b1;b2;b3];
X=linsolve(A,b)                
%调用linsolve函数求(2)的解

XX=Ab                              
%用左除运算求(2)的解

6 常微分方程(组)符号求解

常微分方程符号求解函数dsolve,其调用格式为:

dsolve('eqn1','condition','var')

求解微分方程eqn1在初值条件condition下的特解,若没有给出初值条件,求方程的通解

dsolve('eqn1','eqn2',…,'eqnN','condition1',…,'conditionN','var1',…,'varN')

求解微分方程组eqn1、…、eqnN在初值条件conditoion1、…、conditionN下的解,若没有给出初值条件,求方程组的通解

或 y的一阶导数——Dy

或 y的二阶导数——D2y

或 y的n阶导数——Dny

例18 求下列方程的解

y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')
ezplot(y) 
% 方程解y(t)的时间曲线图

符号求导存在的主要缺点_word求导符号_求和符号求导

方程解的时间曲线往期精彩阅读

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注