庞加莱截面的c语言编程,画Lorenz庞加莱截面图的程序

% 画Lorenz庞加莱截面图的程序

LorenzDiEqn2=inline(['[-10*(x(1)-x(2));',...

'-x(1)*x(3)+28*x(1)-x(2);',...

'x(1)*x(2)-8/3*x(3)]'],'t','x');

clc;

% function dx = LorenzDifEqn2(t,x);

% Lorenz系统微分方程

% 方程如下:

% dx = -σ*(x-y)

% dy = -x*z+r*x-y

% dz = x*y-b*z

% sigma = 10;

% b = 8/3;

% r = 20;

% d_x = -sigma*(x(1)-x(2));

% dy = -x(1)*x(3)+r*x(1)-x(2);

% dz = x(1)*x(2)-b*x(3);

% dx = [d_x;dy;dz];

% Poincare_section[绘制庞加莱截面图]

[t,x]=ode45(LorenzDiEqn2,[0,100],[0.1,0.1,10])

figure

plot3(x(:,1),x(:,2),x(:,3))

%figure

%plot(t,x(:,2))

%figure

%plot(t,x(:,3))

z0=28; % 选择z0=28这个截面

j = 0;

for k = 1:length(x(:,3))-1

d1 = x(k,3)-z0;

d2 = x(k+1,3)-z0;

if abs(d1)<1e-8

j = j+1;

X1(j) = x(k,1);

X2(j) = x(k,2);

continue;

end

if sign(d1)*sign(d2)<0

j = j+1;

Q=polyfit([x(k,3),x(k+1,3)],[x(k,1),x(k+1,1)],1);

X1(j)=polyval(Q,z0);

Q=polyfit([x(k,3),x(k+1,3)],[x(k,2),x(k+1,2)],1);

X2(j)=polyval(Q,z0);

end

end

figure

plot(X1,X2,'.');

xlabel('\x','fontsize',14);

ylabel('d\y','fontsize',14);

%

作此截面图时,其本质是当非线性系统进行角动量作用变换后,可以在环面上讨论系统的性质。

%

环面是指类似轮胎内胎的一个东西,而轨线在环面上运动,这种运动是复杂的,

%

包含绕环中心的运动(公转)和绕截面圆心的运动(类似自转);如果这些有两种频率,

% 分别为a

,b,当a/b为有理数时,它们最终会首尾结合到一起,从而形成一个圈。

%

因此,截面上只会留下一个点,这个点是轨线穿越截面时留下的;当两种频率之比(旋转数)为无理数时,

%

两轨线永不相交,这时截面上留下一个圆的痕迹,所以所拟周期的Poincare截面图是一个圆。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 庞加莱截面图是一种用于描述系统动力学特性的方法,是非线性动力学中常用的方法。它可以显示相空间中轨迹的结构,对于揭示动力学系统的混沌现象非常重要。 在Matlab中,可以使用ode45函数或其他求解微分方程的函数来计算轨迹,并使用plot函数生成庞加莱截面图。例如,我们可以定义一个函数来求解著名的洛伦兹方程,并将其结果绘制到庞加莱截面上。 函数定义如下: function [t,x,y,z]=lorenz(tspan,x0,p) % Lorenz equations % x' = p(1)*(y-x) % y' = x*(p(2)-z)-y % z' = x*y-p(3)*z [t,x]=ode45(@(t,x) [p(1)*(x(2)-x(1)); x(1)*(p(2)-x(3))-x(2);x(1)*x(2)-p(3)*x(3)],tspan,x0); y=x(:,2); z=x(:,3); end 然后,我们可以生成两个初始条件对应的轨迹,并将它们绘制到庞加莱截面图上。 tspan = [0 100]; p = [10 28 8/3]; x0 = [1 0 0]; [t1,x1,y1,z1] = lorenz(tspan,x0,p); figure(1) plot3(x1(1:100:end),y1(1:100:end),z1(1:100:end),'b.','MarkerSize',1) hold on x0 = [1e-4 0 0]; [t2,x2,y2,z2] = lorenz(tspan,x0,p); plot3(x2(1:100:end),y2(1:100:end),z2(1:100:end),'r.','MarkerSize',1) 从图中可以看出,庞加莱截面图清晰地显示了洛伦兹方程的混沌结构。当轨迹经过一个截面时,就会在图上留下一个点。通过查看这些点的分布,我们可以得到系统的混沌特性。 ### 回答2: 庞加莱截面图是描述相空间中的轨迹分布情况的重要工具,其可以帮助我们深入理解物理系统的动力学行为。而在matlab中,我们可以利用庞加莱截面图的绘制函数来清晰地展现系统的相空间轨迹图。 庞加莱截面图的绘制函数包含两部分:第一部分是出相空间轨迹图,第二部分则是在相空间图上庞加莱截面线。 首先,我们需要定义相空间轨迹。这可以通过差分方程或微分方程模型进行定义。我们可以使用ODE求解器来求解微分方程,将计算出的轨迹保存在一个数组中。接着,我们可以使用scatter函数来绘制相空间轨迹图。 其次,我们需要定义庞加莱截面线。庞加莱截面通常是一条穿过相空间图的平面或者多面体曲面。我们可以使用plot函数在相空间图上庞加莱截面线。 最后,我们需要将出的相空间图和庞加莱截面线进行合并,以完成庞加莱截面图的绘制。这可以通过hold on函数来实现。 绘制庞加莱截面图需要一定的编程基础和物理知识,但是在matlab中可以找到丰富的工具包和资源库进行参考。掌握庞加莱截面图的绘制方法,不仅可以对物理系统的动力学行为进行深入理解,还可以为工程实践提供有用的参考。 ### 回答3: 庞加莱截面图是描述多维动力学系统的一种可视化方法。庞加莱截面图matlab程序是指利用matlab软件实现庞加莱截面图的绘制。 庞加莱截面图以时间相等的切片为基础,可以在三维空间中进行可视化。庞加莱截面图通常用于表示各种动力学系统的分岔现象和混沌现象。庞加莱截面图matlab程序是利用matlab软件编写的程序,可以绘制各种系统的庞加莱截面图庞加莱截面图matlab程序的编写需要一定的技术和知识。首先需要了解庞加莱截面图的基本概念和应用场景,其次需要了解matlab软件的使用方法和相关工具箱的函数。程序的编写主要涉及数据预处理、庞加莱截面图的生成和图像显示等步骤。 庞加莱截面图matlab程序具有很高的实用价值,可以帮助研究者更好地理解多维动力学系统的复杂性和非线性性质。其应用范围涵盖物理学、力学、生物学、化学等多个领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值