洛伦兹方程c语言,龙格库塔在C为洛伦兹方程
我想计算洛伦茨系统使用龙格库塔方法,但我找不到我的代码有错误的地方。当我运行它时,系统进入静态点,我应该获得一个蝴蝶(洛伦兹吸引子)。我认为这是Runge Kutta方法部分的'for'循环中的一些东西。这里是我的代码龙格库塔在C为洛伦兹方程
#include
#include
#include
double f(int,double,double []);
double s,r,b;
FILE *output;
int main()
{
output=fopen("lorenzdata.dat","w");
int j,N=3;
double x[2],dt,y[2],K1[2],K2[2],K3[2],K4[2],ti,t,i;
printf("\n Introduce parameters s, r and b sepparated by a space:");
scanf("%lf %lf %lf",&s,&r,&b);
printf("\n Introduce initial conditions t0,x0,y0 and z0:");
scanf("%lf %lf %lf %lf",&ti,&x[0],&x[1],&x[2]);
printf("\n Introduce time step:");
scanf("%lf",&dt);
printf("\n Specify time to compute in the equations:");
scanf("%lf",&t);
/* Loop para Runge Kutta 4 */
do
{
/* printf("%9.4f %9.4f %9.4f %9.4f \n",ti,x[0],x[1],x[2]); */
i++;
for(j=0;j
{
K1[j] = f(j,ti,x);
}
for(j=0;j
{
y[j] = x[j]+(K1[j]/2)*dt;
}
for(j=0;j
{
K2[j] = f(j,ti+dt/2,y);
}
for(j=0;j
{
y[j] = x[j]+(K2[j]/2)*dt;
}
for(j=0;j
{
K3[j] = f(j,ti+dt/2,y);
}
for(j=0;j
{
y[j] = x[j]+(K3[j])*dt;
}
for(j=0;j
{
K4[j] = f(j,ti+dt,y);
}
for(j=0;j
{
x[j] += dt*((K1[j]/6)+(K2[j]/3)+(K3[j]/3)+(K4[j]/6));
}
ti +=dt;
fprintf(output,"%9.4f %9.4f %9.4f \n",x[0],x[1],x[2]);
}while(i*dt <= t);
fclose(output);
return 0;
}
/* Definimos la funcion */
double f(int m,double h,double x[])
{
if(m==0)
{
return s*(x[1]-x[0]);
}
else if(m==1)
{
return x[0]*(r-x[2])-x[1];
}
else if(m==2)
{
return x[0]*x[1]-b*x[2];
}
}
在此先感谢
编辑
我在Linux上重新写的代码(以更简化的方式),并且它运行正常,看来我在Windows上编辑了一些东西(也许是编码),当我编译代码时,它抛出了很多infinites值。不知道为什么,我花了很多时间才注意到这一点。 感谢您的帮助
+0
双h作为函数f的输入点是什么?它似乎没有被使用。有必要吗? –
2012-02-20 00:28:40
+0
mm nop,我只是为了做一个更一般化的代码,以防万一diff方程式明确地取决于t –
2012-02-20 03:05:04
洛伦兹方程c语言,龙格库塔在C为洛伦兹方程相关推荐
- 如何用龙格库塔 方法求解 范德波振子的运动
如何用龙格库塔 方法求解 范德波振子的运动 坑,没有想好. 这是一个非常好的线索: Generalized Forced Van Der Pol Oscillator Phase Plot - fun ...
- 龙格库塔c 语言编程实现,龙格库塔C 语言编程实现
最新一直在学一门很苦逼的课程<数值分析>,哎,高等数学没学好现在后悔了呀,哎回来再恶补,现在说正事. 龙格库塔很牛掰的名字,是两个国外数学家的名字的合并,应该又是两个大牛. 这个方法主要是 ...
- 四阶龙格库塔c语言,四阶龙格库塔算法的C语言实现
解微分方程 2001年3月焦作大学学报 JOURNALOFJIAOZUOUNIVERSITY№ 1Mar.2001第1期 四阶龙格一库塔算法的C语言实现 毋玉芝 (焦作财会学校) 摘要本文叙述了四阶龙 ...
- 四阶龙格库塔方程(Rungekutta)解二阶常微分方程组并计算船舶在迎浪下的纵摇埀荡耦合运动方程-附Matlab代码
今年年初的时候给师姐做了DDPG算法的船舶减横摇控制算法,师姐还有想法要让我把纵摇-埀荡两个自由度的减摇也做出来,这个任务归我了.实际上不管是多少个自由度的减摇,其实都需要解运动方程,当初做单自由度横 ...
- 四阶龙格库塔方程解二阶常微分方程组并计算船舶在迎浪下的纵摇埀荡耦合运动方程-附Python代码
0 写在前面 这篇博客是在将我上一篇博客的matlab代码移植到python中,应为后续要开展深度强化学习下的船舶减摇研究,总的来说还是在python上做这项工作比较合适.具体方程的解法和背景不在赘述 ...
- 欧拉编程c语言作业数值分析,数值分析作业 欧拉 龙格库塔
<数值分析作业 欧拉 龙格库塔>由会员分享,可在线阅读,更多相关<数值分析作业 欧拉 龙格库塔(5页珍藏版)>请在人人文库网上搜索. 1.9.2对初值问题试用欧拉方法取步长h= ...
- 阿当姆斯方法求解微分方程初值问题:四阶龙格库塔提供出发值(C语言)
#include<stdio.h>float f1(float x,float y) //第一问 {return y*y;//方程 }float f2(float x,float y)// ...
- matlab:二阶龙格库塔求解欧拉方程
%书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法 %二阶龙格库塔方法 function S = heunsec(fun, x0, xn, y0, h) %fun:微分 ...
- 龙格-库塔(Runge-Kutta)方法数学原理及实现
参考:https://blog.csdn.net/u013007900/article/details/45922331 龙格-库塔(Runge-Kutta)方法 龙格-库塔(Runge-Kutta) ...
最新文章
- java mvc 绑定_关于Java:Spring MVC:将请求属性绑定到控制器方法参数
- visual studio 2017插件安装qt
- python测试网站功能_Python检测网站链接是否已存在
- java基础----Java Collections Framework
- 如何使用SAP HANA Studio的PlanViz分析CDS view性能问题
- 【Python】python文件名和文件路径操作
- LeetCode 810. 黑板异或游戏(博弈推理)
- Boolan第一周笔记(二)对于第一周作业的一点总结
- 语音识别中的CTC算法的基本原理解释
- tf.nn.embedding_lookup,tf.variable系列变量
- 润乾报表-数据源的选取不能选视图
- 扑克牌的完美洗牌算法
- GERM格沵有哪些适合夏天的高颜值杯子推荐吗?
- 三调 图斑地类面积_国土三调APP-GIS,地理信息,综合管网,地下空间,给水排水,通信管网,燃气管网,智慧旅游,...
- 高中计算机技术教材,广西科学技术出版高中信息技术教材第一册《计算机硬件组成》...
- 关于DAG共识的调研
- python算法——字符串表达式的计算
- vlc播放海康威视摄像头rtsp rtmp视频教程
- MOSS SDK学习(2)
- 2019春第一周编程总结