2010-05-08 87 views
1

我使用Scilab的,我試圖讓像下面這樣的函數:如何通過一個函數作爲參數

function p = binary_search(myf,a,b) 

目標是讓binary_search找到這樣的p即:山羊myf( p)= 0 in [a,b]。

我想做些事情是這樣的:

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

當第一個字符串是一個函數的定義。

我發現是定義一個函數調用X3的唯一方法:

函數x = X 3(P)

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中的函數可以作爲參數傳遞給其他函數離子。因此,如果你有一個函數f:

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

你可以自由地傳遞到另一個函數,

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

DEFF是一個簡單的方法來對解釋快速定義功能 - 通常內嵌。

或者,你也可以傳遞一個表達式作爲字符串的函數,有使用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) 
相關問題