simple question function file syntax

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!

 Accepted Answer

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 Comments

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
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.

Sign in to comment.

More Answers (1)

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

Categories

Find more on Performance and Memory in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!