Метод Зейделя в Excel

Обновлено: 21.11.2024

Давайте сделаем еще один шаг в методе Якоби. Где истинное решение, если это лучшее приближение к истинному значению x 1, чем x 1 (< em>k), то имело бы смысл использовать его после того, как мы нашли новое значение (а не старое значение при нахождении So, как в методе Якоби, но при поиске вместо использования старого значения и старых значений мы теперь используем новое значение и старые значения, и аналогично для поиска. Этот метод называется методом Гаусса-Зейделя. Метод — хотя, как отмечает Гил Стрэнг в своем Введение в прикладную математику, Гаусс не знал о нем, а Зайдель не рекомендовал его. Он описан

Это также можно написать

Пример 2

Применим метод Гаусса-Зейделя к системе из

На каждом этапе, учитывая текущие значения, которые мы находим в

Чтобы сравнить результаты двух методов, мы снова выбираем x (0) = (0, 0, 0). Затем мы находим, решая

Давайте проясним, как мы решаем эту систему. Сначала мы решаем в первом уравнении и находим, что

Затем мы решаем во втором уравнении, используя новое значение, и находим, что

Наконец, мы решаем в третьем уравнении, используя новые значения и и находим, что

Результатом этой первой итерации метода Гаусса-Зейделя является

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

< td align="right">- 0,000 < td align="right">0,000 td> < /tbody>
k x (k) x (k) − x (k-1) e (k< /em>) = xx (k) ||e ( k) ||
0 - 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 0,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-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 . После того, как вы выберете «Рассчитать сейчас», электронная таблица должна выглядеть так. <Граница таблицы> 0 0,59375 1.000000 0 0,5 1 0,125 0,09375< /TD> 0 0,5 < /p>

Как мы проверяем нашу работу? Во-первых, мы проверяем правильность введенных чисел. Проверяем ячейку 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. Результаты электронной таблицы показаны в таблице.

<Граница таблицы> 0 0,3242188 0,5898438 0,808594 1 0 0,25 0,5 0,75 1 0,03125 0,0292969 0,0234375 0.013672 0 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 ).

<граница таблицы> ∆x y(0.5) 0,5 0,59375 0,25< /TD> 0,5898438 0,125 0,5888671

(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 мы использовали итеративный расчет и указывали ему, когда нужно остановиться. Излишне говорить, что чем точнее мы хотим получить решение, тем меньше допуск и тем больше итераций нам потребуется.

Обратите внимание: программа для работы с электронными таблицами с функцией итерации предоставляет удобный способ решения уравнений конечных разностей.

Читайте также: