I found this code in an article and tried to run it on my 2014 matlab, but it is giving error on ODE45. The functions are in different programs, but in the same folder. I can't run it. Can someone help me?
function Q=q(t)global QstarDQ=1;Q=Qstar+DQ;endfunction Hdot=hdot(t,H)global RHO G A1 A2 Hstar QstarQ=q(t);k1=-A2*sqrt(2*G)/A1;k2=1/RHO/A1;Hdot=k1*sqrt(H)+k2*Q;end%Physical constants
global RHO G A1 A2 Hstar QstarRHO=1000; %(kg/m3)
G=9.8; %(m/sec2)
A1=pi/4; A2=pi/400; %(m2)
Hstar=1; %(m)
Qstar=34.7711; %(kg/sec)
% Nonlinear step response
t0=0; %Initial time (sec)
tf=300; %Final time (sec)
H0=Hstar; %Steady-state value (m)
[tn,H] = ode45('Hdot',t0, tf, H0);DHn=H-Hstar; % Subtract Hstar to obtain DH
% Linear step response
t=0:0.1:300;k2=1/RHO/A1;Omega=A2^2*G*RHO/A1/Qstar;num=k2; den=[1 Omega];DH=step(num,den,t);% Plot results in centimeters (cm)
plot(t,100*DH,tn,100*DHn,'--'); gridxlabel('Time (sec)'), ylabel('DH (cm)')
Best Answer