Lorzen混沌方程求解-ode45

ode45函数

ode45是matlab中的求解微分方程数值解的函数,使用语法为:
[t,y] = ode45(odefun,tspan,y0)
[t,y] = ode45(odefun,tspan,y0,options)
[t,y,te,ye,ie] = ode45(odefun,tspan,y0,options)
sol = ode45(___)

odefun需要在函数中编写好,以lorzen混沌方程为例

function dydt = lorenz_diff(t,y)
dydt = [ -10*(y(1)-y(2));
          30*y(1)-y(1)*y(3)-y(2);
          -8/3*y(3)+y(1)*y(2)];

调用ode45函数进行求解

clear
clc
y0 = [0,2,9];          
[t,y] = ode45(@lorenz_diff,[0,200],y0); 
plot(y(:,1),y(:,3),'-');
grid on;

lorzen系统相位图在这里插入图片描述

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Lorenz问题是混沌理论的经典问题,可以通过常微分方程函数 ode45 来求解。其方程组为: dx/dt = σ(y - x) dy/dt = x(ρ - z) - y dz/dt = xy - βz 其中,σ、ρ、β 是常数,可以根据问题的具体要求进行设定。为了求解这个方程组,需要先编写一个 MATLAB 函数,用于计算方程组右侧的函数值: ``` function dydt = lorenz(t, y, sigma, rho, beta) % Compute the right-hand side of the Lorenz system of ODEs dydt = zeros(3,1); dydt(1) = sigma * (y(2) - y(1)); dydt(2) = y(1) * (rho - y(3)) - y(2); dydt(3) = y(1) * y(2) - beta * y(3); end ``` 其中,t 是时间变量,y 是状态向量,sigma、rho、beta 是常数。函数返回一个列向量 dydt,其三个分量分别对应于方程组的三个方程。 接下来,可以使用 ode45 函数来求解 Lorenz 方程组: ``` % Set the parameters sigma = 10; rho = 28; beta = 8/3; % Set the initial conditions y0 = [0; 1; 0]; % Set the time interval tspan = [0, 50]; % Solve the ODEs using ode45 [t, y] = ode45(@(t,y) lorenz(t,y,sigma,rho,beta), tspan, y0); % Plot the solution plot3(y(:,1), y(:,2), y(:,3)) xlabel('x') ylabel('y') zlabel('z') ``` 在上述代码中,首先设置了 Lorenz 方程组的参数、初始条件和求解时间区间。然后,使用 ode45 函数来求解方程组,并将结果存储在 t、y 变量中。最后,通过 plot3 函数将解 y 在三维空间中的轨迹绘制出来。 需要注意的是,由于 Lorenz 方程组是一个混沌系统,其解在时间上的演化是高度敏感的,因此可能需要尝试不同的初始条件和参数取值才能得到符合要求的解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DDD铩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值