Parameter that depends on a State Variable

1 Ansicht (letzte 30 Tage)
Ghazwan
Ghazwan am 11 Okt. 2016
Kommentiert: Ghazwan am 11 Okt. 2016
Hello, I have the following main code
clear all;
global a1 b1 c1 P0 Sr2
a1=0.01; b1= 4.13; c1=1.250; Sr2=24.83683
P0=5;
x0=35;
[tt,xa]=ode45(myodefun,[0:0.01:7],x0);
and the myodefun function is
function FF=myodefun(t,x)
global Ptr Sr2 a1 b1 c1
Ptr1=x-5.5;
Ptr=Ptr1;
fun = @ff1; % function
x0 = 2; % initial point
V1 = fzero(fun,x0);
R=Sr2./(V1.^2); C=1./(a1.*c1.*exp(c.*V1)+b1./V1);
FF=(2./(R.*C)).*(110-2.*x);
And the other ff1 function is
function y = ff1(V)
global a1 b1 c1 P0 Ptr
y = a1*exp(c1*V)+b1*log(c1*V)-P0-Ptr;
As you can see that V1 depends on the calculations of the state variable x. When I run the code, I get the following error:
Not enough input arguments.
Error in myodefun (line 5)
Ptr1=x-5.5;
Error in Out (line 6)
[tt,xa]=ode45(myodefun,[0:0.01:7],x0);
I can not find where the problem is! Even though I did it several time before for different problems! I do not know what it means by not enough input arguments.
Thanks in advance.

Akzeptierte Antwort

James Tursa
James Tursa am 11 Okt. 2016
Bearbeitet: James Tursa am 11 Okt. 2016
In this line:
[tt,xa]=ode45(myodefun,[0:0.01:7],x0);
The 1st argument to ode45 is myodefun, which is a call to the function myodefun without any arguments. So when you get into myodefun and hit the line with the x, x was not passed in hence the error. To fix this, pass in a function handle to myodefun:
[tt,xa]=ode45(@myodefun,[0:0.01:7],x0);

Weitere Antworten (0)

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by