Advertisement
Guest User

Untitled

a guest
May 25th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.89 KB | None | 0 0
  1. program e03010
  2.  
  3. dimension y(13), z(15) !Объявляем массивы и задаем начальные значения икса и шага икса
  4. x = -3.02
  5. step = 0.475
  6.  
  7. open(1, file = 'massive.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл
  8. do i=1,13
  9. call yx(y(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Y, а так же записываем их в файл
  10. print 11, 'y(',x,y(i)
  11. write(1,11) 'y(',x,y(i)
  12. x = x+step !Увеличиваем X на заданное значение шага
  13. end do
  14. x = -3.02
  15. do i=1,15
  16. call zx(z(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Z, а так же записываем их в файл
  17. print 11, 'z(',x,z(i)
  18. write(1,11) 'z(',x,z(i)
  19. x = x+step
  20. enddo
  21. close(1)
  22. 11 format (A2,F5.2,') = ',x,F6.2)
  23. end
  24.  
  25. subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
  26. y = ((6*x+2)*cos(13*x))/(x+3.2)
  27. end
  28.  
  29. subroutine zx(z,x)
  30. z = (sin(5*x))/(9*x+3.26)
  31. end
  32. _________________________________________________________________________________________
  33. program e03012
  34.  
  35. dimension y(23), z(23) !Объявляем массивы и задаем начальные значения икса и шага икса
  36. x = -2.7
  37. step = 0.3
  38.  
  39. open(1, file = 'massive.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл
  40. do i=1,23
  41. call yx(y(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Y, а так же записываем их в файл
  42. print 11, 'y(',x,y(i)
  43. write(1,11) 'y(',x,y(i)
  44. x = x+step !Увеличиваем X на заданное значение шага
  45. end do
  46. x = -2.7
  47. do i=1,23
  48. call zx(z(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Z, а так же записываем их в файл
  49. print 11, 'z(',x,z(i)
  50. write(1,11) 'z(',x,z(i)
  51. x = x+step
  52. enddo
  53. close(1)
  54. 11 format (A2,F5.2,') = ',x,F6.2)
  55. end
  56.  
  57. subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
  58. y = -3*x*cos(x)
  59. end
  60.  
  61. subroutine zx(z,x)
  62. z = sin(3*x)/(x+4.2)
  63. end
  64.  
  65. ________________________________________________________________________________________________
  66. program e03014
  67.  
  68. dimension y(23), z(5) !Объявляем массивы и задаем начальные значения икса и шага икса
  69. x = -3.5
  70. step = 0.457
  71.  
  72. open(1, file = 'massive.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл
  73. do i=1,23
  74. call yx(y(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Y, а так же записываем их в файл
  75. print 11, 'y(',x,y(i)
  76. write(1,11) 'y(',x,y(i)
  77. x = x+step !Увеличиваем X на заданное значение шага
  78. enddo
  79. x = -3.5
  80. do i=1,5
  81. call zx(z(i),x) !Вызываем подпрограмму-функцию и выводим на экран полученные значения Z, а так же записываем их в файл
  82. print 11, 'z(',x,z(i)
  83. write(1,11) 'z(',x,z(i)
  84. x = x+step
  85. end do
  86. close(1)
  87.  
  88. 11 format (A2,F5.2,') = ',x,F6.2)
  89.  
  90. end
  91.  
  92. subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
  93. y = ((x+2)*cos(x))/(x+3.2)
  94. end
  95.  
  96. subroutine zx(z,x)
  97. z = sin(x)/(x+3.2)
  98. end
  99. ______________________________________________________________________________________________
  100. program e030071
  101.  
  102. dimension y(12),z(15)
  103. open(1, file = 'file.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл и считываем нужные значения по формату 12
  104. read(1, 12) x,step
  105. close(1)
  106. oldx = x
  107. do i=1,12
  108. call yx(y(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Y
  109. print 11, 'y(',x,y(i)
  110. x = x+step
  111. end do
  112. x = oldx !Возвращаем иксу исходное значение
  113. do i=1,15
  114. call zx(z(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Z
  115. print 11, 'z(',x,z(i)
  116. x = x+step
  117. end do
  118.  
  119. 11 format (A2,F5.2,') = ',x,F6.2)
  120. 12 format (F4.2)
  121. end
  122.  
  123. subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
  124. y = ((x+2)*cos(x))/(x+3.2)
  125. end
  126.  
  127. subroutine zx(z,x)
  128. z = sin(x)/(x+3.2)
  129. end
  130. __________________________________________________________________________________________
  131. program e030076
  132.  
  133. dimension y(23),z(23)
  134. open(1, file = 'file.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл и считываем нужные значения по формату 12
  135. read(1, 12) x,step
  136. close(1)
  137. oldx = x
  138. do i=1,23
  139. call yx(y(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Y
  140. print 11, 'y(',x,y(i)
  141. x = x+step
  142. end do
  143. x = oldx !Возвращаем иксу исходное значение
  144. do i=1,23
  145. call zx(z(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Z
  146. print 11, 'z(',x,z(i)
  147. x = x+step
  148. end do
  149.  
  150. 11 format (A2,F5.2,') = ',x,F6.2)
  151. 12 format (F4.2)
  152. end
  153.  
  154. subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
  155. y = -3*x*cos(x)
  156. end
  157.  
  158. subroutine zx(z,x)
  159. z = sin(3*x)/(x+4.2)
  160. end
  161. _________________________________________________________________________________________
  162. program e030078
  163.  
  164. dimension y(23),z(23)
  165. open(1, file = 'file.txt', status = 'OLD', form = 'FORMATTED') !Открываем файл и считываем нужные значения по формату 12
  166. read(1, 12) x,step
  167. close(1)
  168. oldx = x
  169. do i=1,23
  170. call yx(y(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Y
  171. print 11, 'y(',x,y(i)
  172. x = x+step
  173. end do
  174. x = oldx !Возвращаем иксу исходное значение
  175. do i=1,23
  176. call zx(z(i),x) !Вызываем подпрограммы-функцию и выводим на экран полученные значения Z
  177. print 11, 'z(',x,z(i)
  178. x = x+step
  179. end do
  180.  
  181. 11 format (A2,F5.2,') = ',x,F6.2)
  182. 12 format (F4.2)
  183. end
  184.  
  185. subroutine yx(y,x) !Подпрограммы-функции для вычисления значений Y и Z
  186. y = ((x+2)*cos(x))/(x+3.2)
  187. end
  188.  
  189. subroutine zx(z,x)
  190. z = sin(x)/(x+3.2)
  191. end
  192. ___________________________________________________________________________________________
  193. program e08002
  194.  
  195. integer B, D, l
  196. dimension B(2,4),D(4,5)
  197.  
  198. open(1, file = 'matrixB.txt', status = 'OLD') !Считываем матрицы из файлов
  199. do i=1,2
  200. read(1,*) (B(i,j),j=1,4)
  201. end do
  202. close(1)
  203.  
  204. open(1, file = 'matrixD.txt', status = 'OLD')
  205. do i=1,4
  206. read(1,*) (D(i,j),j=1,5)
  207. end do
  208. close(1)
  209.  
  210. l = 0 !Вычисляем L-нормы матриц B и D и выводим их на экран
  211. call lnorm(B, l, 2, 4)
  212. print *, 'B l-norm = ', l
  213.  
  214. l = 0
  215. call lnorm(D, l, 4, 5)
  216. print *, 'D l-norm = ', l
  217.  
  218. end
  219.  
  220. subroutine lnorm(X, l, m, n) !Программа вычисления L-норма матрицы, М-норм - это когда суммируются, по модулю, все столбцы матрицы и максимальная из полученных сумм объявляется нормой.
  221. integer X, sm, l
  222. dimension X(m,n)
  223.  
  224. sm = 0
  225. do i=1,n
  226. do j=1,m
  227. sm = sm + abs(X(i,j))
  228. end do
  229. if(sm.GT.l) then
  230. l = sm
  231. end if
  232. sm = 0
  233. end do
  234. end
  235. _________________________________________________________________________________________
  236. program e08002
  237.  
  238. integer B, C, m
  239. dimension B(4,4),C(3,4)
  240.  
  241. open(1, file = 'matrixA.txt', status = 'OLD') !Считываем матрицы из файлов
  242. do i=1,4
  243. read(1,*) (B(i,j),j=1,4)
  244. end do
  245. close(1)
  246.  
  247. open(1, file = 'matrixB.txt', status = 'OLD')
  248. do i=1,3
  249. read(1,*) (C(i,j),j=1,4)
  250. end do
  251. close(1)
  252.  
  253. m = 0
  254. call mnorm(B, m, 4, 4) !Вычисляем М-норм матриц B и C и выводим его на экран
  255. print *, 'B m-norm = ', m
  256.  
  257. m = 0
  258. call mnorm(C, m, 3, 4)
  259. print *, 'C m-norm = ', m
  260.  
  261. end
  262.  
  263. subroutine mnorm(X, m, k, n) !Программа вычисления М-норма матрицы, М-норм - это когда суммируются, по модулю, все строки матрицы и максимальная из полученных сумм объявляется нормой.
  264. integer X, sm, m
  265. dimension X(k,n)
  266.  
  267. sm = 0
  268. do j=1,k
  269. do i=1,n
  270. sm = sm + abs(X(i,j))
  271. end do
  272. if(sm.GT.m) then
  273. m = sm
  274. end if
  275. sm = 0
  276. end do
  277. end
  278.  
  279. ____________________________________________________________________________________________
  280. program e08009
  281.  
  282. parameter(n=3, m=5)
  283. dimension A(n,m), B(n,m), At(m,n),Bt(m,n), C(m,n) !Объявляем обычные и транспорированные матрицы
  284. open(1, file = 'matrixA.txt', status = 'OLD') !Открываем и считываем данные нам матрицы A и B
  285. open(2, file = 'matrixB.txt', status = 'OLD')
  286. do i=1,n
  287. read(1,*) (A(i,j),j=1,m)
  288. read(2,*) (B(i,j),j=1,m)
  289. end do
  290. close(1)
  291. close(2)
  292.  
  293. call t(A,At,n,m) !Вызываем транспорирование каждой матрицы
  294. call t(B,Bt,n,m)
  295.  
  296. open(3, file = 'matrixC.txt', status = 'NEW', form = 'FORMATTED') !Создаем и записываем в новый файл матрицу C, полученную из транспорированных матриц A и B
  297. do i=1,m !(после первого запуска программы status поменять на 'OLD')
  298. do j=1,n
  299. C(i,j) = At(i,j)+Bt(i,j)
  300. end do
  301. write(3,11) (C(i,j),j=1,n)
  302. end do
  303. close(3)
  304. 11 format (5(F4.1,x))
  305. end
  306.  
  307. subroutine t(X,Xt,n,m) !Подпрограмма-функция по транспорированию матрицы
  308. dimension X(n,m),Xt(m,n)
  309. do i=1,n
  310. do j=1,m
  311. Xt(j,i) = X(i,j)
  312. end do
  313. end do
  314. end
  315. _____________________________________________________________________________________________________________
  316. program e02008
  317.  
  318. real a,b,eps,I
  319. integer n, k
  320. open(1, file = 'file.txt', status = 'OLD') !Открываем и считываем переменные из файла
  321. read(1, 11) a,b,eps !Сначала мы считываем действительные числа, а затем целые
  322. read(1, 12) n,k
  323. close(1)
  324. open(1, file = 'integral.txt', status = 'OLD', form = 'FORMATTED', access = 'DIRECT', recl = 1000) !Открываем файл прямого доступа
  325. dx = (b-a)/n !Вычисляем dX
  326. m = 0
  327. I = 0
  328. do while(dx.GE.eps) !Пока dX меньше заданной точности, выполняем запись значений интеграла в файл
  329. call integral(a, n, dx, I)
  330. n = n+k
  331. dx = (b-a)/n
  332. m = m+1
  333. write (1,13, rec = m) m,I
  334. I = 0
  335. end do
  336. close(1)
  337. 11 format (F5.2)
  338. 12 format (I5)
  339. 13 format (I4,x,' iteration, integral = ',F10.6)
  340. end
  341.  
  342. subroutine integral(a, n, dx, I) !Функция вычисления интеграла методом трапеции
  343. integer n
  344. real I
  345. f(x) = 1./(5-3*cos(x))
  346.  
  347. aa = a !Дублируем значение нижней границы интеграла, т.к. в процессе работы оно изменяется
  348. do m=1,n
  349. I = I + (f(aa) + f(aa+dx)) / 2 * dx
  350. aa = aa + dx
  351. end do
  352. end
  353.  
  354. !P.S.(это не для препода)
  355. !При выполнении программы в текущем виде, в конце в файл не будет ничего записано, чтобы заполнить этот файл нужно заменить строчку с открытием файла прямого доступа на следующее:
  356. !open(1, file = 'integral.txt', status = 'OLD', form = 'FORMATTED')
  357. !Тогда файл integral.txt заполнится нужной нам информацией
  358. !P.P.S.
  359. !Я понятия не имею почему он не хочет записывать в файл с прямым доступом, это надо уточнять у препода, т.к. в задании всё же сказано именно так сделать. Но, думаю, если использовать мой вариант выше, он может даже и не заметит ничего
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement