ZKX's LAB

用C#编写一段代码,实现欧拉格式和龙格库塔格式。这里有一段C语言的代码,怎么改写成C#? 欧拉法和龙格库塔法对比

2020-07-21知识5

哪位大哥能帮我找到关于“龙格库塔方法”方面的文字说明啊?越详细越好。 龙格-库塔(Runge-Kutta)法到目前为止,我们已经学习了多步法,例如:亚当斯-巴什福思(AdamsBashorth)法,亚当斯-莫尔顿(Adams-Monlton)法,都是常微分方程的积分方法。它们需要在每一次迭代时重新计算一遍等式右边的结果(非线性隐含问题忽略计算多个 f(ω)值的可能性)龙格-库塔(Runge-Kutta)法是一种不同的处理,作为多级方法为人们所知。它要求对于一个简单的校正计算多个 f 的值。下面,我们列出了 3 种最流行的龙格-库塔(Runge-Kutta)法:改进的欧拉方法(精度:p=2):V a=V n+Δtf(V n,tn)2Δt)二阶格式V n+1=V n+Δtf(V a,tn+2Hevn’s 方法(p=2):这是另一种二阶格式:V a=V n+Δtf(V n,tn)V n=V n+1 Δt[f(V n,tn)+f(V a,tn+Δt)]2注意:f(Vn,tn)在运算中应该只被计算一次。四次龙格-库塔(Runge-Kutta)法(p=4):这是一个 4 阶格式。这次我们写的形式有点不同:a=Δtf(V n,tn)b=Δtf(V n+1 a,tn+12 2 Δt)c=Δtf(V n+1 b,tn+Δt)12 2d=Δtf(V n+c,tn+Δt)V n=V n+1 1(a+2b+2c+d)。6MATLAB中已知系统微分方程及初始值用欧拉法和龙格库塔法解一阶微分方程 function Euler欧拉法和龙格库塔算法解一阶常微分方程源代码例子dy/dx=-y+x+1f=inline('-y+x+1','x','y');微分方程的右边项dx=0.5;x方向步长xleft=0;区域的左边界xright=10;区域的右边界xx=xleft:dx:xright;一系列离散的点n=length(xx);点的个数y0=1;(1)欧拉法Euler=y0;for i=2:nEuler(i)=Euler(i-1)+dx*f(xx(i-1),Euler(i-1));end(2)龙格库塔法RK=y0;for i=2:nk1=f(xx(i-1),RK(i-1));k2=f(xx(i-1)+dx/2,RK(i-1)+k1*dx/2);k3=f(xx(i-1)+dx/2,RK(i-1)+k2*dx/2);k4=f(xx(i-1)+dx,RK(i-1)+k3*dx);RK(i)=RK(i-1)+dx*(k1+2*k2+2*k3+k4)/6;endEuler和Rk法结果比较plot(xx,Euler,xx,RK)hold on精确解用作图syms xrightsolve=dsolve('Dy=-y+x+1','y(0)=1','x');求出解析解rightdata=subs(rightsolve,xx);将xx代入解析解,得到解析解对应的数值plot(xx,rightdata,'r*')legend('Euler','Runge-Kutta','analytic')急求用MATLAB用龙格库塔和外推法解一阶微分方程 f=inline('-y+x+1','x','y');微分方程的右边项dx=0.05;x方向步长xleft=0;区域的左边界xright=10;区域的右边界xx=xleft:dx:xright;一系列离散的点n=length(xx);点的个数y0=1;(1)欧拉法Euler=y0;for i=2:nEuler(i)=Euler(i-1)+dx*f(xx(i-1),Euler(i-1));end(2)龙格库塔法RK=y0;for i=2:nk1=f(xx(i-1),RK(i-1));k2=f(xx(i-1)+dx/2,RK(i-1)+k1*dx/2);k3=f(xx(i-1)+dx/2,RK(i-1)+k2*dx/2);k4=f(xx(i-1)+dx,RK(i-1)+k3*dx);RK(i)=RK(i-1)+dx*(k1+2*k2+2*k3+k4)/6;endEuler和Rk法结果比较plot(xx,Euler,xx,RK)hold on精确解用作图syms xrightsolve=dsolve('Dy=-y+x+1','y(0)=1','x');求出解析解rightdata=subs(rightsolve,xx);将xx代入解析解,得到解析解对应的数值plot(xx,rightdata,'r*')legend('Euler','Runge-Kutta','analytic')http://zhidao.baidu.com/question/117345902.html?fr=qrl&cid=983&index=1&fr2=query分别用改进的欧拉法和四阶龙格-库塔公式求解微分方程初值问题 分别用改进的欧拉法和四阶龙格-库塔公式求解微分方程初值问题(1)Y'=Y-2X/Y,Y(0)=1,X=[0,1],H=0.1(2)Y'=X2+。用C#编写一段代码,实现欧拉格式和龙格库塔格式。这里有一段C语言的代码,怎么改写成C#? 直接粘过去就行了…只需要把2.0改成2或者(float)2.0就行了什么是欧拉方法(Euler's method)? ?www.zhihu.com 简单来说,隐式欧拉这里 是已知的,这里的 才是未知量,F是函数。我们需要求得当F=0时,y究竟应该是多少,也就是根是多少。怎么办呢?先猜一个数,然后。数值分析计算方法求解 欧拉法的局部截断误差的阶为O(h2);改进欧拉法的局部截断误差的阶为 O(h3);三阶龙格-库塔法的局部截断误差的阶为 O(h4).四阶龙格-库塔法的局部截断误差的阶为 O(h5).欧拉法的绝对稳定实区域为-2分别用欧拉法和四阶龙格-库塔法解微分方程 f=inline('x*y','x','y');微分方程的右边项 dx=0.05;x方向步长 xleft=0;区域的左边界 xright=3;区域的右边界 xx=xleft:dx:xright;一系列离散的点 n=length(xx);。Matlab/simulink中,什么叫Oder45和Ode23bt算法? ode45是基于四点法和五点法的解微分方程数值解的方法,ode23等也一样,都是基于已知点“预测”下一个点的函数值的方法,不同的算法“预测”的方法不一样。比较著名的“预测。

#龙格库塔法#微分方程#微积分#欧拉

随机阅读

qrcode
访问手机版