📄 lorenzsystembyinline.m
字号:
%怎么求解变参数lorenz方程,比如,改变参数r,使r的取值在0.1到30之间,步长去为0.1,将结果放入一个细胞数组中。直接用ode45好像不能向里面传递参数,还有什么其他的方法解决么?
%程序如下:
% 经过简单的修改,本程序也可以求解类似的变参数的微分方程系统。
% 关于求解变参数lorenz方程
fun=inline(['[-b*x(1)+x(2)*x(3);',...
'-xigma*(x(2)-x(3));',...
'r*x(2)-x(3)-x(1)*x(2)]'],...
't','x','flag','xigma','r','b');
xigma=10;b=8/3;
rr=0.1:.1:3;
Data_T=cell(length(rr),1);
Data_X=cell(length(rr),1);
tspan=[0,10];
x0=[0,0,1e-10];
for k=1:length(rr);
r=rr(k);
[T,X]=ode45(fun,tspan,[0,0,1],[],xigma,r,b);
Data_T(k)={T};
Data_X(k)={X};
end
p=randperm(length(rr));p(2:end)=[];
plot(cell2mat(Data_T(1)),cell2mat(Data_X(1)));
title(['p=',num2str(p)]);
A=cell2mat(Data_X(p));
figure;plot3(A(:,1),A(:,2),A(:,3));
title(['p=',num2str(p)]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -