用MATLAB求高阶微分方程(组)数值解
使用MATLAB求解数值解时,高阶微分方程(组)必须转换成一阶微分方程组,需要做一个变量替换。
例题
求
(
1
+
x
2
)
y
"
=
2
x
y
‘
(1+x^2)y^"=2 x y^`
(1+x2)y"=2xy‘
的数值解,其中x属于[-2,2],初始值y(-2)=3,y^`(-2)=4
使用
y
1
=
y
y
2
=
y
1
‘
y_1=y\\ y_2=y^`_1
y1=yy2=y1‘
替换得到
y
1
‘
=
y
2
y
2
‘
=
2
x
(
1
+
x
2
)
y
2
y^`_1=y_2\\ y^`_2={2x\over(1+x^2)}y_2
y1‘=y2y2‘=(1+x2)2xy2
写成.m文件:
function dy = df3(x,y)
dy=zeros(2,1);%列向量
dy(1)=y(2);
dy(2)=(2*x)/(1+x*x)*y(2);
end
解方程组
[x,y]=ode45('df3',[-2,2],[3,4])
plot(x,y)
legend('y','y`')
一般可以先看是否有解析解,如果没有解析解则使用数值解。