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

Спасибо за разъяснение! Я не знал о типе полученного числа. –