1、对于求数值解的微分方程,你可以用ode45()函数求解。如求下列微分方程
func。m %自定义微分方程的函数
function z = func(t,y)
z =[y(2)(1-y(1)^2)*y(2)-y(1)]
main。m %主程序
clear allclose allclc
y0 = [0.250]
h = 0.1
a = 0
b = 20
[t1 y1] = ode45(@func,y0,h,a,b)
2、对于求解析解的微分方程,你可以用dsolve()函数求解。如求微分方程x*y''+x﹡(y'宴脊行野改)^2-y'晌哗=0的解析解,可以下列步骤计算
>>syms y(x)
>>Dy = diff(y);D2y = diff(y, 2);
>>dsolve(x*D2y+x*(Dy)^2-Dy==0,'x')
给定的微分方程组,可以用matlab的ode()函数求解。求解方法:
1、根据方程,自定义微分方程组函数。
2、根据已经条件以及初始条件(因问题没有给出具体数值,本例自行设定),用ode45()函数命令求得其数值解。
3、用plot函数绘制X(t)—t、Y(t)—t、φ(t)—t的曲线图。
4、按照上述方法,山梁编程巧陪后运行可以得到如下图形。
数值解
5、代码
z0=[0.02,0.01,0.03,2,1,2]
t0=0tf=10
tspan=t0:0.1:tf
options = odeset('RelTol',1e-3,'AbsTol',1e-4)
[t,z]=ode45(@myfun,tspan,z0,options)
disp(' 逗宽运 t x(t) y(t) φ(t)')
A=[t z(:,1) z(:,2) z(:,3)]
disp(A)
figure(1)
plot(t,z(:,1),t,z(:,2),t,z(:,3),'-')
legend('x(t)','y(t)','φ(t)')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)