Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум к Главе 3 - s5.doc
Скачиваний:
4
Добавлен:
19.11.2019
Размер:
608.26 Кб
Скачать

Часть 1. Решение слау методом простой итерации.

Схема пересчета в данном случае имеет вид:

Начальное приближение: .

После первого шага ( ) имеем:

.

После второго шага ( ) имеем:

.

После третьего шага ( ) имеем:

.

Итак, полученное решение СЛАУ: .

Часть 2. Решение слау методом Зейделя.

Схема пересчета в данном случае имеет вид:

Начальное приближение: .

После первого шага ( ) имеем:

.

После второго шага ( ) имеем:

.

После третьего шага ( ) имеем:

.

Итак, полученное решение СЛАУ: .

Выполнение работы на ЭВМ.

Часть 1. Решение слау методом простой итерации.

Пример программы на Фортране:

program lab_3_3_1

integer(4), parameter :: n=3

real(4), dimension(n) :: a(n,n),b,x,x1

real(4) :: z,s

integer(4) :: i,j,k

print *,’ Vvedite matritsu A i vector b’

read *,((a(i,j),j=1,n),b(i),i=1,n)

print *,’ Iskhodnaya systema’

do i=1,n

print 1,(A(i,j),j=1,n),b(i)

end do

1 format(10f8.2)

k=0

x=0.

2 z=0.

k=k+1

do i=1,n

s=b(i)

do j=1,n

if(i/=j) s=s-a(i,j)*x(j)

end do

s=s/a(i,i)

z=z+abs(x(i)-s)

x1(i)=s

end do

if(z>0.0001.and.k<100) then

x=x1

goto 2

end if

print*,’ Kolichestvo iteratsiy k=’,k

print 3,x1

3 format(10x,’Reshenie’/2x,10f8.2)

End

Результаты расчета:

Iskhodnaya systema

4.00 1.00 1.00 9.00

1.00 6.00 -1.00 10.00

1.00 2.00 5.00 20.00

Kolichestvo iteratsiy k= 9

Reshenie

1.00 2.00 3.00

Часть 2. Решение слау методом Зейделя.

Пример программы на Фортране:

program lab_3_3_2

integer(4), parameter :: n=3

real(4), dimension(n) :: a(n,n),b,x

real(4) :: z,s

integer(4) :: i,j,k

print *,’ Vvedite matritsu A i vector b’

read *,((a(i,j),j=1,n),b(i),i=1,n)

print *,’ Iskhodnaya systema’

do i=1,n

print 1,(A(i,j),j=1,n),b(i)

end do

1 format(10f8.2)

k=0

x=0.

2 z=0.

k=k+1

do i=1,n

s=b(i)

do j=1,n

if(i/=j) s=s-a(i,j)*x(j)

end do

s=s/a(i,i)

z=z+abs(x(i)-s)

x(i)=s

end do

if(z>0.0001.and.k<100) goto 2

print*,’ Kolichestvo iteratsiy k=’,k

print 3,x

3 format(10x,’Reshenie’/2x,10f8.2)

end

Результаты расчета:

Iskhodnaya systema

4.00 1.00 1.00 9.00

1.00 6.00 -1.00 10.00

1.00 2.00 5.00 20.00

Kolichestvo iteratsiy k= 8

Reshenie

1.00 2.00 3.00

Еще раз подчеркнем, что для обеих представленных выше программ при задании исходных данных следует вводить преобразованную СЛАУ.

Лабораторная работа 3.4. Вычисление собственных значений и собственных векторов симметричной матрицы

Задание.

Вычислить собственные значения и собственные векторы симметричной матрицы на ЭВМ по стандартной подпрограмме NROOT и определить максимальное по модулю собственное число и соответствующий ему собственный вектор степенным методом (ручной счет).

Варианты задания.

,

где ; – номер факультета; – номер группы; – номер студента по журналу.

Пример выполнения лабораторной работы.

Пусть задана матрица

.

Ручной счет.

Задаем начальное приближение.

.

Выполняем нулевой шаг:

Выполняем первый шаг:

.

Выполняем второй шаг:

.

Выполняем третий шаг:

.

Оцениваем погрешность:

( ) .

Таким образом, можем записать ответ в виде

.

Выполнение работы на ЭВМ.

Пример программы на Фортране:

program lab_3_4 ! Требуется подключить файлы

integer(4), parameter :: n=3 ! nroot.for и eigen.for,

real(4), dimension(n,n) :: a,e,x,xl(n) ! содержащие подпрограммы

integer(4) :: i,j ! NROOT и EIGEN из

print *,’ Vvedite matritsu A’ ! математической библиотеки

read*, ((a(i,j),j=1,n),i=1,n) ! SSP

print*,’ Matritsa A’

a=a/6.; e=0.

do i=1,n

e(i,i)=1.

end do

print 1,(a(i,j),j=1,n)

1 format(10f8.2)

print *,’ Matritsa E’

do i=1,n

print 2,(e(i,j),j=1,n)

2 format(10f3.0)

end do

call nroot(n,a,e,xl,x)

print 3,xl

3 format(3x,’Sobstvennie chisla matritsi A’/10f8.2)

print*,’ Sobstvennie vektori matritsi A’

do i=1,n

print 4,(x(i,j),j=1,n)

4 format(10f8.3)

end do

end

К программе необходимо подключить стандартные подпрограммы NROOT и EIGEN.

Заметим, что при задании значений элементов матрицы множитель 1/6 учитывать не надо – деление на 6 предусмотрено в тексте программы. Это сделано для упрощения ввода исходных данных и исключения соответствующих погрешностей, которые иначе могли бы возникнуть.

Результаты расчета:

Matritsa A

5.00 -3.00 4.00

-3.00 12.00 -3.00

4.00 -3.00 5.00

Matritsa E

1. 0. 0.

0. 1. 0.

0. 0. 1.

Sobstvennie chisla matritsi A

15.00 6.00 1.00

Sobstvennie vektori matritsi A

-0.408 0.577 -0.707

0.816 0.577 0.000

-0.408 0.577 0.707