matlab ode45 求方程(1+x^2)y''=2xy',y(0)=1,y'(0)=3 的数值解,我的运行不行,正确解答
利用dsolve()函数,可求得常微分方程的初值问题 (1+x^2)y''=2xy'的解析解。
实现代码
syms y(x),D2y=diff(y,2);Dy=diff(y,1);
disp('常微分方程的解析解')
y=dsolve((1+x^2)*D2y==2*x*Dy,y(0)==1,Dy(0)==3)
【1】解析解
>>y=dsolve('Dy=-2*t*y','y(0)=1')
y = exp(-t^2)
【2】数值解
function numeric
clear;clc;
[t,y]=ode45(@fun,[0 3],1)
plot(t,y,'*',t,exp(-t.^2))%*为数值解,线段为解析解
function yhat=fun(t,y)
yhat=-2*t*y
结果:
t =
0
0.0750
0.1500
0.2250
0.3000
0.3750
0.4500
0.5250
0.6000
0.6750
0.7500
0.8250
0.9000
0.9750
1.0500
1.1250
1.2000
1.2750
1.3500
1.4250
1.5000
1.5750
1.6500
1.7250
1.8000
1.8619
1.9237
1.9856
2.0475
2.0996
2.1517
2.2039
2.2560
2.3023
2.3487
2.3950
2.4414
2.4837
2.5261
2.5684
2.6107
2.6500
2.6893
2.7286
2.7679
2.8047
2.8415
2.8784
2.9152
2.9364
2.9576
2.9788
3.0000
y =
1.0000
0.9944
0.9777
0.9506
0.9139
0.8688
0.8167
0.7591
0.6977
0.6341
0.5698
0.5063
0.4449
0.3865
0.3320
0.2821
0.2369
0.1968
0.1616
0.1312
0.1054
0.0837
0.0656
0.0510
0.0392
0.0312
0.0247
0.0194
0.0151
0.0122
0.0098
0.0078
0.0062
0.0050
0.0040
0.0032
0.0026
0.0021
0.0017
0.0014
0.0011
0.0009
0.0007
0.0006
0.0005
0.0004
0.0003
0.0003
0.0002
0.0002
0.0002
0.0001
0.0001
你写的程序只有一处错误
ode45中要取函数句柄,
[x,y]=ode(@sdre,[0 10],[1 3]);
我已仿真成功。有问题再问我
.建立M文件vdp1001a.m如下:
function dy=vdp1001a(x,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=2*x*y(2)/(1+x^2);
2.取x0=0,xf=10,输入命令:
[X,Y]=ode45('vdp1001a',[0 10],[1 3]);
plot(X,Y(:,1),'-'
matlab ode45 求方程(1+x^2)y''=2xy',y(0)=1,y'(0)=3 的数值解,我的运行不行,正确解答视频
相关评论: