MATLAB符号数学计算

    符号计算 存放的是精确数据,耗存储空间 ,运行速度慢,但结果精度高;数值计算则是以一定精度来计算的,计算结果有误差,但是运行速度快。两者的区别是: 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。

一、符号对象和符号表达式

close all;clear all;clc;
%% 符号对象的创建
syms x y z;%符号变量
a=sym(2/3,'f');%符号常量
b=2*y^2+y-1;%符号表达式
c=[1 2+y 2;2+z 1 1+y];%符号矩阵
%% 运算符和函数
syms a b c d e f g h;
a2=[a b;c d];
b2=[e f;g h];
c2=a2*b2;%符号计算和数值计算几乎相同
%% 类别识别函数
syms x;
a3=class(x);%返回符号对象的类别
b3=isa(x,'sym');%返回1或者0
whos x;%列出变量的信息
%% 变量的确定
syms a b c;
a4=3*a+b-c;
symvar(a4);%查找表达式中所有符号变量
symvar(a4,2);%查找表达式中距离x最近的2个符号变量
%% 符号精度计算
syms x;
a5=2*x^2+3*x-4;
b5=solve(a5);
d5=vpa(b5,6);%求近似解,精度为6位

二、符号表达式的操作

close all;clear all;clc;
%% 符号表达式的显示
syms x;
a=x^2+2/x+1;
pretty(a);
%% 符号表达式的合并
syms x y;
a2=2*x+y+x*cos(y);
collect(a2);
%% 符号表达式的展开
syms x y;
a3=exp((x+y)^2);
expand(a3);
%% 符号表达式的嵌套
syms x y;
a4=[x^2+x;y^3-2*y];
horner(a4);
%% 符号表达式分解
syms x y;
a5=2*x^2-7*x*y-22*y^2-5*x+35*y-3;
factor(a5);
%% 符号表达式化简
syms x;
a6=(x^3-1)/(x-1);
simplify(a6);

三、符号表达式的替换

close all;clear all;clc;
%% 符号表达式的替换
syms x y;
a=x^2+x*y+y^2;
x=2;
subs(a);%用工作区中的变量替换符号表达式中的默认变量
subs(a,'t');%用新的变量替换符号表达式中的默认变量
subs(a,{'x','y'},{3,4});%用新的变量替换符号表达式中指定的变量

四、符号函数的操作

close all;clear all;clc;
%% 复合函数
syms x y;
a=x+x^-1;
b=sin(x);
c=1+y^2;
compose(a,b);%返回复合函数a(b(y))
compose(a,c,'x','t');%返回自变量为t的复合函数a(c(t))
%% 反函数
syms x y;
a2=1/(sin(x)+cos(x));
b2=x^2+2*x*y+y^2;
a22=finverse(a2);%返回a2的反函数
b22=finverse(b2,y);%返回自变量为y的b2的反函数,满足b22(b2(y))=y

五、符号微积分

close all;clear all;clc;
%% 符号微分
syms x y z;
a=exp(x*sin(y))+log(z);
diff(a,z);%对z求微分
diff(a,x,2);%对z求二阶微分
b=[x^2+y^2;y*z];
jacobian(b,[x y]);%b是列向量,[x y]是指定进行变换的行向量
%% 符号积分
syms x y;
a2=x*y+(x*y)^-1;
int(a2,y);%对y求不定积分
int(a2,y,1,2);%对y求定积分
%% 符号级数求和
syms x n;
a3=x^2;
b3=symsum(a3,x,0,n-1);%求x从0到n-1的有限和
%% 泰勒级数
syms x y;
a4=sin(x)+1/cos(y);
taylor(a4,x,'order',4)%n-1阶泰勒级数
taylor(a4,x,'ExpansionPoint',1,'order',4)%n-1阶泰勒级数在ExpansionPoint处展开

六、符号积分变换

%% 傅里叶变换及其逆变换
syms t w;
a=sin(t)*cos(t);
b=fourier(a,t,w);%傅里叶变换
c=ifourier(b,w,t);%傅里叶逆变换
simplify(c);
%% 拉普拉斯变换及其逆变换
syms s t;
syms a positive;
a2=exp(2*t)+5*dirac(a-t);
b2=laplace(a2,t,s);%拉普拉斯变换
ilaplace(b2,s,t);%拉普拉斯逆变换
%% Z变换及其逆变换
syms a b n w;
a3=sin(a*n)+cos(b*n);
b3=ztrans(a3);%Z变换
c3=ztrans(a3,a,w);%指定自变量,用w代替复频率z
iztrans(c3,w,n);%Z逆变换

七、符号代数方程和微分方程求解

close all;clear all;clc;
%% 符号代数方程求解
syms x a b c;
a1=a*x^2+b*x+c;
solve(a1);%解方程
solve(a1,a);%指定变量,解方程
syms x y;
a11='x^2+y^2=25';
b11='x*y==12';
[x,y]=solve(a11,b11);%联立方程式求解
syms x y a b;
a12='x^2+y^2==a^2';
b12='x*y==b';
s=solve(a12,b12,x,y);%指定多个自变量,解为矩阵结构
s.x;
%% 符号微分方程求解
syms x;
a2='a*Dx+b*x=0';
dsolve(a2);
dsolve(a2,'x(0)=1');
dsolve(a2,'x(0)=1','m');
syms x y;
a22='Dx-3*x+2*y=0';
b22='Dy-2*x+y=0';
[x,y]=dsolve(a22,b22);
[x,y]=dsolve(a22,b22,'x(0)=1','y(0)=1');

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~青萍之末~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值