2017-09-19 11 views
0

私は数値計算クラスを取っています。シラバスのプログラミングを知る必要はありません。ほとんどの場合理論的なので、小冊子を通して教えられます。私は小冊子を読んでいました。このシラバブのコードは、解剖方法によって機能の根源を見つけることを意味していました。 問題は、動作させる方法が見つからないということです。私はbissecao(x,-1,1,0.1,40)でそれを呼び出そうとしましたが、うまくいきませんでした。私が得た エラーだった:私は非常にコード自体が機能していないことを疑うとシラバブに関する基本的な質問

at line  3 of function bissecao (E:\Downloads\bisseccao3.sce line 3) 

Invalid index. 

、と私は無駄に、間違ったように見えた私は見つけることができ何を検索してみました、私はおそらくだと思います何とかそれを間違って呼びます。

コードは、以下である:

function p = bissecao(f, a, b, TOL, N) 
i = 1 
fa = f(a) 
while (i <= N) 
    //iteraction of the bissection 
    p = a + (b-a)/2 
    fp = f(p) 
    //stop condition 
    if ((fp == 0) | ((b-a)/2 < TOL)) then 
    return p 
    end 
    //bissects the interval 
    i = i+1 
    if (fa * fp > 0) then 
    a = p 
    fa = fp 
    else 
    b = p 
    end 
    end 
error ('Max number iter. exceded!') 
endfunction 

fは関数(私は推測)である場合、AおよびBは、我々が反復される区間の限界であり、TOLはで寛容ですプログラムはゼロに近く終了し、Nは反復の最大数です。

これを実行する方法についてのヘルプは非常に高く評価されます。

+0

エラーログが一致しません:「bissecao」の呼び出しに、質問に定義されていない最初のパラメータとして「x」が含まれています。それを明確に定義してください:アイデンティティ関数ですか? – PTRK

答えて

1

エラーbissecao

であなたのbissecao機能は持っているだけでエラーがreturnへの呼び出しです: [x1,..,xn]=return(a1,..,an)は、関数の実行を停止させ、機能の実行を停止return機能で

と ローカル変数aiを呼び出し環境の名前xiに置きます。

したがって、引数なしで呼び出すか(出力を入力する)、関数は終了してpを返します。 y1 = return(p)を呼び出して、この機能が終了し、py1に格納されます。

親/呼び出しスクリプト/関数(可能な副作用)内の変数の値を変更しないようにするには、引数のないフォームreturnを関数に使用する方が良いです。

対話的pauseとデバッグ時引数形態がより有用である:

休止モードでは、低レベルに戻ることを可能にします。 [x1,..,xn]=return(a1,..,an)は、下位レベルに戻り、ローカル変数aiを呼び出し環境の名前xiに配置します。あなたがxを定義されていなかったのでbissecao(x,-1,1,0.1,40):問題はあなたの呼び出しで来るかもしれない

bissecao呼び出しで

エラー。

function y=x(t) 
    y=t+0.3 
enfunction 
x0=bissecao(x,-1,1,0.1,40) // changed 'return p' to 'return' 
disp(x0) // gives -0.3 as expected 

+0

'x(t)'の定義の 'x'ではなく' t'でなければなりませんか? – luispauloml

+0

@luispauloml忘れました。修正しました。 – PTRK

関連する問題