2010-02-13 28 views
9

मैं निम्नलिखित कार्य हो:MATLAB: मैं फ़ंक्शन में पैरामीटर कैसे पास करूं?

function ypdiff = ypdiff(t,y) 
    a = 0.01; 
    b = 0.1; 
    ypdiff(1) = -a*y(1)*y(2); 
    ypdiff(2) = b*y(1)*y(2)-b*y(2); 
    ypdiff(3) = b*y(2); 
    ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]'; 

मैं इस को हल करना चाहते हैं, तो मैं ode45 समारोह के रूप में इस कहेंगे:

[t y] = ode45(@ypdiff, [to tf], yo); 

लेकिन मैं इस समारोह के लिए एक पैरामीटर पारित करने के लिए चाहते हैं, मैं ode45 फ़ंक्शन का उपयोग कैसे करूं? विशेष रूप से, मैं निम्नलिखित तैयार करने के लिए कोशिश कर रहा हूँ:

function ypdiff = ypdiff(t,y,u) 
    a = 0.01; 
    b = 0.1; 
    ypdiff(1) = -a*u*y(1)*y(2); 
    ypdiff(2) = b*u*y(1)*y(2)-b*y(2); 
    ypdiff(3) = b*u*y(2); 
    ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]'; 

उत्तर

8

आप matlab में एक anonymous function (अन्य भाषाओं में लैम्ब्डा कार्यों के लिए इसी तरह) का उपयोग कर सकते हैं:

u = 1.2; 
[t y] = ode45(@(t, y) ypdiff(t, y, u), [to tf], yo); 
+0

महान ... धन्यवाद एक बहुत .. हालांकि , जब तक मैंने ':' चरित्र – Legend

+0

हाँ हटा दिया, तब तक मैं इसे काम नहीं कर सका, यह एक टाइपो था, क्षमा करें;) – catchmeifyoutry

+0

ओह ... स्पष्टीकरण के लिए धन्यवाद :) – Legend

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