Просто возникли некоторые проблемы с переменной точностью в MATLAB ..Matlab syms переменная точность?
У меня есть код:
x = 0.1;
syms y;
S = solve(x+1==(1+y)/(1-y),y);
y = double(S);
val = abs(((2^2)*(y^2))/(2*(y-1)^2))
Но вал всегда округляется. Я должен получать val = 0.0049999
, но вместо этого я получаю val = 0.0050
.
У кого-нибудь есть идеи, почему?
Спасибо.
EDIT: Добавление дополнительного кода
x = 0.1;
syms y;
S = solve(x+1==(1+y)/(1-y),y);
y = double(S);
val = abs(((2^2)*(y^2))/(2*(y-1)^2))
sprintf('%22.20f',val)
for i=1:2
val= val+((2^i)*(y^i))/(i*(y-1)^i);
sprintf('%22.20f',val)
end
Первые Sprintf работы и показывает правильное округление, однако второй не делает !!
Как «N» и «i» относятся к вашему дополнительному коду? – Schorsch
К сожалению, 'N' предназначен для' i'! – Travv92
Какой результат вы ожидаете? Я получаю '0.00499999999999999924',' -0.09500000000000000111' и '-0.08999999999999999667' – Schorsch