Метод Зейделя в Excel
Обновлено: 21.11.2024
Давайте сделаем еще один шаг в методе Якоби. Где истинное решение, если это лучшее приближение к истинному значению x 1, чем x 1 (< em>k), то имело бы смысл использовать его после того, как мы нашли новое значение (а не старое значение при нахождении So, как в методе Якоби, но при поиске вместо использования старого значения и старых значений мы теперь используем новое значение и старые значения, и аналогично для поиска. Этот метод называется методом Гаусса-Зейделя. Метод — хотя, как отмечает Гил Стрэнг в своем Введение в прикладную математику, Гаусс не знал о нем, а Зайдель не рекомендовал его. Он описан
Это также можно написать
Пример 2
Применим метод Гаусса-Зейделя к системе из
На каждом этапе, учитывая текущие значения, которые мы находим в
Чтобы сравнить результаты двух методов, мы снова выбираем x (0) = (0, 0, 0). Затем мы находим, решая
Давайте проясним, как мы решаем эту систему. Сначала мы решаем в первом уравнении и находим, что
Затем мы решаем во втором уравнении, используя новое значение, и находим, что
Наконец, мы решаем в третьем уравнении, используя новые значения и и находим, что
Результатом этой первой итерации метода Гаусса-Зейделя является
Мы повторяем этот процесс, чтобы создать последовательность все более точных приближений и найти результаты, аналогичные тем, которые мы получили для
k | x (k) | x (k em>) − x (k-1) | e (k< /em>) = x − x (k) | ||e ( k) || | ||||||
---|---|---|---|---|---|---|---|---|---|---|
0 | - 0,000 | < td align="right">- 0,000- 0,000 | - | -< /td> | - | - 0,000 | - 0,000 | -1,000 | 2,449 | |
1 | 0,750 | 1,750 | -1,000 | - 0,000 | - 0,000 | -1,000 | 0,250 | 0,250 | < td align="right">0,0000,354 | |
2 | 0,938 | 1,979 | -1,006 | 0,188 | 0,229 | -0,006 | 0,063 | 0,021 | 0,006 | 0,066 |
3 | 0,993 | 1,999 | td>-1,001 | 0,056 | 0,020 | 0,005 | 0,007 | 0,001 | 0,001 | 0,007 |
4 | 0,999 | 2,000< /td> | -1,000 | 0,006 | 0,001 | 0,001 | 0,001 | 0,000 | 0,000 | 0,001 |
5 | 1,000 | 2,000 | -1,000 | 0,000 | 0,000 | 0,000 | 0,000 | 0,000 | 0,000 | 0,000 |
Как и в примере 1, мы прекращаем итерацию после , и все числа от 0 до трех знаков после запятой. Обратите внимание, что эта последовательность итераций сходится к истинному решению намного быстрее, чем мы нашли при использовании метода Якоби. Обычно это ожидаемо, так как метод Гаусса-Зейделя использует новые значения по мере их нахождения, а не ожидает следующей итерации, как это делается в методе Якоби.
Дэвид М. Стронг, "Итерационные методы решения [i]Ax[/i] = [i]b[/i] - метод Гаусса-Зейделя", Сходимость (июль 2005 г.)< /p>
Задача II, решенная в Excel с помощью итерации
Проблема, которую необходимо решить
Конечно-разностная формулировка этой задачи
Приведите дифференциальное уравнение к следующему виду.
Итеративная схема может быть представлена как
где верхний индекс k представляет значение количества на k-й итерации. Таким образом, берутся значения на k-й итерации и вычисляются значения с верхним индексом k+1. Затем эти значения снова и снова используются в уравнении.Процесс повторяется до тех пор, пока значения не перестанут изменяться в пределах заданного вами допуска. (Представленная схема итераций является схемой итераций Якоби (ссылка). Когда она реализована в электронной таблице, это будет итерация Гаусса-Зейделя (ссылка), в зависимости от порядка вычислений, выполняемых электронной таблицей.)
Эти уравнения применяются здесь с использованием электронной таблицы Microsoft Excel, но команды являются общими, и их можно использовать в большинстве электронных таблиц. Рассмотрим сетку, показанную на рисунке.
Первая строка зарезервирована для значения y в каждой точке сетки. Крайняя левая ячейка — это значение y в первой точке, а самая правая ячейка — это значение y в последней точке. Поскольку эти значения известны, мы просто вставляем известные значения в ячейки. Для промежуточных точек мы вставляем приведенное выше уравнение.
Удобно, если мы сначала определим некоторые величины, хотя бы для упрощения алгебры. Пусть вторая строка представляет значение x в узле i. Значение ∆x помещается в ячейку A4; сначала используйте 0,5. Первое значение x, 0, помещается в ячейку A2. Затем уравнение записывается в ячейку B2 и копируется вправо.
B2: = A2+$A$4, скопировано вправо
$A$4 гарантирует, что при копировании формулы ячейки вправо в следующей ячейке будет B2+$A$4, а затем C2+$A$4; другими словами, местоположение A4 является абсолютным и не увеличивается при копировании. После этого во второй строке должны отображаться значения 0, 0,5, 1,0.
Поскольку термин, включающий x и ∆x, используется постоянно, его значение помещается в третью строку. В первом столбце используется:
A3: = $A$4*$A$4*(1A2*A2)/2., скопировано вправо
Тогда формулы для ячеек, содержащих y i, выглядят просто:
B1: = 0,5*(A1 + C1) + B3, скопировано вправо.
Когда вы помещаете эти формулы в свою электронную таблицу, программа выдает вам предупреждение, поскольку вы определяете циклическую ссылку, то есть некоторые ячейки определяются с точки зрения других ячеек,
которые в терминах определены в терминах первых ячеек. Чтобы начать расчет в Microsoft Excel, вы должны выбрать «Инструменты», затем «Настройки», затем «Расчет» и установить флажок «Итерация». Это сообщает компьютеру, что вы будете выполнять итерации. (Возможно, вы захотите подготовить электронную таблицу с отключенным параметром «Итерация» и включить его после завершения подготовки. Это предотвратит получение странных ответов во время подготовки, когда все ячейки не заполнены. Это особенно верно для нелинейных задач. ) Там же можно установить максимальное количество итераций 500, а параметр сходимости 10 -6 . После того, как вы выберете «Рассчитать сейчас», электронная таблица должна выглядеть так. <Граница таблицы>
Как мы проверяем нашу работу? Во-первых, мы проверяем правильность введенных чисел. Проверяем ячейку A4, в которой стоит ∆x; 0,5 правильно. Затем мы проверяем вторую строку, которая показывает расположение точек сетки. Они должны быть ∆x = 0, 0,5, 1,0, и это правильно. Затем проверяем третью строку. Поскольку мы скопировали формулу, нам нужно проверить только одну ячейку. Для ячейки B3 значение должно быть
и это тоже проверяет. (Обратите внимание, что проверки ячейки A3 недостаточно, поскольку x = 0 для столбца A, а x, x 2 или множество других формул дают идентичные ответы.) Наконец, мы проверяем ячейку B1. Мы можем использовать числа в A1 и C1, так как формула ячейки тоже. Мы получаем
Поскольку эти расчеты совпадают, мы заключаем, что правильно настроили электронную таблицу. Есть одна последняя проверка, которую можно сделать. Заметьте в формулах, что если мы установим ∆x = 0, то третья строка будет равна нулю. Это равносильно утверждению, что тепловыделение отсутствует. При таких обстоятельствах решение проблемы — прямая линия. Установите в ячейке A4 значение 0 и посмотрите. Вторая строка тоже равна нулю, но пока третья строка равна нулю, вторая строка практически не используется. Поскольку мы получили прямую линию, мы добавили уверенности в нашем решении.
Далее сделайте то же самое с ∆x = 0,25. Результаты электронной таблицы показаны в таблице.
<Граница таблицы>
Обратите внимание, что значение с ∆x = 0,25 очень близко к значению, полученному с использованием ∆x = 0,5. Чтобы быть абсолютно уверенным в правильности составления таблицы, эту таблицу проверяют так же, как и для ∆x = 0,5. Это особенно важно, поскольку при проверке ячейки B1 использовалась ячейка A1, которая была равна нулю. Таким образом, в то время как B1 был правильным для ∆x = 0,5, в случае ∆x = 0,25 нам нужно проверить ячейку C1, которая использует ячейки B1 и D1, ни одна из которых не равна нулю. Наконец, используйте ∆x = 0,125. Ответы, полученные для y(0,5), показаны ниже (с допуском 10 -8 ).
<граница таблицы>
(0,5, 0,25): 0,59375 0,5898438 = 0,00380
(0,25, 0,125): 0,5898438 0,5888671 = 0,00098.
и следуйте экстраполяции Ричардсона. Ошибка должна выглядеть как ∆x 2 ; при вдвое меньшем ∆x ошибка должна быть в четыре раза меньше. Если мы находимся в области (достаточно малом ∆x), где это применимо, различия должны каждый раз уменьшаться в 4 раза. В данном случае 0,00380 / 4 = 0,00095, что достаточно близко, чтобы говорить о сходимости.
Обратите внимание, что это решение также получено с использованием MATLAB. Так и должно быть, поскольку мы решаем одни и те же уравнения. Единственная причина различия заключается в том, что мы могли не установить допуск на достаточно маленькое значение. В случае с MATLAB мы использовали метод, который решал систему линейных уравнений ровно за один шаг с точностью до точности компьютера. В случае с Excel мы использовали итеративный расчет и указывали ему, когда нужно остановиться. Излишне говорить, что чем точнее мы хотим получить решение, тем меньше допуск и тем больше итераций нам потребуется.
Обратите внимание: программа для работы с электронными таблицами с функцией итерации предоставляет удобный способ решения уравнений конечных разностей.
Читайте также: