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 

我需要x作爲一個實數,但答案出來爲(cos(1) - 1)/(sin(1) + 1) + 1。如果我想要一個號碼,我需要做什麼?

回答

2

你的輸出投射到double會產生導致你想要的:

x = 

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

>> double(x) 

ans = 

    0.7504 

上述已於R2016b測試。如果由於某種原因,這不起作用,那麼eval()的後備,產生與double()(在這種情況下)相同的結果。

注意eval可以有各種副作用see example),並應在極少數情況下使用。

+0

會不會vpa()工作? –

+1

@MohammadrezaKhoshbin - 感謝您的評論。你是對的,'vpa(x)'把'sin + cos'表達式轉換成一個數字,但是這個數字的類型是'sym'。我從問題中瞭解到OP要「真實的號碼」,對我來說這是一個「雙重」的問題。你的建議可能同樣有效 - 這都是OP想要的問題。 –

+0

謝謝你的澄清!我不知道結果數字的類型。 –

相關問題