这里使用 C++ 计算轨迹,生成 Python 文件,使用 matplotlib 绘图。

 // simulator.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// #include "pch.h" //预编译头,自行添加相关头文件 struct vec
{
double x;
double y;
double z;
}; vec operator*(vec v, double n)
{
return { v.x * n , v.y * n , v.z * n};
} vec operator+(vec &x, vec &y)
{
return {x.x + y.x, x.y + y.y, x.z + y.z};
} //参数
double a = ;
double b = ;
double c = ; vec velocity(vec &pos)
{
vec velocity;
velocity.x = a * (pos.y - pos.x);
velocity.y = pos.x * (b - pos.z) - pos.y;
velocity.z = pos.x * pos.y - c * pos.z; return velocity;
} //时间微元
double dt = 0.001; int main()
{
std::vector<vec> state;    //初始条件
vec init_state = { 5.0, 5.0 , 5.0}; vec p = init_state; int ii = ;
for (int i = ; i < ii; ++i)
{
vec v = velocity(p);
vec dp = v * dt;
p = p + dp;
state.push_back(p);
printf("\r[%2.1lf%%|%5d] p -> (%lf,%lf,%lf)", (double)i / ii * , i, p.x, p.y, p.z);
} printf("\n\nsaving..."); //输出python文件 std::ostringstream ox;
std::ostringstream oy;
std::ostringstream oz; ox << "[";
oy << "[";
oz << "["; for (size_t i = ; i < state.size(); ++i)
{
ox << state[i].x;
oy << state[i].y;
oz << state[i].z; ox << ",";
oy << ",";
oz << ","; if ((i + ) % == )
{
ox << std::endl;
oy << std::endl;
oz << std::endl;
}
} ox << "]";
oy << "]";
oz << "]"; std::ofstream f;
f.open("output.py"); f << "import numpy as np" << std::endl;
f << "import matplotlib.pyplot as plt" << std::endl;
f << "from mpl_toolkits.mplot3d import Axes3D" << std::endl; f << "x = " << ox.str();
f << std::endl;
f << "y = " << oy.str();
f << std::endl;
f << "z = " << oz.str();
f << std::endl; f << "X = np.array(x)" << std::endl;
f << "Y = np.array(y)" << std::endl;
f << "Z = np.array(z)" << std::endl; f << std::endl; // f << "" << std::endl;
f << "fig = plt.figure()" << std::endl;
f << "ax = Axes3D(fig)" << std::endl;
f << "ax.plot(X, Y, Z)" << std::endl;
f << "plt.show()" << std::endl;
f << "" << std::endl; f.close();
}

然后会输出 output.py

依赖的包有:numpy, matplotlib

然后直接执行 >python output.py即可

结果:

C++ 生成洛伦兹的蝴蝶的更多相关文章

  1. 洛伦兹曲线(Lorenz curve)提升指数、提升表和提升图

    sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...

  2. 基尼系数(Gini coefficient),洛伦茨系数

    20世纪初意大利经济学家基尼,于1922年提出的定量测定收入分配差异程度的指标.它是根据洛伦茨曲线找出了判断分配平等程度的指标(如下图). 设实际收入分配曲线和收入分配绝对平等曲线之间的面积为A,实际 ...

  3. 混沌理论(Chaos theory)和非线性系统

    混沌理论(Chaos theory)是关于非线性系统在一定参数条件下展现分岔(bifurcation).周期运动与非周期运动相互纠缠,以至于通向某种非周期有序运动的理论.在耗散系统和保守系统中,混沌运 ...

  4. 用R做逻辑回归之汽车贷款违约模型

    数据说明 本数据是一份汽车贷款违约数据 application_id    申请者ID account_number 账户号 bad_ind            是否违约 vehicle_year  ...

  5. Windows phone应用开发[19]-RSA数据加密

    在这个系列的第十六章节中Windows phone应用开发[16]-数据加密 中曾详细讲解过windows phone 常用的MD5,HMAC_MD5,DES,TripleDES[3DES] 数据加密 ...

  6. snort-2.9.7.0源码安装过程

    2015/02/15,centos6.5-64-minimal,初始205个包 [root@localhost snort]# yum install wget[root@localhost snor ...

  7. 信用评分卡Credit Scorecards (1-7)

      欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 python风控评分卡建模和风控常识 https://study.163.com/course/introductio ...

  8. boost 随机数发生器

    Random     随机数 在很多应用中都需要使用随机数.本库力求提供一个高效的,通用的随机数库.boost库有多种随机数生成方式.先熟悉一下各种随机数生成器的概念. 数字生成器(Number Ge ...

  9. 统计随机数及临界值Web Service接口

    (2017-02-04 银河统计) 统计函数API概念   API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发 ...

随机推荐

  1. 介绍一款自动给添加不同浏览器CSS3前缀的插件~Autoprefixer(附其他前端开发插件)

    正文 自动给CSS文件添加不同浏览器的CSS3前缀:Autoprefixer 安装 只需兼容主流浏览器 正常情况使用:(在书写完的CSS样式文件中,按F1,选择Autoprefixer CSS) 这时 ...

  2. babel7-按需加载polyfill

    babel7 babel7发布了. 在升级到 Babel 7 时需要注意几个重大变化: 移除对 Node.js 6 之前版本的支持: 使用带有作用域的 @babel 命名空间,以防止与官方 Babel ...

  3. C# webapi 上传下载图片

    客户端上传文件 string url = url + "webUploadFile"; Uri server = new Uri(url); HttpClient httpClie ...

  4. Java发布webservice应用并发送SOAP请求调用

    webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML ...

  5. 细说Cookie--转

    Cookie虽然是个很简单的东西,但它又是WEB开发中一个很重要的客户端数据来源,而且它可以实现扩展性很好的会话状态, 所以我认为每个WEB开发人员都有必要对它有个清晰的认识.本文将对Cookie这个 ...

  6. Dynamics CRM 日常使用JS整理(二)

    BPF(Business Process Flow)相关的JS 为Stage添加changed或者selected事件: function fnOnLoad() { Xrm.Page.data.pro ...

  7. Python——Python+Pydev出现SyntaxError: Non-UTF-8 code

    搭建好Python+Pydev后发现每次输入中文,包括注释,会出现语法错误提示,如: SyntaxError: Non-UTF-8 code starting with... 可通过下面方法解决. 1 ...

  8. FCN网络

    https://www.cnblogs.com/gujianhan/p/6030639.html

  9. 转载-IDEA项目左边栏只能看到文件看不到项目结构

    原文-https://blog.csdn.net/weixin_42362985/article/details/80538064 有时IDEA Maven项目打开左侧Project窗口本应该显示项目 ...

  10. poj2689 Prime Distance题解报告

    题目戳这里 [题目大意] 给定一个区间[L,R],求区间内的质数相邻两个距离最大和最小的. [思路分析] 其实很简单呀,很明显可以看出来是数论题,有关于质数的知识. 要注意一下的就是L和R的数据范围都 ...