C++ 生成洛伦兹的蝴蝶
这里使用 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++ 生成洛伦兹的蝴蝶的更多相关文章
- 洛伦兹曲线(Lorenz curve)提升指数、提升表和提升图
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
- 基尼系数(Gini coefficient),洛伦茨系数
20世纪初意大利经济学家基尼,于1922年提出的定量测定收入分配差异程度的指标.它是根据洛伦茨曲线找出了判断分配平等程度的指标(如下图). 设实际收入分配曲线和收入分配绝对平等曲线之间的面积为A,实际 ...
- 混沌理论(Chaos theory)和非线性系统
混沌理论(Chaos theory)是关于非线性系统在一定参数条件下展现分岔(bifurcation).周期运动与非周期运动相互纠缠,以至于通向某种非周期有序运动的理论.在耗散系统和保守系统中,混沌运 ...
- 用R做逻辑回归之汽车贷款违约模型
数据说明 本数据是一份汽车贷款违约数据 application_id 申请者ID account_number 账户号 bad_ind 是否违约 vehicle_year ...
- Windows phone应用开发[19]-RSA数据加密
在这个系列的第十六章节中Windows phone应用开发[16]-数据加密 中曾详细讲解过windows phone 常用的MD5,HMAC_MD5,DES,TripleDES[3DES] 数据加密 ...
- snort-2.9.7.0源码安装过程
2015/02/15,centos6.5-64-minimal,初始205个包 [root@localhost snort]# yum install wget[root@localhost snor ...
- 信用评分卡Credit Scorecards (1-7)
欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 python风控评分卡建模和风控常识 https://study.163.com/course/introductio ...
- boost 随机数发生器
Random 随机数 在很多应用中都需要使用随机数.本库力求提供一个高效的,通用的随机数库.boost库有多种随机数生成方式.先熟悉一下各种随机数生成器的概念. 数字生成器(Number Ge ...
- 统计随机数及临界值Web Service接口
(2017-02-04 银河统计) 统计函数API概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发 ...
随机推荐
- (转)调用System.gc没有立即执行的解决方法
调用System.gc没有立即执行的解决方法 查看源码 当我们调用System.gc()的时候,其实并不会马上进行垃圾回收,甚至不一定会执行垃圾回收,查看系统源码可以看到 /** * Indicate ...
- 关于DOM的事件操作
一.JavaScript的组成 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象 ...
- netcore项目在Windows部署:使用NSSM部署Windows服务
NSSM部署Windows服务 1 准备工作 在Windows平台部署Asp.net core应用程序一般采用IIS,但是如果我们的net core应用执行的是定时任务,需要开机自启,稳定运行的话,使 ...
- Ubuntu16.04安装及配置nginx
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev ...
- mysql中整数类型后面的数字,比如int(11),11代表11个字节吗?
原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...
- 微信小程序button组件样式
点击微信按键组件才能出授权,所以自定义样式就是必须的了,来自网友的帮助,如下图 <button class='btn1' open-type='contact'> <image cl ...
- Oracle DB Day02(SQL)
--数据库下表一般都是从1开始,例如字符串等 SELECT *FROM employees --字符串连接CONCAT() ,CONCAT(CONCAT(EMPLOYEE_ID,','),SALARY ...
- PMP知识点(四)——项目管理计划的内容
项目管理计划([4.2制定项目管理计划]的输出) 包含三个基准和十三个子计划和一些其他内容 三个基准:成本基本.进度基准.范围基准 其中范围基准([5.4创建WBS]的输出)包含了:项目范围说明书.W ...
- python selectsort
# -*- coding: utf-8 -*-"""------------------------------------------------- File Name ...
- TERADATA SQL学习随笔<一>
此博客内容简介及目录 http://www.cnblogs.com/weibaar/p/6644261.html 最近在TERADATA环境学习SQL.在这里记录一下学习中查过的知识点,作为备案. 目 ...