Matlab学习笔记--符号计算

这篇博客详细介绍了Matlab的符号计算功能,包括符号变量的创建、数值与符号计算的对比、各种符号表达式的运算,如合并、展开、因式分解等。还深入探讨了符号微积分,如极限、微分、积分、级数求和及展开。此外,文章还讲解了符号方程的求解,涵盖线性、代数、非线性和常微分方程的解法,并提到了泰勒展开式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

符号变量的创建

>> sysm q w e r;               %定义符号变量
>> q=w*e+r;
q = r + e*w

>>f1=sym('a+x^2+b*x+c')        %创建符号变量
f1 = x^2 + b*x + a + c

%'a+x^2+b*x+c'只能写在一行。可以使用pi、inf/INF、i/j、*、/、exp()等特殊变量和函数

数值计算与符号计算的对比

>> a=[1 2 3;4 5 6;7 8 9];b=[1;2;3];
>> c=a*b
c =
    14
    32
    50

>> syms x y;
>> z=x*y
z = x*y

>>f1=sym('a+x^2+b*x+c')     
f1 = x^2 + b*x + a + c

符号表达式的运算

>> f1=sym('1/(a+b)');
>> f2=sym('2*a/(a+b)');
>> f3=sym('(a+1)*(b+1)*(a-b)');
>> f1+f2                                    %符号加
ans = (2*a)/(a + b) + 1/(a + b)

>> f1-f2                                    %符号减
ans = 1/(a + b) - (2*a)/(a + b)

>> f1*f3                                    %符号乘
ans = ((a - b)*(a + 1)*(b + 1))/(a + b)

>> f1/f3                                    %符号除
ans = 1/((a + b)*(a - b)*(a + 1)*(b + 1))

>> f1^2                                     %符号幂
ans = 1/(a + b)^2

函数运算

合并、展开、因式分解、分数形式提取、化解

函数 具体说明
collect函数 将符号表达式中相同幂次的项进行合并
expand函数 将符号表达式展开
factor函数 对符号表达式进行因式分解
numden函数 将符号表达式转换为分子与分母形式
simplify函数 利用代数中的函数规则对符号表达式进行化解
>> f1=sym('(exp(x)+x)*(x+2)');
>> f2=sym('a^3-1');
>> f3=sym('1/a^4+2/a^3+3/a^2+4/a+5');
>> f4=sym('sin(x)^2+cos(x)^2');


>> collect(f1)                            %合并
ans =x^2 + (exp(x) + 2)*x + 2*exp(x)

>> expand(f1)                             %展开
ans =2*x + 2*exp(x) + x*exp(x) + x^2

>> factor(f2)                             %因式分解
ans =[ a - 1, a^2 + a + 1]

>> [m,n]=numden(f3)                       %分数形式提取
m =5*a^4 + 4*a^3 + 3*a^2 + 2*a + 1
n =a^4

>> simplify(f4)                           %化简
ans =1

%——————————————————————————————————————————————————————————————
%合并同类项,默认按x合并,也可以指定变量
>> f6=sym('a*x^2+b*x*y+c*y^2+d*y*x');
>> collect(f6) 
ans = a*x^2 + (b*y + d*y)*x + c*y^2

>> collect(f6,'y')
ans = c*y^2 + (b*x + d*x)*y + a*x^2

%因式分解后的因式会存放数组中
>> f7=sym('x^4-1');
>> factor(f7)
ans = [ x - 1, x + 1, x^2 + 1]

反函数

>> syms x y;
>> finverse(1/tan(x))
ans = atan(1/x)

>> f=x^2+y;
>> finverse(f,x)                %求反函数,自变量为x
ans = (x - y)^(1/2)

>> finverse(f,y)                %求反函数,自变量为y
ans = - x^2 + y

复合函数

函数 具体说明
compose(f,g) 求f=f(x)和g=g(x)的复合函数f(g(x));
compose(f,g,z) 求f=f(x)和g=g(x)的复合函数f(g(z));
>> syms x y z
>> f=1/(1+x^2);
>> g=sin(y);


>> compose(f,g)
 ans = 1/(sin(y)^2 + 1)

>> compose(f,g,z)
 ans = 1/(sin(z)^2 + 1)

表达式替换

subs(s,old,new):用符号或数值变量new替换s中的符号变量old

>> syms a b c;
>> y=a^2+b+c;

>> subs(y,'a','z')
ans = z^2 + b + c

>> subs(y,a,'z')                      %单个替换
ans = z^2 + b + c

>> subs(y,{
   
   'z','b'},{
   
   'z','sin(x)'})   %多重替换
ans = a^2 + c + sin(x)

%tips:变量old可以用'a'也可以直接用a,即使被替换成了'a'的形式,依然可以在下一次的调用中使用a,new变量就只能使用数值或者符号,所以只能使用'a'的形式

%——————————————————————————————————————————————————————————————

%表达式替换也可以用来求解函数值

>> syms x;
>> y=x^2+3*x+4;
>> subs(y,'x',2)

ans = 14

符号微积分

函数的极限

limitf)
limv0f(v)
limitf,a
limvaf(v)
limitf,x,a
limxaf(x)
limitf,x,a,right
limxa+f(x)
limitf,x,a,left
limxaf(x)

limx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值