У меня есть цикл, который суммирует значения функции называется pdfomegatДЛЯ петель в MATLAB и численной ошибки
omegat= -1.9999:0.01:+1.9999;
sum1=0;
for j=1:length(omegat)
func(j)=pdfomegat(j)*0.01;
sum1=sum1+func(j);
end
c1=sum1;
Мой второй цикл немного отличается цикл и выглядит следующим образом
sum2=0;
syms t
for j=1:length(omegat)
func2(j)=t*pdfomegat(j)*0.01;
sum2=sum2+func(j);
end
c2=sum2;
Я знаю факт, что c1 равен 1. Однако заметьте, что во втором цикле я ничего не меняю, а умножаю на символьный символ t. Насколько я понимаю,
c2 = 0.99999464659732599597363744692302 * t.
Почему нет c2 = t?
Есть ли способы исправить это, я не могу использовать круглую функцию, потому что она символична .. Любые мысли?
Должен ли я читать документ, чтобы узнать ответ :)? Я предполагаю, что в коде нет ничего плохого. Это что-то для самого MATLAB? @Nitish – George
Matlab использует представление с плавающей запятой для нецелых чисел. К сожалению, они не имеют бесконечной точности. Существуют методы ограничения ошибки (например, суммы чисел от наименьшего до наибольшего), но в конечном итоге единственный способ - использовать только целые числа. –
Есть ли способ, я могу это исправить? @AndrewPiliser. Моя проблема требует многого точности :( – George