例:
syms a b c x
S=a*x^2+b*x+c
solve(S)
求解表达式等于0的根
或再输入一个参数指定未知数b=solve(S,b)
1) AX=B的解X=A\B或X=inv(A)B
2)XA=B的解X=B/A或X=Binv(A)
r=dsolve(‘eq1,eq2,…’,‘cond1,cond2,…’,‘v’)
微分方程或微分方程组/初始条件或边界条件/独立变量
表示方式:
%1
syms y(x);
dsolve(diff(y,2)==x*y)
%2
dsolve('D2y=x*y','x')
%3
dsolve('D2y==x*y','x')
%添加各种已知条件的方法
%加入初始条件或边界条件
syms a b y(t)
dsolve(diff(y) == a*y, y(0) == b)
syms a y(t)
Dy = diff(y);
dsolve(diff(y, 2) == -a^2*y, y(0) == 1, Dy(pi/a) == 0)
syms a y(t)
dsolve(diff(y) == a/sqrt(y) + y, y(a) == 1)
%求解方程组
syms x(t) y(t)
z = dsolve(diff(x) == y, diff(y) == -x)
z.x
z.y
[t,y]=solver(‘fun’,tspan,options)
[自变量,函数值]=solver(‘待解方程的m文件名’,自变量取值区域,函数初始值)
对于难以找到精确解的方程求解数值解
solver:数值计算方法
%采用dsolve求通解,带入x计算y
y=dsolve('Dy=-2*y+2*x^2+2*x','y(0)=1','x')
x=0:0.01:0.5;
yy=subs(y,x);%代入x求解y%用ode15直接计算数值解
fun=inline('-2*y+2*x^2+2*x');
[x,y]=ode15s(fun,[0:0.01:0.5],1);%带入原y表达式计算的结果
ys=x.*x+exp(-2*x);
plot(x,y,'r',x,ys,'b')%三者重合
MATLAB求解高阶微分方程,需等价地变成一阶微分方程
%%建立m文件描述方程组
function dy=vdp1000(t,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=1000*(1-y(1)^2)*y(2)-y(1);%%求解具体数值
[T,Y]=ode15s('vdp1000',[0 3000],[2 0]);
plot(T,Y(:,1),'-')
参考:参考1