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가 원하는 것을 모두 의문입니다. –

+0

설명해 주셔서 감사합니다. 결과 숫자의 유형에 대해 알지 못했습니다. –