用matlab解决常微分问题的符号解法的关键命令是dslove命令。该命令中可以用D表示微分符号,其中D2表示二阶微分,D3表示三阶微分,以此类推。值得注意的是该微分默认是对自变量t求导,也可以很容易在命令中改为对其他变量求导。
说了半天,该命令的最完整的形式如下。
r=dsolve('eqn1','eqn2',...,'cond1','cond2',...,'var').
解释如下:eqni表示第i个微分方程,condi表示第i个初始条件,var表示微分方程中的自变量,默认为t。
解释了半天,不如用实例来说明。下面以解决一个简单的微分方程入手。方程如下。
matlab解常微分方程——符号解法
首先启动matlab软件,在命令行中欢快地敲入
dslove(‘Dy=3*x*x’,‘x’),然后轻松地摁一下键盘上的enter建,最后答案就蹦出来了。
matlab解常微分方程——符号解法
下面,我们来加大难度,在上面的方程条件下加入初始条件x=0时,y=2。
只需在相同的命令中加入一个条件巧培首语句就可以中悄了。命令形式为
dslove(孝数‘Dy=3*x*x’,‘y(0)=2’,‘x’)。可以看到答案中的常数项
C2已经变成了2。
matlab解常微分方程——符号解法
最后,我再加大一下难度。这次来求一个微分方程组。方程组如下。初始条件为x(0)=2,y(0)=1,dy(0)=1.
matlab解常微分方程——符号解法
在命令中只需改一下相应的方程与条件即可以了,由于是对t求导,所以可以用默认,不需要在末尾添加‘t’。
matlab解常微分方程——符号解法
9
可以看到用matlab中的dslove命令确实可以解决许多常微分问题。
用Matlab四阶州毁消龙格库册知塔法求常微分方程可以按照以下方法去实现。
1、首先建立自定义微分方程函数
function f = ode_fun(x,y)
f=y+2*x/y^2
end
2、然后余毕用四阶龙格库塔法求其数值解
figure(2)
y0=[1]%初值y(0)=1
h=0.1
a=0
b=5
[x,y] = runge_kutta(@(x,y)ode_fun(x,y),y0,h,a,b)
disp(' x y')
A=[x',y']
plot(x,y,'LineWidth',1.5),grid on
xlabel('x'),ylabel('y(x)')
3、绘制y-x的曲线图
这模纳者茄银次看旦薯看,程序通了。function hhh
[t,x]=ode45(@xprim2,[0,20],[3020])
plot(t,x)
xlabel('time t0=0,tt=20')
ylabel('x values x1(0)=30,x2(0)=20')
function xprim=xprim2(t,x)
xprim=[x(1)-0.1*x(1)*x(2)+0.01*t
-x(2)+0.02*x(1)*x(2)+0.04*t]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)