# Parameter that depends on a State Variable

조회 수: 1 (최근 30일)
Ghazwan 2016년 10월 11일
댓글: Ghazwan 2016년 10월 11일
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.

댓글을 달려면 로그인하십시오.

### 채택된 답변

James Tursa 2016년 10월 11일
편집: James Tursa 2016년 10월 11일
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);
##### 댓글 수: 1이전 댓글 -1개 표시이전 댓글 -1개 숨기기
Ghazwan 2016년 10월 11일
Thank you James! It worked like magic!

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Whos에 대해 자세히 알아보기

### Community Treasure Hunt

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

Start Hunting!

Translated by