БлогNot. Ошибки суммирования в MathCAD

Ошибки суммирования в MathCAD

Символьная (да и аналитическая) математика, "зашитая" в MathCAD, не только не сделает Вас умнее, а Ваши волосы пушистее, но и способна прямо ввести в заблуждение - следует помнить, что ошибки в MathCAD "всплывают" даже при работе с целыми числами. Рассмотрим в этой заметке только оператор суммирования, имеющийся во всех версиях MathCAD и во всех них работающий криво.

Вот несложная программа, содержащая тройной цикл, в котором одна из границ переменна, программа написана на консольном С++:

#include <stdio.h>
int main () {
 const int n=100;
 int i,j,k;
 long int s=0;
 for (i=1;i<=n;i++)
 for (j=1;j<=n-i;j++)
 for (k=1;k<=n;k++) s+=k;
 printf ("\n%ld",s);
 return 0;
}

Эта программа выдаёт ответ = 24997500

На скриншоте, показанном ниже, тот же расчёт выполнен в MathCAD 15. Видно, что при "лобовом" расчёте ответ совершенно иной. Не сработают и встроенные средства оптимизации.

Правильно посчитать можно только символьно, выделив набранное выражение и вызвав меню Символика - Вычислить - Аналитически. Получится выражение относительно n, которое можно скопировать и оценить численно обычным "=".

Ошибка расчета сумм в MathCAD
Ошибка расчета сумм в MathCAD

Не надо только думать, что символьные вычисления - панацея, второй пример будет ещё смешнее. Хорошо известная сумма натуральных чисел от 1 до 100 включительно, равная 5050, может быть вычислена аж вот как (S2 справа внизу):

Ещё ошибка
Ещё ошибка

Вывод - верхняя граница суммы, меньшая нижней, не есть хорошо.

 Скачать файл MathCAD с этим примером можно со страницы статьи


теги: числа mathcad ошибка

20.03.2013, 15:39; рейтинг: 10762