function [ Xs ] = RegulaRaiz( Fun,a,b,ErrMax )
imax=100;
Fa= Fun(a)
Fb=Fun(b)
The code for fun is:
function y = Fun(x)
y = (sin(x)/(3*x))-0.25;
end
If I call the function as RegulaRaiz( 'Fun',1,2,0.0001 )
Fa becomes f and fb becomes u, how do i fix this?

 Akzeptierte Antwort

michio
michio am 21 Sep. 2016

3 Stimmen

The first input 'Fun' to the function RegulaRaiz is 1x3 char, 'Fun'. So Fa = Fun(1) is f and, Fb = Fun(2) = u.
Could you try
RegulaRaiz(@(x) Fun(x),1,2,0.0001)
instead? Specify the function as an input using a function handle @(x) Fun(x).

2 Kommentare

Vitor Braz
Vitor Braz am 21 Sep. 2016
Thank you!
Jan
Jan am 21 Sep. 2016
Or simpler and faster:
RegulaRaiz(@Fun,1,2,0.0001)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Adam
Adam am 21 Sep. 2016
Bearbeitet: Adam am 21 Sep. 2016

1 Stimme

Why are you naming a variable passed to your function the same as a function? The string you pass in as the variable 'Fun' is hiding the function so
Fa= Fun(a);
is trying to index into 'Fun' so Fun(a) is Fun(1) which is 'F' and Fun(b) is Fun(2) which is 'u'.

Kategorien

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by