2010-05-08 8 views
1

J'utilise Scilab et je suis en train de faire une fonction comme ce qui suit:Comment passer une fonction comme argument

function p = binary_search(myf,a,b) 

L'objectif est de faire un binary_search de trouver un tel p que: myf (p) = 0 dans [a, b].

Je veux faire someting comme ceci:

root = binary_search("x^3 - 10",1,2) 

Lorsque la première chaîne est une définition d'une fonction.

La seule manière que je trouvais définit une fonction appelée x3:

fonction

x = x 3 (p)

x = p^3 - 10; 

endfunction

puis, à l'intérieur binary_search, faire quelque chose comme:

fa = x3(a); 

Toutes les idées?

Merci!

Répondre

0

J'ai trouvé une solution: Dans la fenêtre principale (l'interprète), je définit la fonction comme:

deff('[y] = square(x)','y=x^2') 

Puis, je l'appelle

bi(square,0,2) 

Dans la fonction, je fais juste 'f (x)':

function [x] = bi(f,a,b) 
    fa = f(a); 
0

Les fonctions de Scilab peuvent être transmises comme arguments à d'autres fonctions. ions. Par conséquent, si vous avez une fonction, f:

function y=f(x) 
    y = x^3 - 10  
endfunction 

vous êtes libre de passer à une autre fonction que,

root = binary_search("x^3 - 10",1,2) 

deff est simplement une façon de définir rapidement une Fonction- habituellement en ligne sur l'interpréteur .

Vous pouvez également passer une expression comme une chaîne à une fonction et ont évalué que l'aide de la commande evstr:

function p = binary_search(expression, a, b) 
    evstr expression 
    //Rest of your code 
endfunction 

Vous mettrait en oeuvre ce sur l'interprète ainsi:

expression = "a^3 - 10" 

root = binary_search(expression, 1, 2) 
Questions connexes