如何用Matlab求微分方程de符号解我要分享
2020-10-29 | MATLAB基础 | 766 人阅读
1.dsolve()函数
求解常微分方程的通解
在求通解问题
% syms y(x)
% y=dsolve(x^2+y+(x-2*y)*diff(y)==0)这里插入代码片
求解常微分方程的初边值问题
% syms y(x)% 定义符号变量
% dy=diff(y);%一阶导数
% d2y=diff(y,2);%二阶导数,用于初值或边值条件的赋值
% y=dsolve(diff(y,3)-diff(y,2)==x,y(1)==8,dy(1)==7,d2y(2)==4)
% y=simplify(y) %把计算结果化解
求解常微分方程组
% syms f(x) g(x)
% df=diff(f);%用于初值或边值条件的赋值
% [f1,g1]=dsolve(diff(f,2)+3*g==sin(x),diff(g)+diff(f)==cos(x))%求通解
% f1=simplify(f1),g1=simplify(g1)
%
% [f2,g2]=dsolve(diff(f,2)+3*g==sin(x),diff(g)+diff(f)==cos(x),df(2)==0,f(3)==3,g(5)==1)
% f2=simplify(f2),g2=simplify(g2)
求解线性常微分方程组
一阶齐次线性微分方程组
% syms x(t) y(t) z(t)
% X=[x;y;z]% 定义符号向量
% A=[2 1 3;0 2 -1;0 0 2];
% B=[1 2 1]';
% [x, y, z]=dsolve(diff(X)==A*X,X(0)==B)
非齐次线性方程组
syms x(t) y(t) z(t)
X=[x;y;z]% 定义符号向量
A=[1 0 0;2 1 -1;3 2 1];
B=[0;0;exp(t)*cos(2*t)];
x0=[0;1;1];%初值条件
X=dsolve(diff(X)==A*X+B,X(0)==x0)%求符号解
X=simplify([X.x;X.y;X.z])%显示解的各个分量
pretty(X) %分数线居中的显示方式