在发布实际代码之前,让我告诉您我的计算机的处理器和内存信息是否正常:
昨天我发布了Lorenz方程式(混沌理论中的经典方程式),其中一个伟大的人帮助我并展示解决方案,这里是:
function f=lorenz(t,x,a,b,c)
% solve differential equation like this
%dx/dt=a*(y-x)
%dy/dt=-x*z+b*x-y
%dz/dt=xy-c*z/3
f=zeros(3,1);% preallocate result
f(1)=a*(x(2)-x(1));
f(2)=-x(1)*x(3)+b*x(1)-x(2);
f(3)=x(1)*x(2)-c*x(3)/3;
end
和测试程序(脚本):
% test program
x0=[-2 -3.5 21];% initial point
a=input(' enter first coefficient : ');
b=input(' enter second coefficient: ');
c=input(' enter third coefficient : ');
[t,x] = ode45(@(t,x) lorenz(t,x,a,b,c),[0 10],x0);
plot(t,x(:,1),'r');
title(' solution of x part');
grid on
但在运行这些线之后
test_program
enter first coefficient : 10
enter second coefficient: 28
enter third coefficient : -8
它还在运行,他说在他的个人电脑上需要2秒钟,所以真的很奇怪会发生什么?为什么不在我的电脑上编译?即使你看到它我的笔记本电脑有很好的参数,请帮助我 - 即使现在它正在运行所以我应该使用ctrl-c取消。
答案 0 :(得分:7)
您的问题是<script src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=[KEY]" type="text/javascript"></script>
开始划分时间步长,并且在6秒后它变得非常小(ode45
和1e-5
) - 它1e-6
迭代达到10秒!
所以有两个重要时刻:
首先,没有必要使用29 388 481
时间间隔。你可以在情节中看到你很早就得到了解决方案。
您的方法对系数非常敏感:我尝试使用系数[0 10]
,a
和b
的其他值,并在几秒钟内计算出来。