求教用c++编写的龙格库塔公式,要适应于微分方程组的,不是单个方程,最好有实例,谢谢各路大神!!

问题描述

求教用c++编写的龙格库塔公式,要适应于微分方程组的,不是单个方程,最好有实例,谢谢各路大神!!

求教用c++编写的龙格库塔公式,要适应于微分方程组的,不是单个方程,最好有实例,谢谢各路大神!!

解决方案

(1)的局部截断误差是 。
龙格-库塔法具有精度高,收敛,稳定(在一定条件下),计算过程中可以改变步长,不需要计算高阶导数等优点,但仍需计算 在一些点上的值,如四阶龙格-库塔法每计算一步需要计算四次 的值,这给实际计算带来一定的复杂性,因此,多用来计算“表头”。
#include
#include
#define f(x,y) (-1*(x)*(y)*(y))
void main(void)
{
double a,b,x0,y0,k1,k2,k3,k4,h;
int n,i;
printf("input a,b,x0,y0,n:");
scanf("%lf%lf%lf%lf%d",&a,&b,&x0,&y0,&n);
printf("x0ty0tk1tk2tk3tk4n");
for(h=(b-a)/n,i=0;i!=n;i++)
{
k1=f(x0,y0);
k2=f(x0+h/2,y0+k1*h/2);
k3=f(x0+h/2,y0+k2*h/2);
k4=f(x0+h,y0+h*k3);
printf("%lft%lft",x0,y0);
printf("%lft%lft",k1,k2);
printf("%lft%lfn",k3,k4);
y0+=h*(k1+2*k2+2*k3+k4)/6;
x0+=h;
}
printf("xn=%lftyn=%lfn",x0,y0);
}
运行结果:
input a,b,x0,y0,n:0 5 0 2 20
x0 y0 k1 k2 k3 k4
0.000000 2.000000 -0.000000 -0.500000 -0.469238
-0.886131
0.250000 1.882308 -0.885771 -1.176945 -1.129082
-1.280060
0.500000 1.599896 -1.279834 -1.295851 -1.292250
-1.222728
0.750000 1.279948 -1.228700 -1.110102 -1.139515
-0.990162
1.000000 1.000027 -1.000054 -0.861368 -0.895837
-0.752852
1.250000 0.780556 -0.761584 -0.645858 -0.673410
-0.562189
1.500000 0.615459 -0.568185 -0.481668 -0.500993
-0.420537
1.750000 0.492374 -0.424257 -0.361915 -0.374868
-0.317855
2.000000 0.400054 -0.320087 -0.275466 -0.284067
-0.243598
2.250000 0.329940 -0.244935 -0.212786 -0.218538
-0.189482
2.500000 0.275895 -0.190295 -0.166841 -0.170744
-0.149563
2.750000 0.233602 -0.150068 -0.132704 -0.135399
-0.119703
3.000000 0.200020 -0.120024 -0.106973 -0.108868
-0.097048
3.250000 0.172989 -0.097256 -0.087300 -0.088657
-0.079618
3.500000 0.150956 -0.079757 -0.072054 -0.073042
-0.066030
3.750000 0.132790 -0.066124 -0.060087 -0.060818
-0.055305
4.000000 0.117655 -0.055371 -0.050580 -0.051129
-0.046743
4.250000 0.104924 -0.046789 -0.042945 -0.043363
-0.039833
4.500000 0.094123 -0.039866 -0.036750 -0.037072
-0.034202
4.750000 0.084885 -0.034226 -0.031675 -0.031926
-0.029571
xn=5.000000 yn=0.076927

时间: 2024-09-19 20:34:31

求教用c++编写的龙格库塔公式,要适应于微分方程组的,不是单个方程,最好有实例,谢谢各路大神!!的相关文章

win8 网络-自己电脑的 "无法连接到网络" 求教各路大神!

问题描述 自己电脑的 "无法连接到网络" 求教各路大神! 试了好几个无线,包括路由的和手机的热点,只有一个可以正常用.其他的无线都是在输入密码以后提示无法连接到网络. 有一点就是在输入完密码连接的时候,有一刹那的时候,WLAN适配器那里显示"已禁用",一秒后恢复,但是无线就连不上了. 求怎么破? 解决方案 检查下电脑是否感染了360等系列流氓软件. 解决方案二: 电脑无法连接到个别的无线网络无法连接电脑,找不到网络路径 解决方案三: 360有网络修复,试着修复一下应

C#编写的串口摄像头监控系统,怎么解决读取图片长度时提示内存不足的情况,求大神给出详细代码

问题描述 用C#编写的串口摄像头监控系统,怎么解决读取图片长度是提示内存不足的情况 解决方案 解决方案二:你这个图片保存以后,用windows自带的工具可以打开吗?如果不行,还是你传入的字符串或者你转换字符串到byte数组出的问题解决方案三:点保存能保存,但是没有收到数据,我可以发给你源代码,你帮我看看可以不解决方案四:在f.close()之前,你加上f.flush();试试看解决方案五:你保存的a.tmp有问题.你用windows自带的看图程序打开看看解决方案六:重复附值时,加上释放之前内存的

求教各路大神,关于java中8位与16位

问题描述 java中已知一个高位的byte和一个低位的byte,怎么组合成一个16位的值 解决方案 本帖最后由 lyccsu 于 2014-10-08 09:17:41 编辑解决方案二:用System.arraycopy进行字节数组合并.具体可参照解决方案三:bytehig=1;bytelow=1;inti=(((hig&0xff)<<8)+(low&0xff))&0xffff;

php上传excel导出pdf~菜鸟求教,大神指点

问题描述 php上传excel导出pdf~菜鸟求教,大神指点 烦了我三个星期的需求:在线excel转pdf. 需求是把excel上传后经过php转为pdf,我开是利用了phpexcel,上传后再用tcpdf生成,但是phpexcel无法,或者说找不到获取列宽和行高的函数.然后就直接用phpexcel调用tcpdf的类库输出,但是就生成乱码 - -. 目前使用的环境是PHP5.4+linux+tengine 现在有几个问题,想请教各路大神: 1.phpexcel如何获取列宽和行高 2.如何生成pd

语言课程设计-用vc6.0编写一个登陆界面,求大神

问题描述 用vc6.0编写一个登陆界面,求大神 用户名与密码写在代码里 密码输入三次自动退出 并且登陆成功后可以运行九九乘法表这个小程序 谢谢各位大神 解决方案 还没说使用什么编程语言呢 解决方案二: MFC or WIN32? CLoginDIalog; CDIalog { private: int login_count; ..... 看看MFC的实现 } 解决方案三: 用VC6的对话框模板工程建立,然后就是两个EDIT 控件分别放用户名,密码 输入后,GetWindowText获取,然后比

移动开发-大神们求教自定义listview固定头部和尾部不动中间item数据可以上下滑动。

问题描述 大神们求教自定义listview固定头部和尾部不动中间item数据可以上下滑动. 求教自定义listview固定头部和尾部不动中间item数据可以上下滑动,最好是能封装成一个view开发-大神们求教自定义listview固定头部和尾部不动中间item数据可以上下滑动.-listview滑动隐藏头部"> 解决方案 在listview中加入header 和footer. 在listview里面有的 public void addHeaderView (View v) public v

龙格库塔C 语言编程实现

最新一直在学一门很苦逼的课程<数值分析>,哎,高等数学没学好现在后悔了呀,哎回来再恶补,现在说正事. 龙格库塔很牛掰的名字,是两个国外数学家的名字的合并,应该又是两个大牛. 这个方法主要是用来解决微分方程的解,大体思路就是用差分代替微分.细节我就不说了,大家可以去百度,我这里直接给出龙格库塔家族的通式: 这个是龙格库塔家族的通式,如果我们取累加和中的r为4则可以得到如下公式: 这就是四阶龙格库塔方程,据说这里的精度很好,可以精确到小数点后6位. 方程组中的h为差分的步长. 下面给出c语言实现的

图形化编程实现改进的欧拉格式和龙格库塔格式。这里有个C语言的,想改写成C#。

问题描述 图形化编程实现改进的欧拉格式和龙格库塔格式.这里有个C语言的,想改写成C#. 1)改进欧拉法求解常微分方程的初值问题 #include float func(float x,float y) { return(y-x); } float euler(float x0,float xn,float y0,int N) { float x,y,yp,yc,h; int i; x=x0; y=y0; h=(xn-x0)/(float)N; for(i=1;i<=N;i++) { yp=y+h

数据字典 结构化分析-求教关于C# 编写题库管理系统,数据字典要怎么写

问题描述 求教关于C# 编写题库管理系统,数据字典要怎么写 求教关于C# 编写题库管理系统,在后面的需求分析中数据字典要怎么写.数据流图已画好,求助数据字典. 解决方案 我就用你的数据流图举个例子 假设你的试题有 试题编号 试题日期 试题科目 试题类型(A.B) 名字:试题信息 别名:试题信息 描述:试题的基本信息 定义:试题编号+试题时期+试题科目+试题类型 位置:试题管理,试题录入,试题查询,试题删除,选择组卷方式,试卷基本设置,试卷试题库 解决方案二: 数据字典和编程没什么关系,是你分析业