【matlab混沌理论】1.5.洛伦兹模型的分析
洛伦兹方程用于生成y变量的图。这是对三种y初始条件敏感依赖的一个例子。
1.洛伦兹吸引子的y敏感依赖的着色图
input:
% 洛伦兹方程用于生成y变量的图。x和z的初始条件保持不变,但y的初始条件在1.001、1.0001和1.00001之间变化 % 定义洛伦兹方程
sigma = 16;
beta = 4;
rho = 45.92;
f = @(t,y) [sigma*(y(2)-y(1)); y(1)*(rho-y(3))-y(2); y(1)*y(2)-beta*y(3)]; % 设置初始条件
y0 = [1.001, 0, 1]; % y 初始值为 1.001
[t1,y1] = ode45(f, [0, 50], y0); y0 = [1.0001, 0, 1]; % y 初始值为 1.0001
[t2,y2] = ode45(f, [0, 50], y0); y0 = [1.00001, 0, 1]; % y 初始值为 1.00001
[t3,y3] = ode45(f, [0, 50], y0); % 绘制图形
plot3(y1(:,1),y1(:,2),y1(:,3),'linewidth',2,'color','b');
hold on
plot3(y2(:,1),y2(:,2),y2(:,3),'linewidth',1,'color','k');
plot3(y3(:,1),y3(:,2),y3(:,3),'linewidth',1,'color','r');
xlabel('X');
ylabel('Y');
zlabel('Z');
title('Lorenz attractor with different initial y values');
legend('y0 = 1.001', 'y0 = 1.0001', 'y0 = 1.00001')
grid on;
output:

2.洛伦兹模型的y 初始值的频谱变化
input:
% Lorenz,y 初始值情况下的初始条件敏感性
% 绘制一个散点图,显示 y 初始值的频谱从低到高的变化,每个频谱曲线的颜色根据相应的 y 初始值进行着色
% 在另一个子图中显示了 Lorenz 吸引子的演变趋势。 % 定义洛伦兹方程
sigma = 16;
beta = 4;
rho = 45.92;
f = @(t,y) [sigma*(y(2)-y(1)); y(1)*(rho-y(3))-y(2); y(1)*y(2)-beta*y(3)]; % 定义 y 初始条件
y0 = 1.001; % 计算洛伦兹方程的解
[t, y] = ode45(f, [0, 50], [1, 0, y0]); % 用 FFT 算法计算洛伦兹方程 y 变量的频谱
N = length(y);
Y = fft(y(:,2));
Pyy = Y.*conj(Y)/N;
f = 1/(t(2)-t(1))*(0:(N/2))/N; % 绘制频谱图(注意此处使用的是 semilogy 方法)
semilogy(f,Pyy(1:N/2+1))
grid on
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|') % 显示结果
output:

3.不同y初始条件的洛伦兹吸引子轨迹图
input:
% Lorenz 方程在不同的 y 初始条件下生成的轨迹 % 采用数组和循环同时绘制多个初始条件谱图
% 存在上一错误时,可清除所有变量,关闭所有图形窗口
% clear all;
% close all; % 定义 Lorenz 方程的参数和函数句柄
sigma = 10;
beta = 8/3;
rho = 28;
f = @(t, x) [sigma*(x(2)-x(1)); x(1)*(rho-x(3))-x(2); x(1)*x(2)-beta*x(3)]; % 定义颜色和标记样式
colors = ['r', 'b', 'g'];
markers = ['s', 'o', 'd']; % 定义 y 初始条件
y0 = [1.001, 1.0001, 1.00001]; % 创建新图形窗口
figure; % 循环遍历 y 初始值
for i = 1:length(y0)
% 计算洛伦兹方程的解
[t, y] = ode45(f, [0, 50], [1, 0, y0(i)]); % 绘制 Lorenz 吸引子的 y 轨迹
plot(t, y(:,2), '-', 'linewidth', 0.5, 'color', colors(i));
hold on;
end % 添加图例、坐标轴标签和标题
legend('y0 = 1.001', 'y0 = 1.0001', 'y0 = 1.00001');
xlabel('t');
ylabel('y');
title('Lorenz Attractor for Different Initial Conditions (y)');
ouput:

4.吸引子相空间区域内对初始条件的敏感依赖性
input:
% 绘制洛伦兹吸引子(Lorenz attractor)的代码,同时显示出吸引子占据的相空间区域内对初始条件的敏感依赖性 %% 参数设定
sigma = 10;
beta = 8/3;
rho = 28;
dt = 0.005;
max_t = 200; %% 计算Lorenz attractor
x = 0.1; y = 0.2; z = 0.3;
x_traj = zeros(max_t/dt,1); x_traj(1) = x;
y_traj = zeros(max_t/dt,1); y_traj(1) = y;
z_traj = zeros(max_t/dt,1); z_traj(1) = z; for i=2:length(x_traj)
dx_dt = sigma*(y - x);
dy_dt = x*(rho - z) - y;
dz_dt = x*y - beta*z;
x_new = x + dx_dt*dt;
y_new = y + dy_dt*dt;
z_new = z + dz_dt*dt;
x_traj(i) = x_new;
y_traj(i) = y_new;
z_traj(i) = z_new;
x = x_new; y = y_new; z = z_new;
end %% 绘制Lorenz attractor
figure('color','black'); plot3(x_traj,y_traj,z_traj, 'color', [0.894,0.102,0.110]); hold on;
scatter3(x_traj,y_traj,z_traj,5,'filled', 'MarkerFaceAlpha',0.2,'MarkerEdgeAlpha',0.2); title('Lorenz attractor', 'color','white');
xlabel('x', 'color','white'); ylabel('y', 'color','white'); zlabel('z', 'color','white');
axis tight;
view([40,20]); xlim([-25,25]); ylim([-35,35]); zlim([5,55]); %% 绘制敏感依赖性图
figure('color','black'); delta = 1e-8;
x_traj_perturbed = x_traj+delta*randn(length(x_traj),1);
y_traj_perturbed = y_traj+delta*randn(length(y_traj),1);
z_traj_perturbed = z_traj+delta*randn(length(z_traj),1); plot3(x_traj,y_traj,z_traj, 'color', [0.894,0.102,0.110]); hold on;
scatter3(x_traj,y_traj,z_traj,5,'filled', 'MarkerFaceAlpha',0.2,'MarkerEdgeAlpha',0.2);
plot3(x_traj_perturbed,y_traj_perturbed,z_traj_perturbed, 'color', [0.980,0.745,0.412]); title('Sensitive Dependence on Initial Conditions', 'color','white');
xlabel('x', 'color','white'); ylabel('y', 'color','white'); zlabel('z', 'color','white');
axis tight;
view([40,20]); xlim([-25,25]); ylim([-35,35]); zlim([5,55]);
output:


【matlab混沌理论】1.5.洛伦兹模型的分析的更多相关文章
- 洛伦兹曲线(Lorenz curve)提升指数、提升表和提升图
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
- C++ 生成洛伦兹的蝴蝶
这里使用 C++ 计算轨迹,生成 Python 文件,使用 matplotlib 绘图. // simulator.cpp : 此文件包含 "main" 函数.程序执行将在此处开始 ...
- 基于python的数学建模---洛伦兹线与数值解
import numpy as np from scipy.integrate import odeint from mpl_toolkits.mplot3d import Axes3D import ...
- 混沌理论(Chaos theory)和非线性系统
混沌理论(Chaos theory)是关于非线性系统在一定参数条件下展现分岔(bifurcation).周期运动与非周期运动相互纠缠,以至于通向某种非周期有序运动的理论.在耗散系统和保守系统中,混沌运 ...
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- MATLAB之数学建模:深圳市生活垃圾处理社会总成本分析
MATLAB之数学建模:深圳市生活垃圾处理社会总成本分析 注:MATLAB版本--2016a,作图分析部分见<MATLAB之折线图.柱状图.饼图以及常用绘图技巧> 一.现状模式下的模型 % ...
- 混沌数学之Lorenz(洛伦茨)吸引子
洛伦茨吸引子是洛伦茨振子(Lorenz oscillator)的长期行为对应的分形结构,以爱德华·诺顿·洛伦茨的姓氏命名. 洛伦茨振子是能产生混沌流的三维动力系统,是一种吸引子,以其双纽线形状而著称. ...
- Java 理论与实践: 修复 Java 内存模型,第 2 部分(转载)
在 JSR 133 中 JMM 会有什么改变? 活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议.在本系列文章的 ...
- 进程池与线程池基本使用、协程理论与实操、IO模型、前端、BS架构、HTTP协议与HTML前戏
昨日内容回顾 GIL全局解释器锁 1.在python解释器中 才有GIL的存在(只与解释器有关) 2.GIL本质上其实也是一把互斥锁(并发变串行 牺牲效率保证安全) 3.GIL的存在 是由于Cpyth ...
- MATLAB 机器人学工具箱(Robotics Toolbox )sl_drivepoint 模型 consecutive zero crossings 问题
操作环境 工具箱:Robotics Toolbox for MATLAB 版本 10.2.1 作者 Peter Corke MATLAB版本:R2018a 操作系统:win10 问题 sl_drive ...
随机推荐
- Spring Cloud OpenFeign 的使用及踩坑指南
目录 Feign 和OpenFeign Feign OpenFeign openFeign的优势 OpenFeign应用 1. 导入依赖 2. 使用 3. 日志配置 4. 数据压缩 OpenFeign ...
- TDD、BDD、ATDD都是什么、有什么区别?(上)
软件开发是一个迭代过程,包括编写.测试和改进代码,直到满足需求.测试驱动开发(TDD).行为驱动开发(BDD)和验收测试驱动开发(ATDD)是支持该过程的三种方法.TDD.BDD和ATDD都是软件开发 ...
- c++中的宏#define用途
宏的一些作用,包括但不限于这些 定义一个变量.字符串.类型 定义一个函数.条件表达式 条件编译.调试信息,异常类 定义结构体.命名空间 定义模版.枚举.函数对象 #define宏定义在C++中用于定义 ...
- Kruskal重构树 学习笔记
Kruskal 重构树 最大生成树将部分内容倒置即可 回顾:Kruskal 基本信息 求解最小生成树 时间复杂度:\(O(m \log m)\) 更适合稀疏图 算法思想 按照边权从小到大排序 依次枚举 ...
- Solution -「SP 106」BINSTIRL
Description Link. 求 \(\begin{Bmatrix}n \\ m\end{Bmatrix}\bmod2\) Solution 求 \[\begin{aligned} \begin ...
- 2023-10-07:用go语言,给定n个二维坐标,表示在二维平面的n个点, 坐标为double类型,精度最多小数点后两位, 希望在二维平面上画一个圆,圈住其中的k个点,其他的n-k个点都要在圆外。
2023-10-07:用go语言,给定n个二维坐标,表示在二维平面的n个点, 坐标为double类型,精度最多小数点后两位, 希望在二维平面上画一个圆,圈住其中的k个点,其他的n-k个点都要在圆外. ...
- Kubeflow基础知识
kubeflow 基础知识 kubeflow 简介 kubeflow是谷歌开源的MLOps开源平台,其中包含的不同组件代表了机器学习生命周期的不同阶段. 下图是kubeflow组织ML工作流程: ku ...
- 14.10 Socket 套接字选择通信
对于网络通信中的服务端来说,显然不可能是一对一的,我们所希望的是服务端启用一份则可以选择性的与特定一个客户端通信,而当不需要与客户端通信时,则只需要将该套接字挂到链表中存储并等待后续操作,套接字服务端 ...
- 配置虚拟主机-部署nginx代理并验证缓存生效
1.虚拟主机的配置: 虚拟主机的作用: 虚拟主机提供了同一台服务器上运行多个网站的功能. 虚拟主机的三种模式: 1)基于域名配置虚拟主机是最常见的一种虚拟主机配置. 只需配置你的DNS服务器,将每 ...
- Python Lambda 用法大全
一.Lambda表达式基础 Lambda 的组成分为三部分 lambda arguments: expression arguments为Lambda表达式的参数列表,多个参数使用逗号分隔:expre ...