simple question function file syntax

3 Ansichten (letzte 30 Tage)
B
B am 5 Mai 2015
function[root,ea,iter]=bisectt(func,xl,xu,es,maxit,varargin)
if nargin <3,
disp('error')
end
test=func(xl,varargin{:})*func(xu,varargin{:});
if test>0,
disp('error')
end
if test>0,error('no sign change'),end
if nargin<4|isempty(es), es=0.0001;end
if nargin<5|isempty(maxit), maxit=50;end
iter = 0; xr = xl; ea = 10;
while (1)
xrold = xr;
xr = (xl + xu)/2;
iter = iter + 1;
if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end
test = func(xl,varargin{:})*func(xr,varargin{:});
if test < 0
xu = xr;
elseif test > 0
xl = xr;
else
ea = 0;
end
if ea <= es | iter >= maxit,break,end
end
root = xr;
I need to create another function file to calculate f(xl), f(xr), f(xu) how can i do that? the function is:
sqrt((9.81*x)/0.25)*tanh(sqrt((9.81*0.25)/x)*4)
thanks for your help!

Akzeptierte Antwort

Michael Haderlein
Michael Haderlein am 5 Mai 2015
You can use anonymous functions:
f=@(x) sqrt((9.81*x)/0.25).*tanh(sqrt((9.81*0.25)./x)*4);
Then, f(xr) will return the respective value and f([xl xr xu]) will return all 3 values.
  2 Kommentare
B
B am 5 Mai 2015
I'm still getting an erro. the syntax I'm using is wrong. can you provide me with the correct function file for sqrt((9.81*x)/0.25).*tanh(sqrt((9.81*0.25)./x)*4) that will evaluate the three variables xl,xu,xr
Michael Haderlein
Michael Haderlein am 6 Mai 2015
Ah, you want an extra file for that. Then the syntax is just
function res=myfunctionname(x)
res=sqrt((9.81*x)/0.25).*tanh(sqrt((9.81*0.25)./x)*4);
Put this in a file named myfunctionname.m, that's all.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 6 Mai 2015
f=@(x) sqrt((9.81*x)/0.25).*tanh(sqrt((9.81*0.25)./x)*4);
[A,B,C] = bisectt(f, -10, 10);
to do the calculation over -10 to +10

Kategorien

Mehr zu Performance and Memory 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!

Translated by