Вычисление суммы ряда - Pascal ABC (12668)
Формулировка задачи:
Вычислить значения суммы ряда S при заданных с консоли начальном и конечном значениях аргумента x (x_nach, x_kon), шаге его изменения delta_x и точности вычислений eps. Вычисленные значения ряда сравнить со значениями заданной функции f(x).
Листинг программы
- Program rabota3;
- uses crt;
- Var x,y, s, f, x_nach, delta_x, eps, t: Real;
- koy:real;
- i,x_kon:integer;
- Begin
- y:=0;
- write(' x= ');
- readln(x_nach);
- write('количество итераций ');
- readln(x_kon);
- for i:=1 to x_kon do
- y:=y+((2*i-1)*exp(ln(x_nach)*(2*i+1)))/(2*i*(2*i+1));
- koy:=pi/2.0-(x+y);
- writeln('функция= ',koy:5:5);
- f:=(Pi/2)-ArcTan(X/SQRT(1-X*X));
- writeln('arccos= ',f);
- End.
Решение задачи: «Вычисление суммы ряда»
textual
Листинг программы
- uses crt;
- var x, s, f, x_nach, x_kon, delta_x, eps, t: Real;
- n:Integer;
- Begin
- WriteLn('ввод исходных данных:');
- repeat
- Write('|x_nach|<1 =');
- ReadLn(x_nach);
- until abs(x_nach)<1;
- repeat
- Write('x_nach<x_kon<1 =');
- ReadLn(x_kon);
- until(x_kon>x_nach)and(x_kon<1);
- repeat
- Write('x_kon-x_nach > delta_x=');
- ReadLn(delta_x);
- until delta_x<x_kon-x_nach;
- repeat
- Write('eps>0 =');
- ReadLn(eps);
- until eps>0;
- clrscr;
- WriteLn('Для x=',x_nach:0:3,' до ',x_kon:0:3,' шаг=',delta_x:0:3,' точность=',eps:0:6);
- WriteLn;
- Writeln('----------------------------------');
- WriteLn('| x | n | s | f |');
- WriteLn('----------------------------------');
- x:=x_nach;
- Repeat
- t:=x;
- s:=x;
- n:=0;
- if x=0 then f:=pi/2
- else if x>0 then f:=arctan(sqrt(1 - sqr(x))/x)
- else f:=pi+arctan(sqrt(1 - sqr(x))/x);
- While (Abs(t)>eps) Do
- Begin
- n:=n+1;
- t:=t*x*x*(2*n-1)/(2*n);
- s:=s+t/(2*n+1);
- End;
- s:=pi/2-s;
- WriteLn('|',x:6:3,' |',n:2,' |',s:8:5,' |',f:8:5,' |');
- x:=x+delta_x;
- Until(x>x_kon);
- WriteLn('----------------------------------');
- End.
Объяснение кода листинга программы
- В первой строке кода используется библиотека crt, которая не является стандартной библиотекой языка Pascal ABC. Поэтому этот код не будет работать в большинстве сред разработки Pascal ABC.
- Переменные x, s, f, x_nach, x_kon, delta_x, eps, t объявлены с типами Real, что означает, что они могут содержать числа с плавающей точкой.
- Переменная n объявлена как Integer, что означает, что она может содержать только целочисленные значения.
- В цикле repeat-until используется условие abs(x)<1 для остановки цикла. Это условие проверяет, что значение переменной x меньше 1.
- В цикле repeat-until используется условие (x_kon>x_nach)and(x_kon<1), которое проверяет, что значение переменной x_kon больше x_nach, но меньше 1.
- В цикле repeat-until используется условие delta_x<x_kon-x_nach, которое проверяет, что разница между x_kon и x_nach меньше чем значение переменной delta_x.
- В цикле repeat-until используется условие eps>0, которое проверяет, что значение переменной eps больше 0.
- В цикле repeat-until используется условие (x>x_kon), которое проверяет, что значение переменной x больше x_kon.
- В цикле repeat-until значение переменной x увеличивается на delta_x.
- В цикле repeat-until значение переменной s вычисляется как pi/2 - s.
- Значение переменной n увеличивается на 1 в каждой итерации цикла.
- Значение переменной s вычисляется как pi/2 - s.
- Значение переменной f вычисляется как arctan(sqrt(1 - sqr(x))/x) или pi+arctan(sqrt(1 - sqr(x))/x), в зависимости от значения x.
- В конце программы выводится сообщение с исходными данными и результатами вычислений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д