取h=0.2,用四阶经典的龙格一库塔方法求解下列初值问题;

取h=0.2,用四阶经典的龙格一库塔方法求解下列初值问题;,第1张

数值求解,通俗来讲就是对一个难以得到解析解的方程,通过数学上的一些定理,在离散的点上得到具体的数值。结果必须是具体的数字,同时需要一定的边界条件。

以dy/dx=y-2x/y,其中初始条件y(0)=1为例,通过MATLAB编程实现四阶龙格-库塔算法,并将结果与改进的欧拉算法进行对比。

这种算法保持了四阶龙格-库塔法精度高的优点,而且数值积分程序计算量小,仿真速度较之一般实时四阶龙格-库塔法可提高约3 5位。

扩展资料:

注意事项:

有更为有效的积分法,其局部误差是二阶或更高阶,如二阶龙格库塔法,只需要把x∧(t+dt):=x∧(t)+fx∧(t),u(t)·dt替换。

注意在该表达式中,x∧Et+23dt可以理解为用欧拉法在时间t+23dt进行积分得到的值。方括号内是f(x(t),u(t))的估计值和fx∧t+23dt, ut+23dt的估计值的平均值。其局部误差et是二阶的,因此该积分法具有更好的精度。

参考资料来源:百度百科-龙格库塔法

出现如此图形不一致的错误,其主要原因是:题主想表达的函数不一致而造成的。在自定义的shier1(t,x)函数中错误地把t用x(1)来表示,而把x1和x2用x(2)来表示,这造成该函数与题主先前用句柄函数定义的函数风马不接,所以后面自定义的函数应该这样来写,即

function dy=shier1(t,x)

r=1;d=05;a=01;b=002;

dy=[t(r-ax(1));x(2)(bt-d)];

修改后运行后,可以得到一致的图形。

对系数的抽象化理解简单;计算快,不需作迭代,适用于非刚性问题的数值计算。

如果系数满足条件,即表格主对角线及其右上角的元素全为0时,称相应的方法为显式的龙格库塔法,否则称为隐式龙格库塔法;龙格库塔法是用数值积分公式推导的单步法的一种自然推广,只是将系数作了进一步的抽象化罢了;历史上,大数学家欧拉构造显欧拉法的想法其实非常简单,就是用分片的直线段来逼近真解。

为什么MATLAB的ode45函数和我按照BK4(龙格库塔法)解出来的结果不一样?其根本的原因是时间区间取了太大而造成,因为该微分方程超过0,16后,ode45法和BK4法得到的图像就失稳。由于ode45法和BK4法虽然都是龙格库塔法的思想,但ode45法是采用变步长进行计算,而BK4法是采用定步长进行计算,所以随着时间区间范围越来越大,其就不完全一样了。

下图为时间区间0,16时的图像。

function x=sr(a,b,h,x1)

x=zeros(1,length(x1));

% for i=1:length(x1)-1

% k1=h(ax(i)-bx(i)^3+x1(i));

% k2=h(a(x(i)+k1/2)-b(x(i)+k1/2)^3+x1(i));

% k3=h(a(x(i)+k2/2)-b(x(i)+k1(sqrt(2)-1)/2+k2(2-sqrt(2))/2)^3+x1(i+1));

% k4=h(a(x(i)+k3)-b(x(i)-k2sqrt(2)/2+k3(2+sqrt(2))/2)^3+x1(i+1));

% x(i+1)=x(i)+(1/6)(k1+(2-sqrt(2))k2+(2+sqrt(2))k3+k4);

% end

for i=1:length(x1)-1

k1=h(ax(i)-bx(i)^3+x1(i));

k2=h(a(x(i)+k1/2)-b(x(i)+k1/2)^3+x1(i));

k3=h(a(x(i)+k2/2)-b(x(i)+k2/2)^3+x1(i+1));

k4=h(a(x(i)+k3)-b(x(i)+k3)^3+x1(i+1));

x(i+1)=x(i)+(1/6)(k1+2k2+2k3+k4);

end

function [x,y]=runge_kutta(ufunc,y0,h,a,b)

n=floor(b-a)/h;

x(1)=a;

y(:,1)=y0;

for i=1:n

x(i+1)=x(i)+h;

k1=ufunc(x(i),y(:,i));

k2=ufunc(x(i)+h/2,y(:,i)+hk1/2);

k3=ufunc(x(i)+h/2,y(:,i)+hk2/2);

k4=ufunc(x(i)+h,y(:,i)+hk2);

y(:,i+1)=y(:,i)+h(k1+2k2+2k3+k4)/6;

end

令y1=y';y2=y''=(y1)';得到了二阶微分方程的一阶形式,然后可以按照普通的一节微分方程组的四阶龙格库塔法求解了;这样说的有点抽象,你可以把方程复制出来

我有空帮你编写一下

以上就是关于取h=0.2,用四阶经典的龙格一库塔方法求解下列初值问题;全部的内容,包括:取h=0.2,用四阶经典的龙格一库塔方法求解下列初值问题;、用龙格库塔法求解微分方程时,函数ode45中的函数参数表达方式不一样画出的图也不一样、二阶龙格库塔公式的优点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/3751756.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存