- •Лабораторная работа 3.2. Вычисление обратной матрицы и определителя методом Гаусса
- •Лабораторная работа 3.3. Решение систем линейных алгебраических уравнений итерационными методами
- •Часть 1. Решение слау методом простой итерации.
- •Часть 2. Решение слау методом Зейделя.
- •Часть 1. Решение слау методом простой итерации.
- •Часть 2. Решение слау методом Зейделя.
- •Лабораторная работа 3.4. Вычисление собственных значений и собственных векторов симметричной матрицы
- •Лабораторная работа 3.5. Численное интегрирование
- •Лабораторная работа 3.6. Вычисление корня нелинейного уравнения
- •Лабораторная работа 3.7. Построение прямой по методу наименьших квадратов
Часть 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