6sravnenieporavenstvy (Вспомогательные материалы)
Описание файла
Файл "6sravnenieporavenstvy" внутри архива находится в папке "Вспомогательные материалы". Документ из архива "Вспомогательные материалы", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "6sravnenieporavenstvy"
Текст из документа "6sravnenieporavenstvy"
Пункт 7
Подсчет числа элементов в массивах при использовании сравнения по равенству
NRC | NP | DIAG | ENV | XENV | Сумма | Число элементов, необходимых для хранения в матричном виде | Коэффициент эффективности использования памяти | ||
Число используемых элементов | Число используемых элементов | Число не нулевых элементов | % за-полн. | Число используемых элементов | |||||
3 | 57 | 114 | 1209 | 963 | 79,6 | 115 | 1438 | 6555 | 21,9 |
4 | 115 | 230 | 3543 | 2986 | 84,2 | 231 | 4004 | 26565 | 15 |
5 | 193 | 386 | 7945 | 6854 | 86,2 | 387 | 8718 | 74691 | 11,6 |
6 | 291 | 582 | 14539 | 12671 | 87,1 | 583 | 15704 | 169653 | 9,2 |
7 | 409 | 818 | 24689 | 21498 | 87,1 | 819 | 26326 | 334971 | 7,8 |
8 | 547 | 1094 | 37915 | 33095 | 87,2 | 1095 | 40104 | 598965 | 6,6 |
9 | 705 | 1410 | 55985 | 48729 | 87,1 | 1411 | 58806 | 994755 | 5,9 |
10 | 883 | 1766 | 78135 | 68089 | 87,1 | 1767 | 81668 | 1560261 | 5,2 |
11 | 1081 | 2162 | 106601 | 92532 | 86,9 | 2163 | 110926 | 2338203 | 4,7 |
12 | 1299 | 2598 | 139847 | 121255 | 86,7 | 2599 | 145044 | 3376101 | 4,2 |
«2. П.7. Не могу доверять выше приведенным цифрам, так как в Вашей программе для вещественных элементов массива используется сравнение по равенству, что является грубой программистской ошибкой (см. строку 107 модуля calc). После исправления ошибки напишите, пожалуйста, в отчете к чему это привело.»
Ответ: изменив, модуль CALC, согласно правилам нормального программирования, я получил другие значения ненулевых и используемых элементов матрицы ENV. Число ненулевых элементов матрицы ENV возросло, что повлекло за собою увеличение процента заполнения.
NRC | NP | DIAG | ENV | XENV | Сумма | Число элементов, необходимых для хранения в матричном виде | Коэффициент эффективности использования памяти | ||
Число используемых элементов | Число используемых элементов | Число не нулевых элементов | % за-полн. | Число используемых элементов | |||||
3 | 57 | 114 | 1209 | 963 | 79,6 | 115 | 1438 | 6555 | 21,9 |
4 | 115 | 230 | 3543 | 3006 | 84,8 | 231 | 4004 | 26565 | 15 |
5 | 193 | 386 | 7945 | 7008 | 88,2 | 387 | 8718 | 74691 | 11,6 |
6 | 291 | 582 | 14539 | 13165 | 90,5 | 583 | 15704 | 169653 | 9,2 |
7 | 409 | 818 | 24688 | 22571 | 91,4 | 819 | 26325 | 334971 | 7,8 |
8 | 547 | 1094 | 37915 | 35038 | 92,4 | 1095 | 40104 | 598965 | 6,6 |
9 | 705 | 1410 | 55984 | 51869 | 92,6 | 1411 | 58805 | 994755 | 5,9 |
10 | 883 | 1766 | 78132 | 72907 | 93,3 | 1767 | 81665 | 1560261 | 5,2 |
11 | 1081 | 2162 | 106600 | 99614 | 93,4 | 2163 | 110925 | 2338203 | 4,7 |
12 | 1299 | 2598 | 139847 | 131325 | 93,9 | 2599 | 145044 | 3376101 | 4,2 |
Использование оператора DO WHILE для остановки цикла подсчета требует особого внимания, например, в подсчете значения интеграла на интервале [XF1; XF2] шагом SH студенты очень часто используют оператор DO WHILE в такой форме:
XK=XF1
DO WHILE(XK.LE.XF2)
SINTEGRAL=SINTEGRAL+………….
XK = XK+SH
Даже если SH получен путем деления интервала на n шагов, SH – вещественное число. XK – тоже вещественное число и оно никогда не будет точно равно XF2, которое тоже является вещественным числом.
Поэтому при последнем n-ом шаге вычисления XK его значение может оказаться или чуть больше или чуть меньше XF2.
Если оно будет чуть меньше, то последний участок (очень маленький, n+1-ый) программа не будет рассчитывать. И это не страшно, так как участочек будет действительно неуловимо мал. Но если при n-ом шаге XK окажется больше XF2, то не будет досчитан целый участок длиной SH.
Отсюда сравнение вещественных чисел по равенству недопустимо.
Применение оператора в такой форме
DO WHILE((XK-XF2).LT.0) тоже ничего не дает.