2017-10-22 7 views
0

二分法のコードを使用しましたが、残念ながらそれは問題ではありません。このコードには、ユーザー定義の精度と反復回数のカウンターも含まれています。私が得ているエラーは、コードの最後の行です:未定義の関数または変数 'c​​'。二分法のコードでエラーが発生しました

a=-5; 
b=0; 
tol = input('What precision would you like? ','s') 
fa=a^3-20+exp(a); 
fb=b^3-20+exp(b); 
counter=1 
while abs(b-a) > tol 
    c=(a+b)/2; 
    fx = c*c-2; 
    if fa*fc<0 
     b=c; 
     fb=fc; 
    elseif fb*fc<0 
     a=c; 
     fa=fc; 
    else 
     break 
    end 
    fprintf('Just finished iteration #%d\n', counter); 
    counter=counter+1; 
end 
x=c; 
+0

パラメータ 's'で 'input'が' char'の文字列を返すので、 'tol'は文字列で、' s 'を削除するか 'tol'をnum(' str2num') 。あなたのコードをデバッグしようとすると、おそらく 'while'ループは実行されないでしょう。したがって、' c'が正しく設定されていません。 –

答えて

1

あなたは(s引数で)文字列としてinputをロードしているので、tol変数は、文字列になります。例えば、現在のスクリプトの1E-10を入力する文字配列としてtolを定義し、while構築物における発現の最初の評価はそうwhileループが完全にスキップされる

>> abs(0 - -5) > '1E-10' 
ans = 
    0  0  0  0  0 

に相当するであろう。

inputコールからsを削除するか、str2doubleinputコールをラップしてください。

関連する問題