ode45 not enough input argument
    7 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    saramatlab
 am 8 Sep. 2014
  
    
    
    
    
    Bearbeitet: saramatlab
 am 9 Sep. 2014
            Hi everyone, i have a problem with an ode function, i show you the code:
%Ode function:
function dTdt=ode1(t,T,d,e)
dTdt=d-e*T
return
%main code
T0=293;
T1=400;
Tf2=293;
a=0.2;
tchange=(T1-T0)/a;
for t=1:(tchange)+1
    Tf(t)=T0+a*(t-1);
    d=(Tf(t)-Tf2)/(R*C)
    e=-2/(R*C)
[t,T] = ode45(ode1,[0 336],293,d,e)
end
Matlab says to me:
Error using ode1 (line 2) Not enough input arguments.
Error in Untitled (line 27) [t,T] = ode45(ode1,[0 336],293,d,e)
i know that i have to put some value for d and e, but how can i do if they change every step because they are in a for cycle? What else is wrong? Please please help me, i can't do anything by myself!
0 Kommentare
Akzeptierte Antwort
  Mischa Kim
    
      
 am 8 Sep. 2014
        saramatlab, use
 function my_ode()
 %main code
 T0  = 293;
 T1  = 300;
 Tf2 = 293;
 a   = 0.2;
 R   = 1;   % not defined in your code
 C   = 1;   % not defined in your code
 tchange = (T1-T0)/a;
 for ii = 1:(tchange)+1
    Tf(ii) = T0 + a*(ii-1);
    d      = (Tf(ii) - Tf2)/(R*C);
    e      = -2/(R*C);
    % d and e need to be passed as parameters
    [t,T]  = ode45(@ode1,[0 336],293,[],[d,e]);
 end
 end
 function dTdt = ode1(t,T,param)
 d    = param(1);
 e    = param(2);
 dTdt = d - e*T;
 end
Put both functions in the same function file and name it my_ode.m. The code is in no way optimized, but runs properly.
1 Kommentar
Weitere Antworten (2)
  Andy L
      
 am 8 Sep. 2014
        
      Bearbeitet: Andy L
      
 am 8 Sep. 2014
  
      You need to vectorise your inputs to ode1 as below:
%Ode function:
function dTdt = ode1(t,T,d,e)
becomes
function dTdt = ode1(t,Y)
Y(1) = T;
Y(2) = d;
Y(3) = e;
3 Kommentare
  Andy L
      
 am 8 Sep. 2014
				A few things to consider:
- When is T declared?
- When is Y declared?
- Should T be a vector?
- How are you storing the results of your optimisations?
Siehe auch
Kategorien
				Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


