Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
246
ЛАБОРАТОРНЫЙ ПРАКТИКУМ К ГЛАВЕ 3
Лабораторная работа 3.1.
Решение системы линейных алгебраических уравнений
методом Гаусса
Задание.
Решить СЛАУ методом Гаусса.
Варианты задания.
где номер факультета; номер группы; номер студента по журналу.
Пример выполнения лабораторной работы.
Дана система уравнений
Ручной счет.
Расширенная матрица системы имеет вид:
.
Выполним прямой ход метода Гаусса.
На первом шаге прямого хода из второй строки вычитаем первую, умноженную на коэффициент , а из третьей строки вычитаем первую, умноженную на . В результате после первого шага будем иметь:
.
На втором шаге прямого хода из третьей строки вычитаем вторую, умноженную на . В результате после второго шага будем иметь:
.
Выполним теперь обратный ход метода Гаусса.
Эквивалентная система с треугольной матрицей может быть записана следующим образом:
Из третьего уравнения находим:
.
Из второго уравнения находим:
.
Из первого уравнения находим:
.
Итак, решение рассматриваемой СЛАУ следующее:
.
Выполнение работы на ЭВМ.
Пример программы на Фортране:
program lab_3_1 ! Требуется подключить файл integer(4), parameter :: n=3 ! simq.for, содержащий real(4), dimension(n,n) :: A,b(n) ! подпрограмму SIMQ из integer(4) :: i,j,ier ! математической библиотеки SSP 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) call SIMQ(A,b,n,ier) print *, Kod oshibki ier=,ier print 2,b 2 format(8x,Reshenie/10f8.2) end |
К программе необходимо подключить стандартную подпрограмму SIMQ.
Результаты расчета:
Iskhodnaya systema
2.00 -3.00 1.00 -1.00
1.00 2.00 -6.00 -10.00
5.00 1.00 1.00 3.00
Kod oshibki ier= 0
Reshenie
0.00 1.00 2.00
Коэффициенты системы вводятся строками расширенной матрицы.
Лабораторная работа 3.2.
Вычисление обратной матрицы и определителя методом Гаусса
Задание.
Для заданной матрицы вычислить обратную матрицу и определитель.
Варианты задания.
,
где номер факультета; номер группы; номер студента по журналу.
Пример выполнения лабораторной работы.
Пусть задана матрица
Ручной счет.
Соответствующая расширенная матрица:
.
Выполним прямой ход метода Гаусса по всей расширенной матрице.
После первого шага получим:
.
После второго шага получим:
.
Вычисляем определитель матрицы:
.
Для вычисления элементов обратной матрицы выполним теперь обратный ход по каждой правой части расширенной матрицы.
Вычисляем элементы первого столбца обратной матрицы:
из третьего уравнения
;
из второго уравнения
;
из первого уравнения
.
Вычисляем элементы второго столбца обратной матрицы:
из третьего уравнения
;
из второго уравнения
;
из первого уравнения
.
Вычисляем элементы третьего столбца обратной матрицы:
из третьего уравнения
;
из второго уравнения
;
из первого уравнения
.
Итак, искомая обратная матрица имеет вид:
.
Выполнение работы на ЭВМ.
Пример программы на Фортране:
program lab_3_2 ! Требуется подключить файл integer(4), parameter :: n=3 ! minv.for, содержащий real(4), dimension(n,n) :: A ! подпрограмму MINV из integer(4), dimension(n) :: l,m ! математической библиотеки SSP real(4) :: d integer(4) :: i,j print*, Vvedite matritsu A read *,((A(i,j),j=1,n),i=1,n) print *, Iskhodnaya matritsa do i=1,n print 1,(A(i,j),j=1,n) end do 1 format(10f8.4) call MINV(A,n,D,L,M) print *, Obratnaya matritsa do i=1,n print 1,(A(i,j),j=1,n) end do print 2,D 2 format(8x,Opredelitel matritsi D=,f8.2) end |
К программе необходимо подключить стандартную подпрограмму MINV.
Результаты расчета:
Iskhodnaya matritsa
2.00 -3.00 1.00
1.00 2.00 -6.00
5.00 1.00 1.00
Obratnaya matritsa
0.08 0.04 0.16
-0.31 -0.03 0.13
-0.09 -0.17 0.07
Opredelitel matritsi D= 100.00
Лабораторная работа 3.3.
Решение систем линейных алгебраических уравнений
итерационными методами
Задание.
1. Для заданной СЛАУ сделать 3 шага по итерационным схемам ме-
тодов простой итерации и Зейделя.
2. Решить СЛАУ на ЭВМ методом простой итерации и/или методом Зейделя (по указанию преподавателя).
Варианты задания.
где номер факультета; номер группы; номер студента по журналу.
Пример выполнения лабораторной работы.
Дана система уравнений
Выполним проверку выполнения достаточного условия сходимости.
Проверяем условие диагонального преобладания.
первое уравнение: 4>1+1=2 выполняется;
второе уравнение: 2<1+5=6 не выполняется;
третье уравнение: |1|<1+6=7 не выполняется.
Таким образом, условие диагонального преобладания для исходной системы уравнений не выполняется и поэтому не может быть гарантирована сходимость итерационных методов к решению. Для данной системы можно добиться выполнения этого условия перестановкой второго и третьего уравнений:
Проверяем условие диагонального преобладания для преобразованной системы:
первое уравнение: 4>1+1=2 выполняется;
второе уравнение: 6>1+|1|=2 выполняется;
третье уравнение: 5>1+2=3 выполняется.
Ручной счет.
Часть 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
Лабораторная работа 3.5.
Численное интегрирование
Задание.
Задан интеграл
; полином третьей степени.
1. Требуется вычислить заданный интеграл вручную по формулам методов прямоугольников, трапеций, Симпсона, приняв .
2. Требуется вычислить заданный интеграл на ЭВМ по стандартной подпрограмме QATR, а также одним (или всеми) из численных методов (прямоугольников, трапеций, Симпсона) по указанию преподавателя.
Варианты задания.
,
где ;
номер группы; номер студента по журналу.
Пример выполнения лабораторной работы.
Вычислить
, где .
Ручной счет.
; .
Метод прямоугольников.
Имеем: , , .
Дальнейший расчет сведен в табличную форму (см. таблицу Л3.5.1).
Таблица Л3.5.1. Вычисление интеграла методом прямоугольников.
1 |
0.375 |
0.713 |
2 |
1.125 |
0.283 |
3 |
1.875 |
3.951 |
4 |
2.625 |
12.822 |
На основании данных, приведенных в таблице Л3.4.1, вычисляем:
,
откуда .
Метод трапеций.
Имеем: , , .
Дальнейший расчет сведен в табличную форму (см. таблицу Л3.5.2).
Таблица Л3.5.2. Вычисление интеграла методом трапеций.
0 |
0.0 |
1.0 |
1 |
0.75 |
0.391 |
2 |
1.5 |
1.625 |
3 |
2.25 |
7.578 |
4 |
3.0 |
20.0 |
На основании данных, приведенных в таблице Л3.4.1, вычисляем:
,
откуда .
Метод Симпсона.
Имеем: , , .
Дальнейший расчет сведен в табличную форму (см. таблицу Л3.5.3).
Таблица Л3.5.3. Вычисление интеграла методом Симпсона.
0 |
0.0 |
1.0 |
1 |
0.75 |
0.391 |
2 |
1.5 |
1.625 |
3 |
2.25 |
7.578 |
4 |
3.0 |
20.0 |
На основании данных, приведенных в таблице Л3.4.1, вычисляем:
,
откуда .
Выполнение работы на ЭВМ.
Пример программы на Фортране:
program lab_3_5 ! Требуется подключить файл real(4), external :: p,pr,tr,simps ! qatr.for содержащий real(4), dimension(20) :: r ! подпрограмму QATR из real(4) :: a,b,eps,sq ! математической библиотеки integer(4) :: n,nmax,ier ! SSP print *, Vvedite a,b,eps,nmax read *, a,b,eps,nmax print 1, aintegr(a,b,eps,nmax,n,pr,p),n print 2, aintegr(a,b,eps,nmax,n,tr,p),n print 3, aintegr(a,b,eps,nmax,n,simps,p),n call qatr(a,b,eps,20,p,sq,ier,r) print 4, sq 1 format(1x,Metod pryamougolnikov: integral=,f10.3,3x,n=,i6) 2 format(1x,Metod trapetsiy: integral=,f10.3,3x,n=,i6) 3 format(1x,Metod Simpsona: integral=,f10.3,3x,n=,i6) 4 format(1x,S/p QATR: integral=,f10.3) end ! Подпрограмма вычисления интеграла одним из трех методов function aintegr(a,b,eps,nmax,n,sint,f) external f real(4) :: a,b,s1,s2,f,eps,aintegr integer(4) :: n,nmax n=4 s1=sint(a,b,f,n) 1 n=2*n s2=sint(a,b,f,n) if(abs(s2-s1)<eps.or.n>nmax) goto2 s1=s2 goto 1 2 aintegr=s2 end ! Подпрограмма вычисления интеграла по формуле прямоугольников function pr(a,b,f,n) real(4) :: a,b,h,x,s,pr,f integer(4) :: n h=(b-a)/n; x=a+h/2; s=0. do i=1,n s=s+f(x); x=x+h end do pr=h*s end ! Подпрограмма вычисления интеграла по формуле трапеций function tr(a,b,f,n) real(4) :: a,b,h,x,s,tr,f integer(4) :: n h=(b-a)/n; x=a; s=(f(a)+f(b))/2 do i=2,n x=x+h; s=s+f(x) end do tr=h*s end ! Подпрограмма вычисления интеграла по формуле Симпсона function simps(a,b,f,n) real(4) :: a,b,h,x,s,simps,f integer(4) :: n,z h=(b-a)/n; x=a+h; s=f(a)+f(b); z=1 do i=2,n s=s+(3+z)*f(x); z=-z; x=x+h end do simps=h/3*s end ! Подпрограмма вычисления подынтегральной функции function p(x) real(4) :: x,p p=1-x+x**2-x**3 end |
Результаты расчета:
Metod pryamougolnikov: integral= -12.750 n= 256
Metod trapetsiy: integral= -12.750 n= 256
Metod Simpsona: integral= -12.750 n= 8
S/p QATR: integral= -12.750
По тексту программы необходимо сделать ряд пояснений и замечаний.
1. В приведенной программе реализованы все три рассматриваемые в настоящем курсе формулы численного интегрирования:
2. При выполнении задания необходимо составить программу лишь для одного (или всех) из этих методов, указанного преподавателем.
3. Переменная (в программе nmax) определяет количество отрезков, на которые делится интервал интегрирования для вычисления интеграла с заданной точностью. При этом значение n последовательно удваивается до тех пор, пока изменение приближенного значения интеграла не станет меньше заданного малого числа (в программе eps), значение которого вводится. При расчете было принято: nmax=1000, eps=0.001.
4. К данной программе необходимо подключить стандартную подпрограмму QATR.
Лабораторная работа 3.6.
Вычисление корня нелинейного уравнения
Задание.
Задан полином третьей степени .
1. Требуется вычислить корень полинома на отрезке методом половинного деления и методом Ньютона вручную. В критериях окончания счета для обоих методов принять .
2. Требуется вычислить корень полинома на отрезке на ЭВМ методом половинного деления или методом Ньютона (по указанию преподавателя). В критериях окончания счета на ЭВМ для обоих методов принять .
Варианты задания.
,
где ;
номер группы; номер студента по журналу.
Пример выполнения лабораторной работы.
Найти на отрезке корни полинома
.
Ручной счет.
Метод половинного деления.
Расчет сведен в табличную форму (см. таблицу Л3.6.1).
Таблица Л3.6.1. Вычисление корня методом половинного деления.
0 |
0 |
3.0 |
1.5 |
2.92 |
9.79 |
0.5 |
3.0 |
1 |
0 |
1.5 |
0.75 |
2.92 |
0.51 |
0.67 |
1.5 |
2 |
0.75 |
1.5 |
1.125 |
0.67 |
0.51 |
0.11 |
0.75 |
3 |
1.125 |
1.5 |
1.3125 |
0.11 |
0.51 |
0.173 |
0.375 |
4 |
1.125 |
1.3125 |
1.218 |
0.11 |
0.173 |
0.0267, что меньше =0.1 |
0.187 0.06(b-a) |
На основании результатов таблицы Л3.5.1 имеем: .
Метод Ньютона.
Имеем:
; .
Начальное приближение: .
Расчет сведен в табличную форму (см. таблицу Л3.6.2).
На основании результатов таблицы Л3.6.2 имеем: .
Таблица Л3.6.2. Вычисление корня методом половинного деления.
0 |
3.0 |
9.79 |
12.64 |
2.22 |
0.78 |
1 |
2.22 |
3.01 |
5.45 |
1.67 |
0.55 |
2 |
1.67 |
0.89 |
2.52 |
1.32 |
0.35 |
3 |
1.32 |
0.18 |
1.62 |
1.20 |
0.12 |
4 |
1.20 |
0 |
критерий окончания расчета |
Выполнение работы на ЭВМ.
Метод половинного деления.
Пример программы на Фортране:
program lab_3_6_1 real(4) :: x,f,a,b,eps,c,y integer(4) :: k f(x)=x**3-3.2*x**2+4.84*x-2.928 print *, Vvedite a,b,eps read *,a,b,eps k=0 1 k=k+1 c=(a+b)/2; y=f(c) if(f(a)*y>0) then a=c else b=c end if if(b-a>eps.and.y/=0.and.k<100) goto 1 print 2,c,y,k 2 format(//2x,Koren uravneniya x=,f8.4,/2x,f(x)=,e11.4,& /2x,Kolichestvo iteratsiy k=,i3) end |
Результаты расчета:
Koren uravneniya x= 1.2000
f(x)= 0.6504E-03
Kolichestvo iteratsiy k= 12
Заметим, что при расчете было принято a=0, b=3, eps=0.001.
Метод Ньютона.
Пример программы на Фортране:
program lab_3_6_2 real(4) :: x,f,f1,xk,eps,xk1,y integer(4) :: k f(x)=x**3-3.2*x**2+4.84*x-2.928 f1(x)=3*x**2-6.4*x+4.84 print *, Vvedite xk,eps read *, xk,eps k=0 1 k=k+1 xk1=xk-f(xk)/f1(xk) if(abs(xk1-xk)<eps.or.k>100) goto 2 xk=xk1 goto 1 2 y=f(xk1) print 3,xk1,y,k 3 format(//2x,Koren uravneniya x=,f8.4,/2x,f(x)=,e11.4,& /2x, Kolichestvo iteratsiy k=,i3) end |
Результаты расчета:
Koren uravneniya x= 1.2000
f(x)= 0.4768E-06
Kolichestvo iteratsiy k= 3
Заметим, что при расчете было принято xk=1.5, eps=0.001.
Лабораторная работа 3.7.
Построение прямой по методу наименьших квадратов
Задание.
Построить оптимальную прямую для заданных точек на плоскости с координатами ().
Варианты задания.
Для расчета на ЭВМ следует взять точек. Для ручного счета
точки. Точки берутся из таблиц Л3.7.1 Л3.7.2 подряд, начиная с номера студента по журналу.
Таблица Л3.7.1. Варианты заданий.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
2 3 3 5 6 7 13 13 11 10 9 8 2 2 4 5 6 7 8 8 3 9 11 |
|
1 2 3 4 7 7 15 17 11.5 10 8 6.5 1 3 4 5.5 6 6.5 7 9 3 8 10 |
Таблица Л3.7.2. Варианты заданий (продолжение).
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
13 14 14 8 5 7 12 2 1 8 15 12 12 7 5 9 6 7 7 5 |
|
12 13 14 9 6 7 11 1 1 7 15 13 12 6.5 5 8 6 6.5 8 4 |
Пример выполнения лабораторной работы.
Пусть заданы координаты точек, представленные в таблице Л3.7.3.
Таблица Л3.7.3. Координаты заданных точек.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
1 |
2 |
3 |
4 |
4 |
5 |
3 |
6 |
10 |
8 |
9 |
7 |
|
2 |
2,5 |
2 |
4 |
4,5 |
5 |
4 |
5 |
9 |
7 |
8 |
7 |
Ручной счет.
Расчет сведен в табличную форму (см. таблицу Л3.7.4).
Подставляем полученные значения в систему уравнений относительно коэффициентов искомой прямой и :
Таблица Л3.7.4. Ручной счет.
1 |
1 |
2 |
1 |
2 |
2 |
2 |
2,5 |
4 |
5 |
3 |
3 |
2 |
9 |
6 |
4 |
4 |
4 |
16 |
16 |
S |
10 |
10,5 |
30 |
29 |
Решая эту систему, например, по методу Крамера, получим:
; ,
где ;
; .
Следовательно, ; .
Итак, уравнение искомой прямой имеет вид: .
Выполнение работы на ЭВМ.
Пример программы на Фортране:
program lab_3_7 integer(4), parameter :: n=12 real(4), dimension(n) :: x,y real(4) :: s,sx,sy,sxy,sxx,a,b integer(4) :: i open(1,file=inpdata.dat) ! Исходные данные вводятся из файла read(1,*)x read(1,*)y print 1,x 1 format(2x,Dannie eksperimenta,/2x,X:,(12f6.1)) print 2,y 2 format(2x,Y:,(12f6.1)) s=0.; sx=0.; sy=0.; sxy=0.; sxx=0. do i=1,n sx=sx+x(i); sy=sy+y(i); sxy=sxy+x(i)*y(i); sxx=sxx+x(i)*x(i) end do a=(n*sxy-sx*sy)/(n*sxx-sx*sx); b=(sy-a*sx)/n do i=1,n s=s+(a*x(i)+b-y(i))**2 ! Вычисление суммы квадратов отклонений end do print 3,a,b,s 3 format(10x,MNK-pryamaya/10x,y=,f8.4,x+,f8.4,5x,s=,f8.4) pause end |
Результаты расчета:
Dannie eksperimenta
Y: 2.0 2.5 2.0 4.0 4.5 5.0 4.0 5.0 9.0 7.0 8.0 7.0
y= 0.7918x+ 0.9089 s= 3.2807
PAGE 248