Текст программы
!Программа для вычисления суммы ряда Тейлора + форматированная таблица
program lab5
real x,Xn,Xk,step,An,eps,sum,a,f,T
integer n,Nmax/100/
open(1, file='results.txt')
write(*,*) 'input Xn, Xk, step, eps and a:'
read(*,*) Xn,Xk,step,eps,a
write(1,*) 'Xn=',Xn,' Xk=',Xk,' step=',step,' eps=',eps,' a=',a
write(1,10)
do x=Xn,Xk,step
f=sin(x+a)
n=0
An=sin(a)
sum=An
do while(abs(An)>eps)
T=(x*sin(a+(n+1)*asin(1.)))/((n+1)*sin(a+n*asin(1.)))
An=An*T
sum=sum+An
n=n+1
if(n>Nmax) then
write(1,*) 'Авария при x=',x,' n=',n,' sum=',sum,' f=',f
endif
enddo
write(1,12) x,f,sum,n
enddo
write(1,11)
10 Format(&
' ___________________________________________ '/&
' | x | Станд |Сумма ряда |Членов ряда|'/&
' |-------------------------------------------|')
11 Format(&
' |______|____________|___________|___________|')
12 Format(1x,'|',F5.2,2(' |',F11.7),'|',I6,5x,'|')
End
!Программа, вычисляющая An,sum и f для построения графиков
program lab5
real x,An,eps,sum,a,f,T
integer n,Nmax/100/
open(1, file='An.txt')
open(2, file='f.txt')
open(3, file='sum.txt')
open(4, file='errors.txt')
write(*,*) 'input x, eps and a:'
read(*,*) x,eps,a
f=sin(x+a)
n=0
An=sin(a)
sum=An
do while(abs(An)>eps)
T=(x*sin(a+(n+1)*asin(1.)))/((n+1)*sin(a+n*asin(1.)))
An=An*T
sum=sum+An
n=n+1
if(n>Nmax) then
write(1,*) 'Ошибка при x=',x,' n=',n,' sum=',sum,' f=',f
endif
write(1,*) n,An !координаты для графика An(n)
write(2,*) n,f !координаты для графика f(n)
write(3,*) n,sum !координаты для графика sum(n)
enddo
end
Графики
График зависимости An(n)
Графики зависимостей: sum(n) – ломаная линия, f(n) - прямая || оси X
Таблица с результатами работы 1-ой программы:
Xn= -2.000000
Xk= 2.000000
step= 1.000000E-01
eps= 1.000000E-05
a= 1.000000E-01
___________________________________________
| x | станд |Сумма ряда |Членов ряда|
|-------------------------------------------|
|-2.00 | -.9463001 | -.9462990| 12 |
|-1.90 | -.9738476 | -.9738469| 12 |
|-1.80 | -.9916648 | -.9916807| 10 |
|-1.70 | -.9995736 | -.9995821| 10 |
|-1.60 | -.9974950 | -.9974994| 10 |
|-1.50 | -.9854497 | -.9854519| 10 |
|-1.40 | -.9635581 | -.9635592| 10 |
|-1.30 | -.9320390 | -.9320394| 10 |
|-1.20 | -.8912073 | -.8912075| 10 |
|-1.10 | -.8414709 | -.8414645| 8 |
|-1.00 | -.7833267 | -.7833239| 8 |
| -.90 | -.7173559 | -.7173549| 8 |
| -.80 | -.6442175 | -.6442171| 8 |
| -.70 | -.5646422 | -.5646421| 8 |
| -.60 | -.4794253 | -.4794309| 6 |
| -.50 | -.3894180 | -.3894196| 6 |
| -.40 | -.2955199 | -.2955202| 6 |
| -.30 | -.1986690 | -.1986691| 6 |
| -.20 | -.0998331 | -.0998304| 4 |
| -.10 | .0000003 | .0000004| 4 |
| .00 | .0998337 | .0998337| 1 |
| .10 | .1986696 | .1986696| 4 |
| .20 | .2955205 | .2955179| 4 |
| .30 | .3894186 | .3894187| 6 |
| .40 | .4794258 | .4794261| 6 |
| .50 | .5646427 | .5646443| 6 |
| .60 | .6442179 | .6442234| 6 |
| .70 | .7173563 | .7173563| 8 |
| .80 | .7833272 | .7833267| 8 |
| .90 | .8414712 | .8414702| 8 |
| 1.00 | .8912075 | .8912050| 8 |
| 1.10 | .9320392 | .9320329| 8 |
| 1.20 | .9635583 | .9635585| 10 |
| 1.30 | .9854498 | .9854503| 10 |
| 1.40 | .9974950 | .9974959| 10 |
| 1.50 | .9995736 | .9995757| 10 |
| 1.60 | .9916648 | .9916689| 10 |
| 1.70 | .9738475 | .9738558| 10 |
| 1.80 | .9462999 | .9463153| 10 |
| 1.90 | .9092972 | .9092967| 12 |
|______|____________|___________|___________|
Вывод рекуррентной формулы
Санкт-Петербургский Государственный Университет
Информационных технологий,
Механики и оптики
Отчет
К лабораторной работе по информатике:
«Вычисление функции с помощью разложения в степенной ряд»
Вариант № 9
Студент:
Преподаватели:
2005 г.