Advertisement
starm100

pr6

Dec 4th, 2018
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program pr6
  2. integer::i,imax,n,nmax
  3. real::x0,xk,h,eps,x,u,S,y,d
  4. print*, 'Input x0,xk,h,eps,nmax'
  5. read(*,*) x0,xk,h,eps,nmax
  6. write(*,'(a55)') '|    i    |    xi    |    ni    |    yi    |    d     |' !первый символ теряется из-за компилятора, в моем все нормально
  7. imax=nint((xk-x0)/h+0.5)
  8. do i=1,imax
  9.     x=x0+(i-1)*h
  10.     if (abs(x)<=1) then !почему-то криво работает в нашем компиляторе   задайте свое условие
  11.         u=-2*x**2 !первый член ряда
  12.         S=-2*x**2 !посчитать
  13.         do n=2,nmax
  14.             if (abs(u)>eps*abs(S)) then
  15.                 u=(-u*4*x**2)/(2*n*(2*n-1)) !выразить последующий член ряда из предыдущего
  16.                 S=S+u
  17.             else
  18.                 y=1+S/2 !Сумма из формулы в задании
  19.                 goto 10
  20.             end if
  21.         end do
  22.         write(*,*) 'error, n>nmax,',y
  23.         stop
  24.     else
  25.         write(*,*) 'Error, |x|>1'
  26.         stop
  27.     end if
  28. 10  d=y-cos(x)**2 !вычисление погрешности для вашей функции
  29.     write(*,20) i,x,n,y,d
  30. 20  format("|",I9,"|",f10.3,"|",I10,"|",f10.3,"|",3x,1pe7.0,"|") ! 1-ый символ
  31. end do
  32. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement