Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие.doc
Скачиваний:
158
Добавлен:
02.04.2015
Размер:
6.8 Mб
Скачать

7.3.4.2. Метод Зейделя

Другим вариантом итерационного процесса поиска корней системы линейных уравнений является метод Зейделя, который отличается от метода простых итераций тем, что при вычислении (i+1)-го приближения неизвестной величиныxjучитываются уже полученные(i+1)-е приближения неизвестныхx1, x2, , xj-1. Формульная запись метода имеет следующий вид:

(51)

где j=2, 3, …, n;i=0, 1, 2, ….

Метод Зейделя обеспечивает более быструю сходимость к решению.

Касаясь вопроса эффективности работы точных и приближенных методов, следует отметить, что на микроЭВМ, на которых обычно осуществляется решение задач АСУ ТП и память которых ограничена, использование точных методов для систем линейных уравнений выше 3-го порядка нерационально, так как их программная реализация занимает много памяти (обычно эти методы оформлены в виде стандартных программ).

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

7.4. Примеры выполнения

Исследуем стационарный режим реактора идеального смешения непрерывного действия, в котором происходит химическая реакция следующего вида:

Начальные концентрации веществ на входе в реактор:

XA0=XB0=XD0=0,3333.

Константы скоростей элементарных стадий химической реакции:

k1=k3=0,5

k2=k4=0,1

Составим уравнения материального баланса согласно (38):

или

(52)

7.4.1. Пример выполнения задания точным методом

  1. Преобразуем систему (52):

(53)

  1. Запишем систему (53) в матричном виде:

(54)

или

.

  1. Систему (54) решим методом обращения матриц, для чего воспользуемся встроенными средствами Mathcad.

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

  1. Зададим исходные данные

  1. Осуществим программирование решения системы. Используем оператор цикла for, т. к. заранее известно количество повторений (в качестве параметра цикла используем время пребывания ).

Осуществим решение с использованием обратной матрицы С-1. Данная матрица рассчитывается 10 раз. Результат решения системы записывается в вектор Х, который также рассчитывается 10 раз. Результаты решения системы, соответствующие каждому из 10-ти значений, записываются в массивы Ха, Xb, Xd с соответствующим индексом. Также рассчитывается сумма концентраций веществ для каждого, которая заносится в массив S. Для возвращения рассчитанных массивов из функции осуществляется их слияние в двумерный массив с помощью функции augment().

  1. При вызове запрограммированной функции результаты возвращаются в массив х, который впоследствии выводится на экран.

  1. Чтобы при построении графиков их подписи были легко понятны, введём массивы с новыми именами и запишем в них данные массива х по столбцам. Построим графики (рис. 45.

Рис. 45 Результаты решения системы линейных уравнений точным методом

7.4.2. Пример выполнения задания методом итераций и методом Зейделя

Решим систему (52) методом итераций.

Сначала запишем систему (52) в нормальном виде, причем постараемся из всех возможных вариантов выбрать такой, чтобы соблюдалось условие (47), т. е. чтобы сумма модулей коэффициентов нормальной системы уравнений по строкам или столбцам была меньше 1:

для всех

или

для всех.

Вариант преобразования 1.

  1. Раскроем в уравнениях системы (52) скобки

(55)

  1. Перенесем в первом уравнении системы (55) член k1XAвправо, а затем разделим обе части уравнения наk1.

Перенесем во втором уравнении системы (55) член k3XBвправо, а затем разделим обе части уравнения наk3.

Перенесем в третьем уравнении системы (55) член k4XDвправо, а затем разделим обе части уравнения наk4.

В левой части уравнений у неизвестных поставим индекс i+1, а справа индексi. В результате получим систему:

(56)

  1. Осуществим проверку сходимости метода с использованием преобразованной системы (56). Для этого запрограммируем расчет суммы модулей коэффициентов системы уравнений по строкам или столбцам согласно условию (47).

Зададим закон изменения среднего времени пребывания 

Рассчитаем суммы модулей коэффициентов по строкам системы (56) и поместим результаты в массив Sstr (т. к. имеем три уравнения, то строк три и получаем в массиве Sstr три столбца – 0, 1 и 2, а т. к. меняется в диапазоне от 1 до 10, а нумерация элементов в массиве начинается с нуля, то получаем в массиве Sstr 11 строк).

Далее рассчитаем суммы модулей коэффициентов по столбцам системы (56) и поместим результаты в массив Sstlb (т. к. имеем три вещества, то столбцов три и получаем в массиве Sstlb три столбца – 0, 1 и 2, а также 11 строк).

Высветим результаты, анализ которых показывает, что большинство полученных сумм значительно превышает 1 при любом значении .

Запрограммируем функцию, которая осуществляет проверку условия (47).

Элементы массивов z и u равны 1, если текущее значение в массиве Sstr и Sstlb соответственно меньше 1, иначе элементы массивов z и u равны 0. Элементы массивов р1 и р2 равны 1, если сумма модулей коэффициентов системы (56) по всем строкам или всем столбцам соответственно для каждого меньше 1. В элементы массива v записывается 1, если условие (47) выполняется.

Как видно из результатов, условие (47) не выполняется независимо от того, какое значение принимает . Это говорит о том, что нами некорректно выбран способ преобразования системы (52) в вид (56). Поэтому попробуем выполнить преобразование по-другому (вариант преобразования 2).

Вариант преобразования 2.

Используем систему (55)

  1. Сгруппируем элементы в уравнениях (55) следующим образом:

а затем

(57)

Внимание! Такой вариант является предпочтительным, т. к. значения знаменателей коэффициентов превосходят значения числителей. Именно поэтому во втором уравнении системы (57) для переменнойXBмножительk3 помещен в знаменатель, аk2 – в числитель (k3>k2).

При проведении преобразований следует сделать так, чтобы искомая переменная рассчитывалась сама через себя в как можно большем количестве уравнений. Если это не удается сделать для всех уравнений, то хотя бы для одного (любого в системе) уравнения это требование нужно выполнить обязательно. В данном примере это удалось только для второго уравнения системы (57). Здесь концентрацияXBi+1рассчитывается через её же значение на предыдущем шагеXBi, а концентрации веществXAi+1,XDi+1рассчитываются черезXBi. Такой вариант вполне допустим.

  1. Расчет суммы модулей коэффициентов по строкам и столбцам системы (57) дает результаты, которые говорят о том, что большинство полученных сумм не превышает 1 или превышает 1 незначительно. При использовании метода итераций гарантировано получение результата для значений 1 и 2. Тем не менее, при программировании метода результат получается для всех значенийот 1 до 10.

  1. Для метода Зейделя система (57) преобразуется следующим образом:

(58)

Как видно, во втором уравнении системы для расчета используется значение ХАi+1, полученное на текущей итерации, а в третьем уравнении –ХBi+1.

Программирование решения методом итераций и методом Зейделя студент должен осуществить самостоятельно (блок-схемы алгоритмов приведены в пункте 7.4.3 на стр. 127–128).

Рекомендации:

    1. при программировании использовать вложенные циклы, внешний цикл по осуществить с помощью оператораfor, а внутренний цикл поi– с помощью оператораwhile,– среднее время пребывания,i– текущая итерация;

    2. для каждого из методов запрограммировать свою функцию расчета;

    3. полученные для каждого метода результаты представить в табличном виде и в виде графиков, примерный вид приведен ниже (рис. 46).

Пояснение названий массивов:

 – среднее время пребывания в реакторе;

Xait,Xbit,Xdit– значения концентраций, полученные по методу итераций;

Sit–сумма концентраций;

Iit– количество итераций, за которое получено решения для каждого.

Рис. 46 Результаты решения системы линейных уравнений методом итераций

    1. провести сравнительный анализ трех использованных методов (рис. 47)

Рис. 47. Результаты сравнения методов решения системы линейных уравнений