Determine if valid initial guess for closed numerical method
古いコメントを表示
If I'm given a function f(x), how can I determine whether say [0 1] or [1,2 ] are valid initial guesses for a closed numerical method, of solving f(x)=0.
回答 (1 件)
If you want to use "fzero", you can first evaluate f in the endpoints of the interval [a b] you provide. If sign(f(a)*f(b)) < 0, you provide a valid initial guess.
Or did you want to ask something else - because your question was quite unclear ?
Best wishes
Torsten.
4 件のコメント
Rachel Dawn
2018 年 2 月 21 日
編集済み: Rachel Dawn
2018 年 2 月 21 日
Rachel Dawn
2018 年 2 月 21 日
編集済み: Rachel Dawn
2018 年 2 月 21 日
Rachel Dawn
2018 年 2 月 21 日
Torsten
2018 年 2 月 22 日
Try
xa = 10;
xb = 21;
fxa = f(xa);
fxb = f(xb);
if fxa*fxb > 0
disp('Invalid initial guess.')
end
iteration = 1;
E = 0.1;
error_f = 1.0;
while (iteration < 100 && error_f >= E)
xc = (xa+xb)/2;
fxc = f(xc);
if fxc*fxa<0
xb = xc;
else
xa = xc;
fxa = fxc;
end
error_f = abs(fxc);
iteration = iteration+1;
end
xc
You do not need to include the abs-part from above in the while-statement because the number of iterations already determines the minimum length of the interval in which you search for the root.
Best wishes
Torsten.
カテゴリ
ヘルプ センター および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!