Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program e03010
- dimension y(13), z(15) !Объявляем массивы и задаем начальные значения икса и шага икса
- x = -3.02
- step = 0.475
- open(1, file = 'massive.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл
- do i=1,13
- call yx(y(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Y, а так же записываем их в файл
- print 11, 'y(',x,y(i)
- write(1,11) 'y(',x,y(i)
- x = x+step !Увеличиваем X на заданное значение шага
- end do
- x = -3.02
- do i=1,15
- call zx(z(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Z, а так же записываем их в файл
- print 11, 'z(',x,z(i)
- write(1,11) 'z(',x,z(i)
- x = x+step
- enddo
- close(1)
- 11 format (A2,F5.2,') = ',x,F6.2)
- end
- subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
- y = ((6*x+2)*cos(13*x))/(x+3.2)
- end
- subroutine zx(z,x)
- z = (sin(5*x))/(9*x+3.26)
- end
- _________________________________________________________________________________________
- program e03012
- dimension y(23), z(23) !Объявляем массивы и задаем начальные значения икса и шага икса
- x = -2.7
- step = 0.3
- open(1, file = 'massive.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл
- do i=1,23
- call yx(y(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Y, а так же записываем их в файл
- print 11, 'y(',x,y(i)
- write(1,11) 'y(',x,y(i)
- x = x+step !Увеличиваем X на заданное значение шага
- end do
- x = -2.7
- do i=1,23
- call zx(z(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Z, а так же записываем их в файл
- print 11, 'z(',x,z(i)
- write(1,11) 'z(',x,z(i)
- x = x+step
- enddo
- close(1)
- 11 format (A2,F5.2,') = ',x,F6.2)
- end
- subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
- y = -3*x*cos(x)
- end
- subroutine zx(z,x)
- z = sin(3*x)/(x+4.2)
- end
- ________________________________________________________________________________________________
- program e03014
- dimension y(23), z(5) !Объявляем массивы и задаем начальные значения икса и шага икса
- x = -3.5
- step = 0.457
- open(1, file = 'massive.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл
- do i=1,23
- call yx(y(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Y, а так же записываем их в файл
- print 11, 'y(',x,y(i)
- write(1,11) 'y(',x,y(i)
- x = x+step !Увеличиваем X на заданное значение шага
- enddo
- x = -3.5
- do i=1,5
- call zx(z(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Z, а так же записываем их в файл
- print 11, 'z(',x,z(i)
- write(1,11) 'z(',x,z(i)
- x = x+step
- end do
- close(1)
- 11 format (A2,F5.2,') = ',x,F6.2)
- end
- subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
- y = ((x+2)*cos(x))/(x+3.2)
- end
- subroutine zx(z,x)
- z = sin(x)/(x+3.2)
- end
- ______________________________________________________________________________________________
- program e030071
- dimension y(12),z(15)
- open(1, file = 'file.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл и считываем нужные значения по формату 12
- read(1, 12) x,step
- close(1)
- oldx = x
- do i=1,12
- call yx(y(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Y
- print 11, 'y(',x,y(i)
- x = x+step
- end do
- x = oldx !Возвращаем иксу исходное значение
- do i=1,15
- call zx(z(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Z
- print 11, 'z(',x,z(i)
- x = x+step
- end do
- 11 format (A2,F5.2,') = ',x,F6.2)
- 12 format (F4.2)
- end
- subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
- y = ((x+2)*cos(x))/(x+3.2)
- end
- subroutine zx(z,x)
- z = sin(x)/(x+3.2)
- end
- __________________________________________________________________________________________
- program e030076
- dimension y(23),z(23)
- open(1, file = 'file.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл и считываем нужные значения по формату 12
- read(1, 12) x,step
- close(1)
- oldx = x
- do i=1,23
- call yx(y(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Y
- print 11, 'y(',x,y(i)
- x = x+step
- end do
- x = oldx !Возвращаем иксу исходное значение
- do i=1,23
- call zx(z(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Z
- print 11, 'z(',x,z(i)
- x = x+step
- end do
- 11 format (A2,F5.2,') = ',x,F6.2)
- 12 format (F4.2)
- end
- subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
- y = -3*x*cos(x)
- end
- subroutine zx(z,x)
- z = sin(3*x)/(x+4.2)
- end
- _________________________________________________________________________________________
- program e030078
- dimension y(23),z(23)
- open(1, file = 'file.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл и считываем нужные значения по формату 12
- read(1, 12) x,step
- close(1)
- oldx = x
- do i=1,23
- call yx(y(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Y
- print 11, 'y(',x,y(i)
- x = x+step
- end do
- x = oldx !Возвращаем иксу исходное значение
- do i=1,23
- call zx(z(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Z
- print 11, 'z(',x,z(i)
- x = x+step
- end do
- 11 format (A2,F5.2,') = ',x,F6.2)
- 12 format (F4.2)
- end
- subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
- y = ((x+2)*cos(x))/(x+3.2)
- end
- subroutine zx(z,x)
- z = sin(x)/(x+3.2)
- end
- ___________________________________________________________________________________________
- program e08002
- integer B, D, l
- dimension B(2,4),D(4,5)
- open(1, file = 'matrixB.txt', status = 'OLD') !Считываем матрицы из файлов
- do i=1,2
- read(1,*) (B(i,j),j=1,4)
- end do
- close(1)
- open(1, file = 'matrixD.txt', status = 'OLD')
- do i=1,4
- read(1,*) (D(i,j),j=1,5)
- end do
- close(1)
- l = 0 !Вычисляем L-нормы матриц B и D и выводим их на экран
- call lnorm(B, l, 2, 4)
- print *, 'B l-norm = ', l
- l = 0
- call lnorm(D, l, 4, 5)
- print *, 'D l-norm = ', l
- end
- subroutine lnorm(X, l, m, n) !Программа вычисления L-норма матрицы, М-норм - это когда суммируются, по модулю, все столбцы матрицы и максимальная из полученных сумм объявляется нормой.
- integer X, sm, l
- dimension X(m,n)
- sm = 0
- do i=1,n
- do j=1,m
- sm = sm + abs(X(i,j))
- end do
- if(sm.GT.l) then
- l = sm
- end if
- sm = 0
- end do
- end
- _________________________________________________________________________________________
- program e08002
- integer B, C, m
- dimension B(4,4),C(3,4)
- open(1, file = 'matrixA.txt', status = 'OLD') !Считываем матрицы из файлов
- do i=1,4
- read(1,*) (B(i,j),j=1,4)
- end do
- close(1)
- open(1, file = 'matrixB.txt', status = 'OLD')
- do i=1,3
- read(1,*) (C(i,j),j=1,4)
- end do
- close(1)
- m = 0
- call mnorm(B, m, 4, 4) !Вычисляем М-норм матриц B и C и выводим его на экран
- print *, 'B m-norm = ', m
- m = 0
- call mnorm(C, m, 3, 4)
- print *, 'C m-norm = ', m
- end
- subroutine mnorm(X, m, k, n) !Программа вычисления М-норма матрицы, М-норм - это когда суммируются, по модулю, все строки матрицы и максимальная из полученных сумм объявляется нормой.
- integer X, sm, m
- dimension X(k,n)
- sm = 0
- do j=1,k
- do i=1,n
- sm = sm + abs(X(i,j))
- end do
- if(sm.GT.m) then
- m = sm
- end if
- sm = 0
- end do
- end
- ____________________________________________________________________________________________
- program e08009
- parameter(n=3, m=5)
- dimension A(n,m), B(n,m), At(m,n),Bt(m,n), C(m,n) !Объявляем обычные и транспорированные матрицы
- open(1, file = 'matrixA.txt', status = 'OLD') !Открываем и считываем данные нам матрицы A и B
- open(2, file = 'matrixB.txt', status = 'OLD')
- do i=1,n
- read(1,*) (A(i,j),j=1,m)
- read(2,*) (B(i,j),j=1,m)
- end do
- close(1)
- close(2)
- call t(A,At,n,m) !Вызываем транспорирование каждой матрицы
- call t(B,Bt,n,m)
- open(3, file = 'matrixC.txt', status = 'NEW', form = 'FORMATTED') !Создаем и записываем в новый файл матрицу C, полученную из транспорированных матриц A и B
- do i=1,m !(после первого запуска программы status поменять на 'OLD')
- do j=1,n
- C(i,j) = At(i,j)+Bt(i,j)
- end do
- write(3,11) (C(i,j),j=1,n)
- end do
- close(3)
- 11 format (5(F4.1,x))
- end
- subroutine t(X,Xt,n,m) !Подпрограмма-функция по транспорированию матрицы
- dimension X(n,m),Xt(m,n)
- do i=1,n
- do j=1,m
- Xt(j,i) = X(i,j)
- end do
- end do
- end
- _____________________________________________________________________________________________________________
- program e02008
- real a,b,eps,I
- integer n, k
- open(1, file = 'file.txt', status = 'OLD') !Открываем и считываем переменные из файла
- read(1, 11) a,b,eps !Сначала мы считываем действительные числа, а затем целые
- read(1, 12) n,k
- close(1)
- open(1, file = 'integral.txt', status = 'OLD', form = 'FORMATTED', access = 'DIRECT', recl = 1000) !Открываем файл прямого доступа
- dx = (b-a)/n !Вычисляем dX
- m = 0
- I = 0
- do while(dx.GE.eps) !Пока dX меньше заданной точности, выполняем запись значений интеграла в файл
- call integral(a, n, dx, I)
- n = n+k
- dx = (b-a)/n
- m = m+1
- write (1,13, rec = m) m,I
- I = 0
- end do
- close(1)
- 11 format (F5.2)
- 12 format (I5)
- 13 format (I4,x,' iteration, integral = ',F10.6)
- end
- subroutine integral(a, n, dx, I) !Функция вычисления интеграла методом трапеции
- integer n
- real I
- f(x) = 1./(5-3*cos(x))
- aa = a !Дублируем значение нижней границы интеграла, т.к. в процессе работы оно изменяется
- do m=1,n
- I = I + (f(aa) + f(aa+dx)) / 2 * dx
- aa = aa + dx
- end do
- end
- !P.S.(это не для препода)
- !При выполнении программы в текущем виде, в конце в файл не будет ничего записано, чтобы заполнить этот файл нужно заменить строчку с открытием файла прямого доступа на следующее:
- !open(1, file = 'integral.txt', status = 'OLD', form = 'FORMATTED')
- !Тогда файл integral.txt заполнится нужной нам информацией
- !P.P.S.
- !Я понятия не имею почему он не хочет записывать в файл с прямым доступом, это надо уточнять у препода, т.к. в задании всё же сказано именно так сделать. Но, думаю, если использовать мой вариант выше, он может даже и не заметит ничего
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement