0

私は象徴的方程式を解いています:シンボリック計算の結果を数値として表示する方法は?

% Newton's method 
syms x; 
F(x)=x-cos(x); 
FPrime(x)=diff(F(x)); 
display(FPrime(x)); 
x0=input('please give first point[x0] = '); 
Accuracy=input('Accuracy[xn-xn-1] = '); 
for k=0:15; 
    x=x0-(F(x0)/FPrime(x0)); 
    x0=x; 
    if(abs(F(x))<=Accuracy); 
     display(x); 
     break 
    end  
end 

実数が、答えは(cos(1) - 1)/(sin(1) + 1) + 1として出てくると私はxを必要としています。数字が欲しいなら、これで何をする必要がありますか?

答えて

2

doubleにあなたの出力をキャストすると、あなたが望む結果として生成されます。

x = 

(cos(1) - 1)/(sin(1) + 1) + 1 

>> double(x) 

ans = 

    0.7504 

上記はR2016bで試験しました。何らかの理由でこれが動作しない場合は、(この場合)double()と同じ結果を生成するeval()のフォールバックは、あります。

evalはさまざまな副作用を持つことがありますが、ごくまれにしか使用しないでください。see example

+0

VPA()が動作しないのだろうか? –

+1

@MohammadrezaKhoshbin - このコメントをいただきありがとうございます。 'vpa(x)'は 'sin + cos'式を数値に変換しますが、数字は' sym'型です。私はその質問から、OPが「実数」を望んでいることを理解しました。これは私にとっては「ダブル」です。あなたの提案は同じように有効かもしれません - それはOPが望んでいるすべての問題です。 –

+0

ご清聴ありがとうございます!私は結果の数字のタイプについて知らなかった。 –

関連する問題