2016-10-03 6 views
5

पर स्तोत्र का समाधान मैं एक सिस्टम लग रहा है किMATLAB अपरिवर्तनीय कई गुना

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

मैं कई गुना F(v,n,h)=0, v में एक nonlinear समारोह पर इस समीकरण को हल करना चाहते हैं। मैंने प्रत्येक बार चरण में कई गुना पर v के मान को हल करने के लिए v=fzero(@(x) F(x,n,h),0) जैसे कुछ उपयोग करने का प्रयास किया। लेकिन यह अविश्वसनीय रूप से धीमा है और ode15s (मेरी प्रणाली एक विश्राम ओसीलेटर है) एकीकरण सहनशीलता को पूरा करने में विफल रहता है। F(v,n,h)=0 द्वारा परिभाषित कई गुना पर ओडीई का समाधान कैसे प्राप्त करूं?

+1

आपको एक डीएई सॉल्वर को नियोजित करना चाहिए, क्योंकि आपका सिस्टम अंतर-बीजगणितीय है। – LutzL

उत्तर

2

मुझे @ LutzL की टिप्पणी बहुत उपयोगी लगता है। ode15s का उपयोग कर एक डीएई सॉल्वर स्थापित करना संभव है। उदाहरण: "अर्द्ध स्पष्ट विभेदक बीजीय समीकरणों के रूप में रॉबर्टसन समस्या का समाधान (DAEs)" https://www.mathworks.com/help/matlab/ref/ode15s.html

मेरे मामले में अनुभाग में, मैं एक मैट्रिक्स सेटअप होगा:

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 समीकरण है:

अब हम स्तोत्र प्रणाली प्राप्त कर सकते हैं

या

जिसे सामान्य तरीके से हल किया जा सकता है।

+0

मैंने इस तरह से प्रयास किया है। हालांकि, डीएफ/डीवी प्रणाली प्रणाली में एक गुना संरचना के करीब 0 के करीब हो जाती है। इसलिए समाधान परिशुद्धता बहुत अच्छी नहीं है। – Badoe

संबंधित मुद्दे