- •Содержание
- •Лекция № 1. Теория погрешностей План
- •1.1. Источники и классификация погрешностей
- •1.2. Абсолютная и относительная погрешности. Формы записи данных
- •1.3. Вычислительная погрешность
- •2.1. Общие сведения и определения
- •2.2. Отделение корней
- •2.3. Метод половинного деления
- •2.4. Метод простой итерации
- •2.5. Преобразование уравнения к итерационному виду
- •2 0.777373 -3.32063 Search
- •Лекция № 3. Методы решения систем линейных алгебраических уравнений План
- •3.1. Общие сведения и основные определения
- •3.2. Метод Гаусса и его реализация в пакете matlab
- •3.3. Вычисление определителей
- •3.4. Решение систем линейных уравнений методом простой итерации
- •5. Метод Зейделя
- •3.6. Решение систем линейных уравнений средствами пакета matlab
- •Выражения
- •Лекция № 4. Методы решения систем нелинейных уравнений
- •4.2. Метод Ньютона решения систем нелинейных уравнений
- •Последовательные приближения корней
- •4.3. Решение нелинейных систем методами спуска
- •4.4. Решение систем нелинейных уравнений средствами пакета matlab
- •Iteration Func-count f(X) step optimality cg-iterations
- •Iteration Func-count f(X) step optimality cg-iterations
- •Лекция № 5. Интерполирование функций План
- •5.1. Постановка задачи
- •Решение задачи находится отысканием некоторой приближающей функции f(X), близкой в некотором смысле к функции f(X), для которой известно аналитическое выражение/
- •5.2. Интерполяционный полином Лагранжа
- •5.3. Интерполяционный полином Ньютона для равноотстоящих узлов
- •5.3.1. Конечные разности
- •5.3.2. Первая интерполяционная формула Ньютона
- •5.3.3. Вторая интерполяционная формула Ньютона
- •5.4. Погрешность интерполяции
- •5.5. Сплайн-интерполяция
- •5.6. Решение задачи одномерной интерполяции средствами пакете matlab
- •Лекция № 6. Численное дифференцирование
- •6.2. Особенности задачи численного дифференцирования функций, заданных таблично
- •6.3. Интегрирование функций, заданных аналитически (формула прямоугольников, формула трапеций, формула Симпсона)
- •6.4. Погрешность численного интегрирования
- •6.5. Вычисление интегралов методом Монте-Карло
- •Лекция № 7. Методы обработки экспериментальных данных План
- •7.1. Метод наименьших квадратов
- •Сумма квадратов отклонений
- •7.2. Нахождение приближающей функции в виде линейной функции и квадратичного трехчлена
- •7.5. Аппроксимация функцией произвольного вида
- •Лекция № 8. Преобразование Фурье
- •8.2. Эффект Гиббса
- •8.3. Спектральный анализ дискретных функций конечной длительности
- •8.4. Быстрое преобразование Фурье
- •Лекция № 9. Численные методы решения обыкновенных дифференциальных уравнений План
- •9.1. Основные сведения и определения
- •9.2. Метод Пикара
- •9.3. Метод Эйлера
- •9.4. Метод Рунге-Кутта
- •9.5. Средства пакета matlab для решения обыкновенных дифференциальных уравнений
5. Метод Зейделя
При решении системы линейных уравнений вычислительные формулы имеют вид:
(3.27)
где .
Из (3.27) видно, что в методе простой итерации для получения нового значения вектора решений на i+1-ом шаге используются значения переменных, полученные на предыдущем шаге.
Основная идея метода Зейделя состоит в том, что на каждом шаге итерационного процесса при вычислении значения переменной учитываются уже найденные значения:
(3.28)
Достаточные условия сходимости итерационного процесса (3.23)(3.25) также являются достаточным условиями сходимости метода Зейделя.
Существует возможность автоматического преобразования исходной системы к виду, обеспечивающему сходимость итерационного процесса метода Зейделя. Для этого умножим левую и правую части системы (3.2) на транспонированную матрицу системы AT, получим равносильную систему
, (3.29)
где ,.
Система (3.29) называется нормальной системой уравнений. Нормальные системы уравнений обладают рядом свойств, среди которыхможно выделить следующие:
1) матрица C коэффициентов при неизвестных нормальной системы является симметрической (т.е. ,);
2) все элементы, стоящие на главной диагонали матрицы C положительны (т.е. ,).
Последнее свойство дает возможность «автоматически» приводить нормальную систему (3.29) к виду, пригодному для итерационного процесса Зейделя:
(3.30)
где
, (3.31)
и
. (3.32)
Целесообразность приведения системы к нормальному виду и использования метода Зейделя вытекает из следующей теоремы:
Теорема 3.2. Итерационный процесс метода Зейделя для приведенной системы (3.30), эквивалентной нормальной системе (3.29), всегда сходится к единственному решению этой системы при любом выборе начального приближения [2].
Таким образом решение произвольной системы линейных уравнений вида (3.1) методом Зейделя реализуется в соответствие со следующим алгоритмом:
1. Ввод матрицы А коэффициентов исходной системы и вектор-столбца свободных членов.
2. Приведение системы к нормальной умножением обеих частей системы на транспонированную матрицу АT.
3. Приведение нормальной системы к виду, пригодному для итерационного процесса Зейделя (3.30), (3.31).
4. Задание требуемой точности решения.
5. Циклическое выполнение итерационного процесса до достижения требуемой точности.
Для реализации метода Зейделя в пакете MATLAB необходимо:
1. Создать файл Zeidel.m, содержащий описание функции, выполняющей последовательно: а) приведение системы к нормальному виду; б) приведение нормальной системы к виду, пригодному для итерационного процесса Зейделя; в) реализацию итерационного процесса Зейделя.
% листинг файла Zeidel.m
function [z1,z2]=Zeidel(A,b,eps)
N=size(A,1);
% приведение системы к нормальному виду
C=A'*A;
D=A'*b;
% приведение системы к виду пригодному для итерационного процесса
% Зейделя
for i=1:N
D1(i)=D(i)/C(i,i);
end;
D1=D1'; % транспонирование матрицы
d1=D1;
for i=1:N
for j=1:N
if i==j
C1(i,j)=0;
else
C1(i,j)=-C(i,j)/C(i,i);
end;
end;
end;
% решение системы линейных уравнений методом Зейделя
R1=d1;
while Flag==0
for i=1:N
v=C1(i,1:N); % выделение i-oй строки матрицы
a=dot(v',d1); % вычисление скалярного произведения
d1(i)=a+D1(i);
end;
R2=d1;
s=max(abs(R2-R1));
if s<eps
z1=d1;
z2=s;
return
end;
R1=R2;
end;
2. Задать матрицу коэффициентов при неизвестных исходной системы линейных уравнений и столбец свободных членов
>> A=[1,2,3,4,5;10,9,8,7,6;5,9,11,12,13;20,1,3,17,14;12,10,4,16,15]
>> b=[10,20,30,40,50];
3. Вычислить решение системы линейных уравнений, используя функцию Zeidel( )
>> Zeidel1(A,b,10^-6)
ans =
0.0972
1.4325
-1.3533
1.6564
0.8947
4. Проверить полученное решение
>> A*ans
ans =
10.0013
20.0003
29.9995
39.9999
50.0000