2010-05-08 2 views
1

Я использую Scilab, и я пытаюсь сделать такую ​​функцию следующим:Как передать функцию в качестве аргумента

function p = binary_search(myf,a,b) 

Цель состоит в том, чтобы сделать binary_search найти такой р, что: MYF (p) = 0 в [a, b].

я хочу коснуться, как это:

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

Если первая строка является определение функции.

Единственный способ, которым я нашел является определение функции под названием x3:

функция х = х3 (р)

x = p^3 - 10; 

EndFunction

, а затем, внутри binary_search, сделать что-то вроде:

fa = x3(a); 

Любые идеи?

Спасибо!

ответ

0

Я нашел решение: В главном окне (интерпретатор), я определяю функцию как:

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

Затем я называю

bi(square,0,2) 

В функции, я просто 'f (x)':

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

Функции в Scilab могут передаваться как аргументы для других функций ионов. Поэтому, если у вас есть одна функция, е:

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

вы можете передать, что другой функции,

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

DeFF это просто способ быстро определить FUNCTION- обычно встроенный на переводчика ,

В качестве альтернативы, вы можете также передать выражение в виде строки функции и имеют, что оценивали с помощью команды evstr:

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

Вы бы осуществить это на переводчика, таким образом:

expression = "a^3 - 10" 

root = binary_search(expression, 1, 2)