русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Метод простой итерации


Дата добавления: 2013-12-23; просмотров: 2286; Нарушение авторских прав


Метод Гаусса

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

Рассмотрим систему m линейных уравнений с n неизвестными:

Алгоритм состоит из двух этапов.

I. Прямой ход – приведение матрицы к треугольному виду (сверху вниз):

II. Обратный ход – определение неизвестных (снизу вверх).

Ручные вычисления по схеме единственного деления оформляют в виде таблицы с контролем вычислений, для чего в таблицу включены

· столбец контрольных сумм S,

· столбец сточных сумм S.

Контроль в прямом ходе:

· После внесения коэффициентов при неизвестных и свободных членов исходной системы находят контрольные суммы (суммы коэффициентов и свободных членов по строкам) и вносят их в столбец S.

· Далее, выполняя преобразования, над контрольными суммами производятся те же преобразования, что и над свободными членами.

· После выполнения каждого преобразования находят строчную сумму результатов и помещают ее в столбец S.

· При отсутствии вычислительных ошибок числа в столбцах S и S должны практически совпадать.

Контроль в обратном ходе:

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

Рассмотрим примеры решения СЛУ методом Гаусса

Разделы x1 x2 x3 св чл сумма S
  3,25 14,52 -1,32 367,58 384,03  
  32,02 -4,36 5,73 516,91 550,3  
А 7,21 11,92 -41,46 -886,32 -908,65  
             
  4,4677 -0,4062 113,1015 118,1631 118,163
  -147,4158 18,7365 -3104,6000 -3233,2825 -3233,2793
  -20,2921 -38,5313 -1701,7818 -1760,606 -1760,6052
             
А1   -0,1271 21,0602 21,9331 21,9331
    -41,1104 -1274,4261 -1315,5373 -1315,5365
             
А2     31,0001 32,0001 32,0001
             
      31,0001 32,0001  
В   25,0003 26,0003  
  13,9999  

 



Невязки e1= 367,58 - 367,583899 = -0,003899
  e2= 516,91 - 516,906063 = 0,003937
  e3= -886,32 - -886,321291 = 0,001291

 

Функцию r(x,y), определяющую расстояние между точками x и y множества X назовем метрикой, если

1) r(x,y)³0

2) r(x,y)=0 • x=y

3) r(x,y)= r(y,x)

4) r(x,y)£ r(x,z)+ r(z,y).

Множество X с введенной метрикой r назовем метрическим пространством.

Последовательность точек метрического пространства называется фундаментальной, если .

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

Отображение F пространства E в себя называется сжимающим, если

xнеподвижная точка, если F(x)=x.

Оценка расстояния между неподвижной точкой и приближением x(k) производится следующим образом:

или .

Таким образом, чтобы погрешность вычислений была меньше наперед заданного числа ε, достаточно потребовать .

Рассмотрим 3 типа метрики.

Пусть x(x1,x2,…,xn) и y(y1,y2,…,yn) – две точки n-мерного пространства.

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

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

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

СЛУ преобразуется таким образом, чтобы по одной из метрик выполнялось α < 1.

При этом СЛУ задает отображение, которое при α < 1 будет сжимающим. Значит, взяв любую точку в качестве начального приближения, получим последовательность точек, которая будет сходиться к неподвижной точке; это точка и будет решением системы.

Чтобы привести СЛУ к итерационному виду нужно:

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

2) разделить все уравнения на соответствующие диагональные коэффициенты и выразить из каждого уравнения неизвестное с коэффициентом, равным единице.

Если для этой системы α < 1, то система задает сжимающее отображение.

Рассмотрим на примере:

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

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

Проверим, будет ли отображение сжимающим:

Запишем формулы для решения системы методом итераций:

 

Блок-схема метода простой итерации:
                   
   
 
 
 
   
n:=n+1 y1:=… y2:=… y3:=… x1:=y1 x2:=y2 x3:=y3  
 
   
 
   
+
Ввод x1,x2,x3,α,ε
начало
p<b
Вывод x1,x2,x3,N
конец

 


Программа решения системы трех линейных уравнений с тремя неизвестными методом простой итерации (с евклидовой метрикой):

program slu_iter;

var p,b,x1,x2,x3,y1,y2,y3,a,e: real;

N: integer;

begin

write('Введите x1, x2, x3 : '); readln(x1,x2,x3);

write('Введите A, E : '); readln(a,e);

b:=e*(1-a)/a;

N:=0; {число итераций}

Repeat N:=N+1;

y1:= 0.1362*x2-0.1790*x3+16.1433;

y2:=-0.2238*x1+0.0909*x3+25.3154;

y3:= 0.1739*x1+0.2875*x2+21.3777;

p:=sqrt(sqr(x1-y1)+sqr(x2-y2)+sqr(x3-y3));

x1:=y1; x2:=y2; x3:=y3;

until p<=b;

writeln('x1 = ',x1:8:6);

writeln('x2 = ',x2:8:6);

writeln('x3 = ',x3:8:6);

writeln('Число итераций - N = ',N);

readln

end.



<== предыдущая лекция | следующая лекция ==>
Постановка задачи | Решение СЛУ методом Зейделя


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.212 сек.