Автор работы: Пользователь скрыл имя, 23 Мая 2013 в 16:59, курсовая работа
Численные методы дают приближенное решение задачи. Это значит, что вместо точного решения и (функции или функционала) некоторой задачи мы находим решение у другой задачи, близкое в некотором смысле (например, по норме) к искомому. Основная идея всех методов — дискретизация или аппроксимация (замена, приближение) исходной задачи другой задачей, более удобной для решения на ЭВМ, причем решение аппроксимирующей задачи зависит от некоторых параметров, управляя которыми, можно определить решение с требуемой точностью. Например, в задаче численного интегрирования такими параметрами являются узлы и веса квадратурной формулы. Далее, решение дискретной задачи является элементом конечномерного пространства.
Введение
1. Решение систем линейных алгебраических уравнений методом простой итерации
1.1 Постановка задачи
1.2 Математическая формулировка задачи
1.3 Обзор существующих численных методов решения задачи
1.4 Численный метод решения задачи
1.5 Схема алгоритма
1.6 Текст программы
1.7 Тестовый пример
При выполнении достаточного условия сходимости оценка погрешности решения на k- ой итерации дается выражением:
где x·- точное решение СЛАУ.
Процесс итераций останавливается при выполнении условия , где εε≤)(kε - задаваемая вычислителем точность.
Принимая во внимание, что из (1.20) следует неравенство , можно получить априорную оценку необходимого для достижения заданной точности числа итераций. При использовании в качестве начального приближения вектора β такая оценка определится неравенством:
откуда получаем априорную оценку числа итераций k при ||α||<1
Следует подчеркнуть, что это неравенство дает завышенное число итераций k, поэтому редко используется на практике.
1.6 Текст программы
program Yakobi;
uses crt;
const
maxn=100;
type
matrix=array[1..maxn,1..maxn] of real;
vector=array[1..maxn] of real;
vector1=array[1..maxn] of real;
var
i,j,n,k1: integer;
e,norma:real;
a: matrix;
b: vector;
x2,x3: vector1;
imya,dannble_i_rezultat,ekran:
procedure input(var kolvo:integer; var pogreshnostb:real; var matr1:matrix; var matr2:vector);
{Ввод исходных данных}
var i,j,code:integer;
a_s: string;
b_s: string;
begin
writeln('введите количество уравнений');
readln(kolvo);
writeln('введите погрешность вычисления');
readln(pogreshnostb);
writeln('введите матрицу коэффициентов при неизвестных');
for i:=1 to kolvo do
for j:=1 to kolvo do
begin
repeat
begin
writeln('введите элемент [',i,',',j,'] и нажмите Enter');
readln(a_s);
if (i=j) and (a_s='0') then
repeat
begin
writeln('Элементы на главной диагонали должны быть отличны от нуля. Повторите ввод');
readln(a_s);
end;
until a_s<>'0';
val(a_s,matr1[i,j],code);
end;
until code=0;
end;
writeln('введите вектор свободных коэффициентов');
for j:=1 to kolvo do
begin
repeat
writeln('введите элемент ',j,' и нажмите Enter');
readln(b_s);
val(b_s,matr2[j],code);
until code=0;
end;
end;
1.7 Тестовый пример