2

私はScilabを使用しており、次のような関数を作成しようとしています:

function p = binary_search(myf,a,b)

目標は、[a,b] で次のbinary_searchような p を見つけるために a を作成することです。myf(p) = 0

私はこのようなことをしたい:

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

最初の文字列は関数の定義です。

私が見つけた唯一の方法は、という関数を定義することですx3:

function x = x3(p)
x = p^3 - 10;
endfunction

そして、 の中binary_searchで、次のようなことを行います:

fa = x3(a);

何か案は?

ありがとう!

4

3 に答える 3

1

Scilab の関数は、引数として他の関数に渡すことができます。したがって、関数が 1 つある場合、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)
于 2010-05-15T19:34:37.917 に答える
0

解決策を見つけました: メイン ウィンドウ (インタープリター) で、次のような関数を定義します。

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

それから、私は電話します

 bi(square,0,2)

関数では、「f(x)」を実行するだけです。

function [x] = bi(f,a,b)
    fa = f(a);
于 2010-05-10T09:34:15.003 に答える