Студопедия — Итерационный метод
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Итерационный метод






Запишем систему уравнений (3.9) в виде

 

A x = b, (3.21)

где A — матрица коэффициентов, а b — вектор правых частей системы.

Преобразуем (3.21) к виду, удобному для итераций

x = B x + c. (3.22)

 

Тогда метод простой итерации определяется формулой:

x k +1 = B x k + c, k = 0, 1, … (3.23)

 

где начальное приближение x 0 задано.

Сформулируем теоремы об условиях сходимости метода простых итераций (доказательство теорем приведено в [1]).

Теорема 3.1 (достаточное условие сходимости).Если || B || < 1, то система (3.21) имеет единственное решение, а итерационный метод (3.23) сходится к решению со скоростью геометрической прогрессии.

Теорема 3.2 (необходимое и достаточное условие сходимости).Пусть система (3.22) имеет единственное решение. Итерационный процесс (3.23) сходится к решению системы (3.22) тогда и только тогда, когда все собственные значения матрицы B по модулю меньше единицы.

Теоремы 3.1 и 3.2 не дают способов преобразования произвольной системы линейных уравнений к виду (3.22) так, чтобы метод итераций (3.23) при этом сходился к решению. Эти теоремы имеют важное теоретическое значение. Отметим, что на практике для проверки условия сходимости метода итераций более полезна теорема 3.1, а теорему 3.2 удается использовать тогда, когда собственные значения матрицы B известны. Задача определения собственных значений матрицы в общем случае сложнее, чем решение системы линейных уравнений.

Для преобразования системы уравнений к виду, удобному для итераций можно [7] умножить систему (3.21) на матрицу D = A –1 – ε, где ε — произвольная матрица. Тогда система примет вид (3.22)

 

x = B x + c, B = ε A, c = D b (3.24)

 

и матрица B будет удовлетворять теореме (3.1), если выбрать элементы матрицы ε достаточно малыми по модулю. Однако, этот прием не выгоден, так как для вычисления обратной матрицы A –1 необходимо выполнить не меньше операций, чем на решение самой системы.

При небольшом числе уравнений систему иногда удается привести к виду, удобному для итераций с помощью нескольких преобразований. Пример, иллюстрирующий этот способ, содержится в [7].

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

Пример 3.4. Система линейных уравнений приведена к виду, удобному для итераций. Проверить условия сходимости и найти решения.

 

Решение. Найдем норму матрицы B и проверим условие сходимости

 

.

 

По теореме 3.1 мы имеем сходящийся итерационный процесс:

 

 

Выберем в качестве начального приближения вектор свободных членов x 0 = (1, –2, 5) T и проведем вычисления в программе Excel.

1) В ячейки A 2: C 4 введем элементы матрицы B, а в ячейки F 2: F 4 — свободные члены, как показано в таблице 3.3.

2) В столбце D будем вычислять последовательные приближения к решению. В ячейках D 2: D 4 запишем начальное приближение, т.е. введем числовые значения компонент вектора x 0: 1, –2, 5. Выделим диапазон D 5: D 7, введем формулу =МУМНОЖ(A$2:C$4;D2:D4)+F$2:F$4 и, удерживая нажатыми клавиши Ctrl и Shift, нажмем Enter. В ячейках D 5: D 7 появятся значения компонент вектора x 1. Выделим D 5: D 7 и с помощью мыши протянем маркер заполнения вниз до D 22. Здесь надо иметь ввиду, что в ячейках D 5: D 7 записана операция с массивом, поэтому число новых строк, в которые копируем эти ячейки, должно быть кратно 3. В нашем случае имеем 15 строк, т.е. 5 новых итераций, а всего, с учетом D 5: D 7, выполнено 6 итераций.

3) В столбце E вычислим разности между компонентами последовательных приближений x k и x k +1. Выделим диапазон E 5: E 7, введем формулу =ABS(D2:D4-D5:D7), и протянем маркер заполнения вниз до E 22. В ячейках
E 20: E 22 максимальное число равно 0,0067 = || x k +1x k ||1, что соответствует приблизительно погрешности 0,01. Решение системы

 

x 1 ≈ 1,59; x 2 ≈ – 1,16; x 3 ≈ 5,29.

 

В табл. 3.3 показано содержимое ячеек A 1: F 7 в режиме формул, которое высвечивается, если выполнить команду меню «Сервис — параметры», выбрать вкладку «Вид» и отметить в параметрах окна флажком пункт «формулы». Если этот флажок снять, то увидим вычисленные компоненты решения.

Таблица 3.3

  A B C D E F
        Вектор Xk Разность  
  0,3 -0,1        
  0,2 -0,4 0,01 -2   -2
    0,2 0,1      
        =МУМНОЖ(A$2:C$4;D2:D4)+F$2:F$4 =ABS(D2:D4-D5:D7)  
        =МУМНОЖ(A$2:C$4;D2:D4)+F$2:F$4 =ABS(D2:D4-D5:D7)  
        =МУМНОЖ(A$2:C$4;D2:D4)+F$2:F$4 =ABS(D2:D4-D5:D7)  

 

Составим программу на языке C ++ для решения системы уравнений методом итераций:

 

#include <except.h>

#include <iostream.h>

#include <math.h>

int iter(long double **b, long double *c, long double *x,

long double eps, int k_max, const int n);

int main(){

long double **b; long double *c, *x, eps; int i,j,n,k_max;

cout <<"\n input n = "; cin >> n;

cout <<"\n input eps = "; cin >> eps;

cout <<"\n input k_max = "; cin >> k_max;

try {

b= new long double*[n]; for(i=0;i<n;i++) b[i]=new long double[n];

c= new long double[n]; x= new long double[n];

}

catch (xalloc){cout <<"\nCould not allocate\n"; exit(-1);}

cout <<"\n input matrix b \n";

for (i=0; i<n; i++)for (j=0; j<n; j++)cin >> b[i][j];

cout <<"\n input vector c\n";

for (i=0; i<n; i++)cin >> c[i];

cout << "\n matrix b: ";

for (i=0; i<n; i++){cout << "\n"; for (j=0; j<n; j++) cout <<" "<< b[i][j];}

cout << "\n vector c: ";

for (i=0; i<n; i++)cout << "\n " << c[i];

iter(b, c, x,eps,k_max, n);

cout << "\n vector x: ";

for (i=0; i<n; i++)cout << "\n x[" << i <<"] = " << x[i];

cout << "\n Press Key and Enter to continue";

cin >> i; // for pause

for(i=0;i<n;i++)delete[] b[i];

delete b;

delete[] c;

delete[] x;

return 0;

}//end main

int iter(long double **b, long double *c, long double *x,

long double eps, int k_max, const int n){

int i, j, m; long double *x1, xerr;

try {x1 = new long double[n];}

catch (xalloc){cout <<"\nCould not allocate\n"; exit(-1);}

for (m = 0; m <= k_max; m++) {// m

for (i = 0; i < n; i++){

x1[i] = c[i]; for (j = 0; j < n; j++) x1[i] = x1[i] + b[i][j]*x[j];}

xerr = 0;

for (i = 0; i < n; i++) xerr = xerr + (x1[i] - x[i])* (x1[i] - x[i]);

xerr = sqrt(xerr);

for (i = 0; i < n; i++) x[i] = x1[i]; if(xerr < eps) break;

}// end m

delete[] x1;

return 0;

}// end iter

 

Найдем с помощью этой программы решение системы уравнений примера 3.4:

 

input n = 3

input eps = 0.00001

input k_max = 10000

input matrix b

0.3 –0.1 0 0.2 –0.4 0.01 0 0.2 0.1

Input vector c

1 –2 5

matrix b:

0.3 –0.1 0

0.2 –0.4 0.01

0 0.2 0.1

vector c:

–2

vector x:

x[0] = 1.5947

x[1] = –1.16292

x[2] = 5.29713

Press Key and Enter to continue

 

Как видим, решение совпадает с решением, полученным в программе Excel.







Дата добавления: 2015-08-12; просмотров: 1187. Нарушение авторских прав; Мы поможем в написании вашей работы!



Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

Решение Постоянные издержки (FC) не зависят от изменения объёма производства, существуют постоянно...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия