|
Pers.narod.ru. Обучение. Ошибки суммирования в 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, которое можно скопировать и оценить численно обычным "=".

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

Вывод - верхняя граница суммы, меньшая нижней, не есть хорошо.
Скачать этот файл в формате .xmcd (36 Кб)
|
|