Слаботочка Книги

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 [205] 206 207 208

Например, при решении краевой задачи для дифференциальных уравнений у нас может быть неуверенность в разумности выбора разностной схемы во внутренних точках или вблизи границы. Вычисления во внутренних точках и вблизи границы ведутся по различным формулам и поэтому лучше, чтобы они были выделены в отдельные блоки с тем, чтобы можно было производить независимую от,ладку методов. Также важно нpeIycмoтpeть возможность быстрого и удобного изменения параметров задачи, нанример шага сетки нри решении дифференциальных уравнений или числа узлов квадратуры. Отладка программы и апробация метода решения задачи при малом чише узлов проходят быстрее и позволяют лучше использовать возможности ЭВМ. Нанример, нри малом числе узлов можно быстро прове1)ить сходимость итерационного процесса.

Иногда профессиональные программисты рекомендуют проводить отладку программы при номоици тестюв. Берется минимально допустимое число узлов, нри котором включаются в работу все блоки программы (и все циклы). При таком числе узлов задача решается без помоици написанной программы, а затем результаты расчета сравниваются с результатами расчета с помош,ью ЭВМ. Для типичных конечно-разностных методов решения дифференциальных уравнений минимальное число узлов но каждой оси, нри котором включаются в работу все блоки и циклы, находится в пределах от 2 до 5.

В процессе работы над отладкой программы в программу вносятся дополнительные команды выдачи на дисплей или на печать промежуточных данных с целью сравнения их с заранее просчитанным тестом. Такой режим отладки особенно удобен для начинаюш,его программиста.

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

Нанример, уравнения движения снежной лавипы при определенных значениях параметров превращаются в уравнения мелкой воды, для которых в случае кусочно-постоянных начальных данных известно точное решение (так называемое решение задачи о распаде разрыва). Сравнивая решение, полученное в результате расчетов, с точным решением, можно судить о правильности программы и качестве метода.

Построение решения задачи о распаде разрыва само но себе требует относительно большой вспомогательной работы. Вместо непосредственного построения такого решения для заданной системы часто поступают следующим образом.

Вместо конкретных значений коэффициентов системы ставятся произвольные параметры, производится одновременная подборка этих параметров и системы функций, которая может быть решением задачи о



распаде разрыва. В результате получится некоторая задача с известным решением, отличаюш,аяся от интересуюш,ей нас задачи лишь значениями чиаювых параметров. На такой задаче мы можем отладить все наиболее суш,ественные моменты метода и программы.

Проиллюстрируем способы построения задач с известным частным решением на примере дифференциальных уравнений.

Пусть решается краевая задача

в квадрате G : О < ж, у < 1; на граьшпе квадрата Г ставится краевое условие

Возьмем некоторую функцию и{х, у) и вычислим функции

f{x,y)=Liuix,y)), д\ =

+ аи~

Краевая задача

L{u) - fix, у) = О,

будет задачей с известным точным решением и - и{х, у).

Часто желательно иметь в распоряжении сеточную задачу с известным точным решением. Eain, например, по простейшим явным формулам решается задача Коши, то такое решение легко вычишить непосредственно.

В случае краевых задач или при решении задачи Коши по неявным формулам часто целесообразно поступить как и выше. Строим сеточную задачу Liuii) = О, lh{uh) = О (с небольшим числом узлов), берем некоторую сеточную функцию и\ и вычисляем

Сеточной задачей с известным точным решением ин ~ является задача

Lh{uh) = fl lh{uh)=gl

Иногда возникает необходимость иметь в распоряжении сеточную задачу с большим числом узлов и с точным решением. В этом случае может оказаться целесообразным поручить ЭВМ вычисление и у. Часто такую задачу получают, взяв в качестве и° множество значений в узлах сетки некоторого многочлена невысокой (обычно 1 - 4-й) степени. Степень многочлена выбирается из условия, чтобы погрешность аппроксимации дифференциальной задачи сеточной равнялась нулю.



Еп1,е раз выделим основную идею описанного выпге приема построения тестов. Вместо неносредстшипого пост,роет1я теста для исходной задачи (построение решения по заданной правой части) строится тест для обратной задачи (но заданному решению строится правая часть) и он оказывается тестом для прямой задачи с той же структурой, но с другими числовыми данными.

Применение этого приема обычно существенно сокращает затраты на построение теста.




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 [205] 206 207 208
Яндекс.Метрика