2017-02-20 1 views
2

소요, 내 컴퓨터의 프로세서 및 메모리 정보 좋은 있음을 보여 드리죠 좋은 사람 중 하나가 저와 쇼에게 솔루션을 도움이 혼돈 이론), 여기있다 :솔루션은 실제 코드를 게시하기 전에 상당한 시간을

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 

및 테스트 프로그램 (스크립트) :

그런 일이 정말로 이상하다 그래서

하지만 여전히 실행, 그는 자신의 개인 컴퓨터에, 그것은 2 초를 소요했다고한다 그 라인을

test_program 
enter first coefficient : 10 
enter second coefficient: 28 
enter third coefficient : -8 

를 실행 한 후

% 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 
? 왜 내 PC에서 컴파일되지 않습니까? 비록 당신이 그것을 보았더라도 나의 노트북은 좋은 매개 변수를 가지고 있습니다. 제발 도와주세요 - 지금도 실행 중이므로 ctrl-c를 사용하여 취소해야합니다.

+0

[0 10] 거대한 시간 –

+0

, 여기에 동일한 Windows 8 및 matlab에 2015b를 복용에 대한 이유입니다. '[0 8]'에 대해서는 9.2 초가 걸리고, 그 후에는 "영원히" –

답변

7

나는 당신의 조건에 대한 솔루션을 가지고 : enter image description here

귀하의 경우 문제는 6 초 후 시간에 (1e-51e-6)를 ode45 시작은 타임 스텝을 분할하고 정말 작은 된 것은 - 그것은 29 388 481 반복했다 10 초를 달성! 모든

  1. 첫째는 [0 10] 시간 간격을 사용할 필요가 없습니다 :

    그래서 두 가지 중요한 순간이있다. 플롯에서 솔루션을 훨씬 빨리 얻을 수 있습니다. I 계수 a, bc과 다른 값을 사용하는 시도는 몇 초 계산 :

  2. 내 방법 계수 성이다. 내가 그렇게 큰 간격을 언급하고 싶은

+0

미리 감사드립니다. –

관련 문제