2016-10-03 3 views
5

에 ODE 해결 난 폴드 F(v,n,h)=0, v에서 비선형 함수에 대한이 식을 해결하고자 MATLAB 불변 매니

dn/dt=f(n,v) 
dh/dt=g(h,v) 

보이는 시스템을 가지고있다. 나는 v=fzero(@(x) F(x,n,h),0)과 같은 것을 사용하여 각 시간 단계에서 다양체의 v 값을 풀려고했다. 하지만 이것은 매우 느리고 ode15s (내 시스템은 이완 오실레이터 임)는 통합 공차를 충족시키지 못합니다. F(v,n,h)=0으로 정의 된 매니 폴드에서 ODE에 대한 해결책을 찾으려면 어떻게합니까? 이 문제를 해결하기 위해 가능한 방법의

+1

시스템은 차동 대수입니다. DAE 솔버를 사용해야합니다. – LutzL

답변

2

@ LutzL의 의견은 매우 유용합니다. ode15s을 사용하여 DAE 솔버를 설정할 수 있습니다. 예 :이 "세미 명시 미분 대수 방정식으로 로버트슨 문제를 해결 (DAE에)"제 경우 https://www.mathworks.com/help/matlab/ref/ode15s.html

섹션은, 설정 매트릭스 것 I :

M=[zeros(1,3);0,1,0;0,0,1]; 
options = odeset('Mass',M,'RelTol',1e-5,'AbsTol',1e-6,'MaxStep',0.01); 
y0=[v0,n0,h0]; 
[T,Y]=ode15s(@slow,[0 50],y0,options); 

그리고 slow 같이 정의 함수 :

function dy = slow(t,y) 
    v=y(1); n=y(2); h=y(3); 
    dy=zeros(3,1); 
    dy(1)=F(v,n,h); 
    dy(2)=f(n,v); 
    dy(3)=g(h,v); 
end 
0

하나는 에게 F(v,n,h)=0 방정식을 구별하는 것입니다

지금 우리는 ODE 시스템을 얻을 수를

또는

이는 일반적인 방법으로 해결할 수 있습니다.

+0

나는이 방법을 시도했다. 그러나, dF/dv 항은 시스템의 폴드 구조 근처에서 0에 매우 가깝다. 따라서 솔루션 정밀도가 좋지 않습니다. – Badoe