Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
report.docx
Скачиваний:
119
Добавлен:
28.03.2015
Размер:
1.47 Mб
Скачать
      1. Метод Зейделя

Таблица идентификаторов

В таблице 10 приведены основные идентификаторы, используемые в программе, реализующей метод Зейделя на языке Fortran.

Таблица 10 – Идентификаторы для метода Зейделя

Название переменной

Тип

Описание

N

int

Размерность матрицы коэффициентов

matrix [N][ N+1]

double

Матрица коэффициентов + свободные члены

x_old [N]

double

Корни подсчитанные на i-ой итерации

x [N]

double

Корни

exp

double

Погрешность вычисления

//zeid.for

1

2-5

6

9 72

program zeid

implicit none

character*64 file_name

real matrix(100,101), x(100), x_old(100), summa, eps

integer i, j, k, N

write(*,*) "Enter file name: "

read(*, *)file_name

!чтение матрицы из файла

open(3, FILE = file_name)

read(3,*) N !размерность матрицы

do i = 1,N

read(3,*) (matrix(i,j), j=1,N+1)

end do

!печать матрицы

do i = 1,N

write(*,*) (matrix(i,j), j=1,N+1)

x(i) = 0.0

x_old(i) = 1.0

end do

write(*,*) "Entereps: "

read(*,*)eps

!проверка на сходимость

do i = 1,N

summa=0.0

do j = 1,N

summa = summa + abs(matrix(i,j))

end do

summa = summa - abs(matrix(i,i));

if (summa > abs(matrix(i,i))) then

stop ' diverges'

end if

end do

!делать итерации, пока не будет достигнута точность

do while(.true.)

do i = 1,N

! проверка, не достигнута ли заданная точность

if(abs(x(i) - x_old(i)) < eps) then

do k=1, N

print*,"x(",k,")=",x(k)

enddo

stop

end if

end do

do i = 1,N

x_old(i) = x(i)

end do

do i = 1,N

summa = 0.0;

do j = 1,N

if (i /= j) then

summa = summa + (x(j)*matrix(i,j));

end if

end do

x(i) = (matrix(i,N+1)-summa)/matrix(i,i);

end do

end do

end program

  1. Результаты и их анализ

В таблицах 11 и 12 представлены результаты работы программ, реализующих методы: Гаусса, простой итерации, Зейделя, Крамера, Халецкого, Гаусса с выбором главного элемента и метод квадратных корней на языках программирования С++ и Fortran, показанные на рисунках 2.1-2.15, а также результаты полученные средствамиExcel, (рис.4.1-4.14). Также в таблице приведены расхождения в полученных результатах.

Таблица 11 – Сводная таблица результатов (Король)

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

Результат работы программы

Результат ручного подсчета

Расхождение результатов

С++

Гаусс:

х1=1,086

х2=0,008

х3=0,825

Итерации:

х1=1,2772

х2=-0,4441

х3=-0,2617

x4=0,2016

Зейдель:

х1=-19,7513

х2=58,4989

х3=-9,6409

Крамер:

х1=2

х2=0

х3=0

x4=0

Метод Халецкого:

х1=0,974

х2=-0,466

х3=0,282

x4=-0,569

y1=3,484

y2=0,209

y3=2,422

y4=-0,569

Метод главных элементов:

х1=3,429

х2=1,666

х3=-0,791

Метод квадратных корней:

х1=11,754

х2=-13,104

х3=1,2060

1=12,754

2=-12,104

3=2,200

Гаусс:

х1=1,0863

х2=0,0082

х3=0,8253

Итерации:

х1=1,2772

х2=-0,4441

х3=-0,2617

x4=0,2016

Зейдель:

х1=-19,75

х2=58,49

х3=-9,64

Крамер:

х1=2

х2=0

х3=0

x4=0

Метод Халецкого:

х1=0,974

х2=-0,466

х3=0,282

x4=-0,569

y1=3,484

y2=0,209

y3=2,422

y4=-0,569

Метод главных элементов:

х1=3,429

х2=1,666

х3=-0,791

Метод квадратных корней:

х1=11,754

х2=-13,104

х3=1,206

1=12,754

2=-12,104

3=2,200

Гаусс:

х1=0,0003

х2=0,0002

х3=0,0003

Итерации:

отсутствуют

Зейдель:

отсутствуют

Крамер:

отсутствуют

Метод Халецкого:

отсутствуют

Метод главных элементов:

отсутствуют

Метод квадратных корней:

отсутствуют

Excel

Гаусс:

х1=1,0863

х2=0,008222

х3=0,825374

Итерации:

х1=1,277278

х2=-0,444148

х3=-0,261745

x4=0,201607

Зейдель:

х1=-19,7513

х2=58,49896

х3=-9,64094

Крамер:

х1=2

х2=0

х3=0

x4=0

Метод Халецкого:

х1=0,9745

х2=-0,4665

х3=0,2828

x4=-0,5697

y1=3,4844

y2=0,2097

y3=2,4221

y4=-0,5697

Метод главных элементов:

х1=3,429

х2=1,666

х3=-0,791

Метод квадратных корней:

х1=11,754

х2=-13,104

х3=1,206

1=12,754

2=-12,104

3=2,200

Гаусс:

отсутствуют

Итерации:

Для х10,000078

Для х20,000048

Для х30,000045

Для x4 0,000007

Зейдель:

х1=0,0013

х2=0,00896

х3=-9,64094

Крамер:

отсутствуют

Метод Халецкого:

х1=0,005

х2=-0,005

х3=0,008

x4=-0,007

y1=0,004

y2=0,007

y3=0,001

y4=-0,0007

Метод главных элементов:

отсутствуют

Метод квадратных корней:

отсутствуют

Fortran

Гаусс:

х1=1,0863

х2=0,008222

х3=0,825374

Итерации:

х1=1,277278

х2=-0,444148

х3=-0,261745

x4=0,201607

Зейдель:

х1=-19,7513

х2=58,49896

х3=-9,64094

Гаусс:

отсутствуют

Итерации:

Для х10,000078

Для х20,000048

Для х30,000045

Для x4 0,000007

Зейдель:

Для х10,0000226

Для х20,0000437

Для х30,0001051

Таблица 12 – Сводная таблица результатов (Скворцова)

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

Результат работы программы

Результат ручного подсчета

Расхождение результатов

С++

Гаусс:

х1=0,587

х2=0,031

х3=0,255

Итерации:

х1=-1,53107

х2=-0,771092

х3=0,909281

x4=0,687675

Зейдель:

х1=3,137266

х2=-12,4684

х3=-6,60387

Крамер:

х1=2

х2=0

х3=0

x4=0

Метод Халецкого:

х1=8,234

х2=0,776

х3=-0,6901

x4=-0,655

y1=9,0909

y2=0,4198

y3=-0,077

y4=-0,655

Метод главных элементов:

х1=-0,791

х2=1,666

х3=-3,429

Метод квадратных корней:

х1=2,691

х2=-2,849

х3=0,825

1=3,691

2=-1,849

3=1,825

Гаусс:

х1=0,587

х2=0,031

х3=0,255

Итерации:

х1=-1,531105

х2=-0,771126

х3=0,909377

x4=0,687759

Зейдель:

х1=3,1373

х2=-12,4684

х3=-6,6039

Крамер:

х1=2

х2=0

х3=0

x4=0

Метод Халецкого:

х1=8,234

х2=0,776

х3=-0,6901

x4=-0,655

y1=9,0909

y2=0,4198

y3=-0,077

y4=-0,655

Метод главных элементов:

х1=-0,791

х2=1,666

х3=-3,429

Метод квадратных корней:

х1=2,691

х2=-2,849

х3=0,825

1=3,691

2=-1,849

3=1,825

Гаусс:

отсутствуют

Итерации:

х1=0,000012

х2=0,000034

х3=0,00009

x4=0,000104

Зейдель:

х1=0,000034

х3=0,00013

Крамер:

отсутствуют

Метод Халецкого:

отсутствуют

Метод главных элементов:

отсутствуют

Метод квадратных корней:

отсутствуют

Excel

Гаусс:

х1=0,586723

х2=0,030839

х3=0,254991

Итерации:

х1=-1,531105

х2=-0,771126

х3=0,909377

x4=0,687759

Зейдель:

х1=3,137266

х2=-12,4684

х3=-6,60387

Крамер:

х1=2

х2=0

х3=0

x4=0

Метод Халецкого:

х1=8,2339

х2=0,776

х3=-0,6901

x4=-0,6551

y1=9,0909

y2=0,4198

y3=-0,0771

y4=-0,6551

Метод главных элементов:

х1=-0,791

х2=1,666

х3=-3,429

Метод квадратных корней:

х1=2,691

х2=-2,849

х3=0,825

1=3,691

2=-1,849

3=1,825

Гаусс:

х1=0,000023

х2=0,000171

х3=0,000111

Итерации:

отсутствуют

Зейдель:

х1=0,000044

х3=0,000013

Крамер:

отсутствуют

Метод Халецкого:

х1=0,005

х2=-0,005

х3=0,008

x4=-0,007

y1=0,004

y2=0,007

y3=0,001

y4=-0,0007

Метод главных элементов:

отсутствуют

Метод квадратных корней:

отсутствуют

Fortran

Гаусс:

х1=0,587623

х2=0,0309

х3=0,25499

Итерации:

х1=-1,53107

х2=-0,771092

х3=0,909281

x4=0,687675

Зейдель:

х1=3,137266

х2=-12,4684

х3=-6,60387

Гаусс:

х1=0,0000623

х2=0,00009

х3=0,000011

Итерации:

х1=0,000012

х2=0,000034

х3=0,00009

x4=0,000104

Зейдель:

х1=0,000034

х3=0,00013

  1. Выводы

Существует несколько методов решения систем линейных уравнений, мы изучили метод Гаусса, метод простой итерации, метод Зейделя, метод Крамера, метод Халецкого, метод главных элементов и метод квадратных корней. Какие-то из этих методов являются более эффективными, а какие-то менее.

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

Если вычисления ведутся с помощью калькулятора, то для сокращения записи промежуточных результатов при решении систем линейных алгебраических уравнений используют компактную схему Гаусса. При работе на калькуляторе удобна также схема Халецкого. В ней получение расчетных формул основано на представлении матрицы (невырожденной, квадратной) системы в виде произведения двух треугольных матриц согласноLU-теореме.

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

В случае, когда  A– симметрическая матрица, для экономии памяти следует применять метод квадратного корня.

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

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

В зависимости от того, какого вида СЛАУ требуется решить, зависит и выбор метода.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]