Matlab学习日志——进阶符号计算

涉及到用符号计算的方法求符号函数极限,导数,微分,积分,解代数方程(组),做积分变换,以及级数求和和求泰勒级数展开,全是一个函数指令就能搞定的,查查help就能完成,还是高数要学好最重要

(发麻麻凉的有点透透哦,开哥有个作伴的了

%%
%符号微积分
%求符号函数极限limit()
syms x y t;
f1=(cos(x)+sin(x)-x)/x
f2=sin(t)/t
f3=tan(y)
limit(f1,x,inf)
limit(f1,x,-inf)
limit(f2,t,0)
%也可求左右极限
limit(f3,y,pi/2,'left')
limit(f3,y,pi/2,'right')
%符号函数的求导,求微分diff()
clear
clc
syms x y t;
f1=x^4+2*x^3-(1/2)*x^2+6*x%符号表达式表示的多项式函数
g=[1 2 -1/2 6 0]%数值法表示的同一多项式
f2=sin(x^2)
f3=exp(t*sin(x))+log(y)%多元函数亦可用diff()对指定变量求,相当于求偏导
diff(f1,x,1)%1阶微分
polyder(g)
disp('\n');
diff(f2,x)
diff(f2,x,2)
diff(f3,t,1)
diff(f3,x,1)
diff(f3,y)
%注:传入参数也可是表达式构成的符号矩阵
diff([f1 f2],x,1)
%若是求全导数,则用jacobian(),即同时对几个自变量求导
w=[x^2+y^2;2*y+2*x]
jacobian(w,[x y])
%%
%求符号表达式函数的积分(限可以是函数)int()
clear
clc
syms x y t;
f1=x^4+2*x^3-(1/2)*x^2+6*x%符号表达式表示的多项式函数
g=[1 2 -1/2 6 0]%数值法表示的同一多项式
f2=x+x^-1
f3=x^2+y^2
%求不定积分
int(f1,x)
polyint(g)
int(f2,x)
int(f3,y)
disp('/n');
%求定积分
int(f1,x,1,2)
ff=@(x)x.^4+2*x.^3-(1/2)*x.^2+6.*x;
quad(ff,1,2)
int(f2,x,0,x+1)
int(f3,y,y/2,3*y)
%%
%符号表达式的级数求和symsum()
clear
clc
syms s n;
f=s^2;
g=n;
symsum(f,s,0,n)
symsum(g,n,1,100)
%%
%求符号表达式的泰勒级数taylor()
clear
clc
syms x y t;
f=sin(x)/(2+sin(x))
taylor(f,x,'Order', 8,'ExpansionPoint',0)%在x=0处对f做7阶泰勒展开
%taylor(f,t)
%%
%符号表示分段函数piecewise
syms x
y = piecewise(x<0, -1, x>0, 1)
subs(y,x,1)
%%
%符号积分变换
%傅里叶变换及其反变换fourier()ifourier()
clear
clc
syms t w;
f=cos(t)*sin(t);
a=fourier(f,t,w)
b=ifourier(a,w,t)
simplify(b)
% y1=f*exp(-1j*w*t)
% y2=(1/(2*pi))*a*exp(1j*w*t)
% aa=int(y1,t,-inf,inf)
% bb=int(y2,w,-inf,inf)
%拉普拉斯变换及其反变换laplace()ilaplace()
clear
clc
syms s t;
syms a aa positive ;
f=exp(2*t)+5*dirac(a-t)
a=laplace(f,t,s)
b=ilaplace(a,s,t)
% aa=int(f*exp(-s*t),t,0,inf)
%Z变换
clear;
clc;
syms n z;
f=n^2+n;
FZ=ztrans(f,n,z)
ff=iztrans(FZ,z,n)
subs(f,n,1)
subs(ff,n,1)
%%
%代数方程(组)求解solve()
%代数方程,即由多项式组成的方程
%solve只能求出部分超越方程的解析解
%当一元方程?(z)=0的左端函数?(z)不是z的多项式时,称之为超越方程。
%如指数方程、对数方程、三角方程、反三角方程等
clear;
clc;
syms a b c x;
f1=a*x^2+b*x+c;
s1=solve(f1,x)
s2=solve(f1,a)
f2=4*x^3+2*x^2+x+8;
s3=solve(f2,x)
double(s3)
r=roots([4 2 1 8]) 
%解代数方程组
clear;
clc;
syms x y;
f1=x^2+y^2;
f2=sym('x*y=12');
[sx xy]=solve(f1,f2,x,y)
%%
%解微分方程
%解常微分方程用dsolve()
%通过使用diff函数指定微分方程并表示微分方程
clear;
clc;
syms a b x y(t) t;%声明y是t的函数
f=diff(y,t)==a*t%a是系数,diff(y,t)是y对t的一阶导数
cond=y(0)== 0;
dsolve(f,cond)
ef=subs(ans,a,2)
%用ode系列函数解微分方程数值解
tspan = [0 5];
y0=0;
[t,y]= ode45(@(t,y) 2*t, tspan, y0);
%作图比较解析解和数值解
hold on;
ezplot(ef,[0,5]);
plot(t,y,'o')

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值