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

作者&投稿:乐郭 (若有异议请与网页底部的电邮联系)
用标准四阶龙格——库塔法求解初值问题~

没给步长,我取步长h=0.1

excel文件怎么发啊。

主程序
clc;clear
x0=0;y0=1;
h=0.1;
Nstep=floor(1/h);
[x2,y2]=Rung_Kutta(@myfun,x0,y0,h,Nstep);
plot(x2,y2)
xlabel('x')
ylabel('y')
box off
grid on
函数程序1
function y1=myfun(x,y)
%% a self-defined function
y1=sqrt(x+y);
end
函数程序2
function [x,y]=Rung_Kutta(fxy,x0,y0,h,Nstep)
%% Rung_Kutta法求解微分方程
% y'=fxy y(x0)=y0
% h: 步长 Nstep: 步数
x=zeros(Nstep+1,1);
y=x;
x(1)=x0;
y(1)=y0;
for i=1:Nstep
x(i+1)=x(i)+h;
k1=fxy(x(i),y(i));
k2=fxy(x(i)+h/2,y(i)+h/2*k1);
k3=fxy(x(i)+h/2,y(i)+h/2*k2);
k4=fxy(x(i)+h,y(i)+h*k3);
y(i+1)=y(i)+h/6*(k1+2*k2+2*k3+k4);
end
end
最后结果

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

以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是二阶的,因此该积分法具有更好的精度。

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








四阶龙格库塔法的JAVA编程
k3=function(x[i]+h\/2,y[i]+h*k2\/2);k4=function(x[i]+h,y[i]+h*k3);y[i+1]=y[i]+h*(k1+2*k2+2*k3+k4)\/6;} break;} } public static void main(String[] args) { \/\/例子求y'=y-2*x\/y(0<x<1);y0=1;System.out.println("用二阶龙格-库塔方法");Runge...

四阶行列式的计算公式
解法1:第一行第一个数乘以它的代数余子式加第一行第二个数乘负一乘它的代数余子式加上第一行第三个数乘代数余子式加上第一行第四个数乘负一乘它的代数余子式; 解法2:将四阶行列式化成上三角行列式,然后乘以对角线上的四个数就可以了。 追问: 请问代数余子式是什么?麻烦说详细点 回答...

一道物理题100分,在线分等
自由落体的公式是啥?用自由落体公式求出落地所需时间,然后用这个时间和到第四阶的最大数与最小数相计算。t=0.4*4\/10 t=0.16s 最大值=0.4*4\/0.16=10m\/s 最小值=0.4*3\/0.16=7.5m\/s 7.5<v<10

改进欧拉法公式
y(i+1) = y(i) + h * [(f(i) + f(i+1))\/2]其中,h为步长,f(i)和f(i+1)分别是i时刻和i+1时刻的导数,y(i)和y(i+1)分别是i时刻和i+1时刻的函数值。第二种方法是使用四阶龙格-库塔方法。四阶龙格-库塔方法是一种较为精确的数值求解微分方程的方法,它使用多个导数来估计...

四阶连续导数说明什么
意思是:f(x)可导,并且导函数是连续的。一个函数在某一点的导数描述了这个函数在这一点附近的变化率。导数的本质是通过极限的概念对函数进行局部的线性逼近。当函数f的自变量在一点x0上产生一个增量h时,函数输出值的增量与自变量增量h的比值在h趋于0时的极限如果存在,即为f在x0处的导数。

求编程达人帮忙用matlab编程用龙格库塔方法解微分方程
给一个程序,朋友试试看吧,呵呵!功能:用四阶Runge-Kutta 法求解常微分方程 --- function R=Rungkuta4(f, a, b, n, ya)f:微分方程右端函数句柄 a,b:自变量取值区间的两个端点 n:区间等分的个数 ya:函数初值y(a)R=[x',y']:自变量X 和解Y 所组成的矩阵 h=(b-a)\/n;x=zeros(,n...

四阶魔方公式
四阶魔方公式有:拼棱公式、原地翻棱公式、对棱换公式、单棱翻公式。具体如下:1、拼棱公式:Uw' ( R U R' F R' F' R) Uw 2、原地翻棱公式:R U R' F R' F' R 3、对棱换公式(P特公式)Uw2 ( MR2 U2 )2 MR2 Uw2 4、单棱翻公式(O特公式)Rw U2 CR (Rw U2)2 Rw...

用定义计算四阶行列式
行列式可以按某一行或某一列展开成元素与其对应的代数余子式的乘积之和。接下来,我以按照第一行展开进行计算为例,最后结果为:原式=adfh-bdfg。详细计算过程可以见图片。

四阶常微分龙格—库塔法求解常微分方程的初值问题。 Matlab程序算例:用...
clear, clc%清除内存中的变量 %数值解y=inline('x*exp(x)+2*x-1');y(1) % 四阶龙格库塔法y0=[-1 3 2];[x1,y1] = ode45(@fun,[0,1],y0); y1(end,1) % y(1)的值function dy=fun(x,y)dy=zeros(3,1);dy(1)=y(2);dy(2)=y(3);dy(3)=y(3)+y(2)-y(1)+...

该四阶行列式怎么求
r4-r1*g\/a,得到 a b 0 0 0 c d 0 0 0 e f 0 h-bg\/a 0 0 直接按照第一列展开得到 c d 0 0 e f h-bg\/a 0 0 ×a 再按照第3行展开 =(h-bg\/a)×a×df=(ah-bg)×df

新城子区15678825818: 四阶龙格库塔 步长 -
钱疫圣畅: 假设求解初值问题:y'=y-2x/y (0<x<1) y(0)=1 设步长h=0.2,从x=0直到x=1用四阶龙格库塔法:Private Sub Form_click() Dim x As Single, y As Single Dim k1 As Single, k2 As Single, k3 As Single, k4 As Single Dim y1 As Single, y2 As Single, y3 ...

新城子区15678825818: 四阶龙格库塔 步长
钱疫圣畅: 假设求解初值问题: y'=y-2x/y (0&lt;x&lt;1) y(0)=1 设步长h=0.2,从x=0直到x=1用四阶龙格库塔法: Private Sub Form_click() Dim x As Single, y As Single Dim k1 As Single, k2 As Single, k3 As Single, k4 As Single Dim y1 As Single, y2 As Single, ...

新城子区15678825818: 急求MATLAB编程源代码用四阶龙格库塔法解如下微分方程 y'=y - 2x/y(0<x<1),y(0)=1,步长为h=0.2 -
钱疫圣畅: % 以下另存为文件 myrk4.m function [x,y]=myrk4(ufunc,y0,h,a,b)%参数: 函数名称,初始值向量,步长,时间起点,时间终点 n=floor((b-a)/h);%求步数 x(1)=a;%时间起点 y(:,1)=y0;%赋初值%按龙格库塔方法进行求解 for ii=1:nx(ii+1)=x(ii)+h;...

新城子区15678825818: 用龙格库塔法求解微分方程 -
钱疫圣畅: 功能:用四阶 Runge-Kutta 法求解常微分方程 --------------------------------------------- function R=Rungkuta4(f, a, b, n, ya)% f:微分方程右端函数句柄% a,b:自变量取值区间的两个端点% n:区间等分的个数% ya:函数初值 y(a)% R=[x',y']:自变量...

新城子区15678825818: 用四阶龙格库塔法求解矩阵微分方程
钱疫圣畅: global R M U syms t R=[ 0.0247,0,0,0,0,0; 0,0.0247,0,0,0,0; 0,0,0.0247,0,0,0; 0,0,0,0.0193,-0.0193,0; 0,0,0,0,0.0193,-0.0193; 0,0,0,1,1,1 ]; M=[ 0,0,0,-15727/10000*sin(5/12*pi+80*pi*t)*pi,15727/10000*cos(1/4*pi+80*pi*t)*pi,15727/10000*sin(1/12*...

新城子区15678825818: 用四级四阶龙格 - 库塔公式求解初值问题 -
钱疫圣畅: 主程序 clc;clear x0=0;y0=1; h=0.1; Nstep=floor(1/h); [x2,y2]=Rung_Kutta(@myfun,x0,y0,h,Nstep); plot(x2,y2) xlabel('x') ylabel('y') box off grid on 函数程序1 function y1=myfun(x,y) %% a self-defined function y1=sqrt(x+y); end 函数程序2 function [x,y]=...

新城子区15678825818: 如何用matlab解龙格库塔 -
钱疫圣畅: 用m4rkutta函数求解,见附件输入以下程序 df=@(x,y)3*y/(1+x); [x,y]=m4rkutta(df,[0 1],1,0.2) 得到的结果为: x =0 0.2000 0.4000 0.6000 0.8000 1.0000 y =1.0000 1.7275 2.7430 4.0942 5.8292 7.9960附件加载失败,请点击刷新

新城子区15678825818: 采用龙格 - 库塔法求解常微分方程的初值问题时,公式阶数越高,数值解...
钱疫圣畅: #include using namespace std;//f为函数的入口地址,x0、y0为初值,xn为所求点,step为计算次数double Runge_Kuta( double (*f)(double x, double y)...

新城子区15678825818: 求一个用C++程序编写的四阶龙格库塔算法 -
钱疫圣畅: #include<iostream> using namespace std; //f为函数的入口地址,x0、y0为初值,xn为所求点,step为计算次数 double Runge_Kuta( double (*f)(double x, double y), double x0, double y0, double xn, long step ) { double k1,k2,k3,k4,result; double h=(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网