1

すべてのルートが見つかるまでに何回の再帰が行われますか? また、どれがルーツですか?


これが私のコードです:

e=0.000001; 
f1=@(x) 14.*x.*exp(x-2)-12.*exp(x-2)-7.*x.^3+20.*x.^2-26.*x+12;

a=0; 
c=3; 
while abs(c-a)>e 
    b=(c+a)/2; 
    if f1(a)*f1(b)<0 
        c=b; 
    else
        a=b;
    end    
    disp(b);  
end
4

2 に答える 2

5

二分法は、ある初期区間の端点を取得し[a,b]、区間のどの半分にルートが含まれている必要があるかを見つけることによって機能します (中点を評価し、符号が変化する半分を特定します)。次に、二分法は、識別された半分に対してプロセスを繰り返します。

二分法は1 つの可能性のあるルートのみに収束します。関数が 内に複数のルートを持つ場合[a,b]、一般にどの特定のルートに収束するかを予測することは困難です。(注: 二分法は完全に決定論的なアルゴリズムであるため、同じ初期間隔を指定すると、常にまったく同じルートに収束します。) 反復は、見つかったルートの近似値を単純に調整するだけで、複数のルートは検出しません。

あなたの質問に直接答えるために、二分法は内の関数の根の 3 つすべてを発見するわけ[0,3]ではありません。根は 1 つだけ検出され、これは二分コードの最後の反復によって識別されます。二分反復によって出力されるすべての値は、最終的に見つかった 1 つの根に向かってアルゴリズムによって行われた進行状況を単純に示します (これらの値は、最終値に収束するシーケンスである必要があります)。

于 2012-11-08T18:18:32.453 に答える