मुझे निम्नलिखित विलंबित समीकरण को हल करने की आवश्यकता है:

Xdot = A*x(t) + B*U(t) + E(t)
U(t) = K*S*x(t-0.02) or U(t) = K*S*x(t-0.02)/alpha

जिसमें:

A: 6*6 matrix 
K and alpha are scalar
S: 1*6 vector
E and U and x and B: 6*1 vectors.

मैं समीकरण को हल करने के लिए निम्नलिखित कोड का उपयोग कर रहा हूं:

for i = 2:2688 
if  %(first condition ok)
    sol = dde23(@Insectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);
else
    sol = dde23(@Outsectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);                                                                                                          
end
x(:,i)=sol.x
history(i+2) = x(:,i); 
end

निम्नलिखित फ़ंक्शन फ़ाइलों के साथ:

function xdot = Insectorforce(t,y,z,A,B,S,E,K,Beta,P)
  xdot = (A*y) - ((B*K*S/alpha)*(z)) + E;
end

तथा

function xdot = Outsectorforce(t,y,z,A,B,S,E,K)
  xdot = (A*y) - ((B*K*S*z) + E;
end

हालांकि, मुझे निम्न त्रुटि मिलती है:

Error using Outsectorforce (line 2)
Not enough input arguments.

Error in dde23 (line 217)
f0 = feval(ddefun,t0,y0,Z0,varargin{:});

Error in filename (line 101)
sol = dde23(@Outsectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);

मेरे कोड में क्या गलत है? मुझे आयामों की समस्या नहीं है और मैंने बिना देर किए ode23 के साथ इस समीकरण को हल कर दिया। हालांकि, मैं इसे dde23 या ddesd का उपयोग करके हल करने का प्रबंधन नहीं कर सकता।

1
Cena 30 जून 2017, 10:25

1 उत्तर

सबसे बढ़िया उत्तर

dde23 को तीन तर्कों के साथ फ़ंक्शन हैंडल की आवश्यकता होती है। कोशिश

sol = dde23(@(t,y,z)(Insectorforce(t,y,z,A,B,S,E,K,Beta,P)),0.02,history(:,i-1),[time(i-1) time(i)]);

तथा

sol = dde23((@(t,y,z)(Outsectorforce(t,y,z,A,B,S,E,K)),0.02,history(:,i-1),[time(i-1) time(i)]);

क्रमश।

2
Loamsiada 30 जून 2017, 10:37