二阶龙格库塔法迭代公式用Matlab怎么编程

二阶龙格库塔法迭代公式用Matlab怎么编程,第1张

四阶龙格库塔法精度为4,属于单步递推法,单步递推法的基本思想是从(x(i),y(i))点出发,以某一斜率沿直线达到(x(i+1),y(i+1))点,从上述定义可以看出,龙格库塔实质上是求一阶微分方程,对其进行排列后就可以进入Matlab进行编程。

但是如果将一阶导看作变量,则二阶导也不过是这个变量的一阶导而已,对于下述二阶方程:基本思想如下令位移为q的一阶导,即位移的一阶导(速度)为q的二阶导。

是用一个简单的迭代式来画分叉混沌图的,从这个例子里,不难学到如何如何画分叉图,其原理不难,两个循环来在2维平面作图,一个if筛选迭代的结果。

还是类似上面那个例子,这里给出不一样的代码实现方法。没看懂的可以再看一遍,里面主要的还是两个for循环,下面这个代码是用第三个for循环来实现对迭代结果的筛选的,这里不必纠结细节,功能实现用if或者for都可以。

依次类推,如果在区间[xi,xi+1]内多预估几个点上的斜率值K1、K2、……Km,并用他们的加权平均数作为平均斜率K*的近似值,显然能构造出具有很高精度的高阶计算公式。经数学推导、求解,可以得出四阶龙格-库塔公式,也就是在工程中应用广泛的经典龙格-库塔算法这样就完成了matlab的编程。

用matlab的四、五阶龙格库塔方法(ode45)可以求得其数值解。设定其微分方程组的初始条件X(0)=0,S(0)=0。解决方法:

1、常微分方程组的自定义函数odefun(t,y),其主要内容

dy(1)=3*y(2)/(60+y(2))*y(1)-0.16*y(1)

dy(2)=4*250-4*y(2)-5*y(2)/(60+y(2))*y(1)-0.06*y(1)

2、t、y1、y2的求解

[t,y]=ode45(@odefun,[0 10],y0)

3、计算结果及t与S、X的关系图,S与X的关系图

四阶龙格-库塔是求解常微分方程(常微分方程组)精度最高的一种数值方法。四阶龙格-库塔迭代公式为

根据四阶龙格-库塔迭代公式,可用matlab软件编写得到如下计算代码:

调用方法:

clcclose all

y0=1

h=0.1a=0b=1

[x,y] = runge_kutta(@func,y0,h,a,b)

disp('        x        y')

[x',y']

x=0:0.1:1

plot(x,y,':'),grid on

xlabel('x'),ylabel('y(x)/y’(x)')

title('函数图')

function f = func(x,y)

f=sqrt(x+y) 

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7799836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存