MATLAB Language
साधारण विभेदक समीकरण (ODE) सॉल्वर
खोज…
Odeet के लिए उदाहरण
पहले हम अपनी प्रारंभिक मूल्य समस्या को हल करते हैं जिसे हम हल करना चाहते हैं।
odefun = @(t,y) cos(y).^2*sin(t);
tspan = [0 16*pi];
y0=1;
हम इस समस्या को हल करने के लिए किसी भी निर्दिष्ट विकल्प के बिना ode45 फ़ंक्शन का उपयोग करते हैं। इसकी तुलना करने के लिए बाद में हम प्रक्षेपवक्र की साजिश करते हैं।
[t,y] = ode45(odefun, tspan, y0);
plot(t,y,'-o');
अब हम अपनी समस्या के लिए एक संकीर्ण सापेक्ष और सहिष्णुता की एक संकीर्ण निरपेक्ष सीमा निर्धारित करते हैं।
options = odeset('RelTol',1e-2,'AbsTol',1e-2);
[t,y] = ode45(odefun, tspan, y0, options);
plot(t,y,'-o');
हमने सहिष्णुता की तंग सापेक्ष और संकीर्ण पूर्ण सीमा निर्धारित की है।
options = odeset('RelTol',1e-7,'AbsTol',1e-2);
[t,y] = ode45(odefun, tspan, y0, options);
plot(t,y,'-o');
हम सहिष्णुता की संकीर्ण सापेक्ष और तंग पूर्ण सीमा निर्धारित करते हैं। सहिष्णुता की संकीर्ण सीमाओं के साथ पिछले उदाहरणों में, प्रक्षेपवक्र किसी भी विशिष्ट विकल्पों के बिना पहले भूखंड से पूरी तरह से अलग होने को देखता है।
options = odeset('RelTol',1e-2,'AbsTol',1e-7);
[t,y] = ode45(odefun, tspan, y0, options);
plot(t,y,'-o');
हमने सहिष्णुता की चुस्त सापेक्षता और तंग पूर्ण सीमा निर्धारित की है। अन्य भूखंड के साथ परिणाम की तुलना संकीर्ण सहनशीलता सीमा के साथ गणना की गई त्रुटियों को रेखांकित करेगी।
options = odeset('RelTol',1e-7,'AbsTol',1e-7);
[t,y] = ode45(odefun, tspan, y0, options);
plot(t,y,'-o');
निम्नलिखित को सटीक और रन-टाइम के बीच व्यापार-बंद को प्रदर्शित करना चाहिए।
tic;
options = odeset('RelTol',1e-7,'AbsTol',1e-7);
[t,y] = ode45(odefun, tspan, y0, options);
time1 = toc;
plot(t,y,'-o');
तुलना के लिए हम पूर्ण और सापेक्ष त्रुटि के लिए सहनशीलता की सीमा को कस देते हैं। अब हम देख सकते हैं कि परिशुद्धता में बड़े लाभ के बिना हमारी प्रारंभिक मूल्य समस्या को हल करने में काफी लंबा समय लगेगा।
tic;
options = odeset('RelTol',1e-13,'AbsTol',1e-13);
[t,y] = ode45(odefun, tspan, y0, options);
time2 = toc;
plot(t,y,'-o');