Табулирование и программирование - Pascal
Формулировка задачи:
Помоги написать программу как в задание пожалуйста!!!
Составить программу для вычисления значения функции
с помощью разложения функции в степенной ряд
Решение задачи: «Табулирование и программирование»
textual
Листинг программы
var x,eps,t,y:real;
n:integer;
begin
repeat
write('Введите |x|<1 x=');
readln(x);
until abs(x)<1;
repeat
write('eps>0 eps=');
readln(eps);
until eps>0;
if eps>=abs(x)then y:=2*x
else
begin
n:=0;
t:=x;
y:=t;
while abs(t)/(2*n+1)>eps do
begin
n:=n+1;
t:=t*x*x;
y:=y+t/(2*n+1)
end;
y:=2*y;
end;
writeln('Сумма=',y:0:6);
write('Аналитически Ln((1+x)/(1-x))=',ln((1+x)/(1-x)):0:6);
end.
Объяснение кода листинга программы
- Объявление переменных:
x,eps,t,yс типом данныхrealnс типом данныхinteger
- Ввод значения переменной
x:- Выполняется цикл с запросом ввода значения
xс дополнительной проверкой: пока значениеxпо модулю меньше 1, пользователю будет предлагаться ввести новое значение.
- Выполняется цикл с запросом ввода значения
- Ввод значения переменной
eps:- Выполняется цикл с запросом ввода значения
eps, с условием, чтоepsдолжно быть больше 0.
- Выполняется цикл с запросом ввода значения
- Вычисление значения переменной
y:- Если значение
epsбольше или равно модулюx, то значениеyустанавливается равным2*x. - В противном случае выполняется блок кода, в котором:
- Устанавливается начальное значение переменной
nравным 0. - Устанавливается значение переменной
tравнымx. - Устанавливается значение переменной
yравнымt. - Выполняется цикл, в котором:
- Пока модуль
tделённое на(2*n+1)больше, чемeps:nувеличивается на 1,tумножается наx*x,yувеличивается наt/(2*n+1).
- Пока модуль
- Затем значение
yумножается на 2.
- Устанавливается начальное значение переменной
- Если значение
- Вывод результатов:
- Выводится значение переменной
yс форматированием до 6 знаков после запятой. - Вычисляется значение функции
Ln((1+x)/(1-x))и выводится с форматированием до 6 знаков после запятой.
- Выводится значение переменной