Для заданных x, N и E вычислить сумму N слагаемых заданного вида - Turbo Pascal
Формулировка задачи:
Точное условие
: При некоторых заданных x, N и E, определяемых вводом, вы-числите сумму N слагаемых заданного вида, а также сумму тех слагаемых, которые по абсолютной величине больше E. Для второго случая выполните суммирование для двух значений E, отличающихся на порядок, и при этом определите количество слагаемых, включенных в сумму. Сравните результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем в интервале (–R, R).Что нужно сделать
: обработать последовательность слагаемых данных на фото под буквой h.Что уже есть
: есть вот такой вот код, который работает, но , как мне кажется, некорректно. Буду безмерно благодарен, если что-то сможет сделать его проверку и если найдутся ошибки( а что-то мне подсказывает, что найдутся), то ткнуть в них носом.
Листинг программы
- var n,k,m,i,j: integer;
- x,a,eps,sum,total: real;
- begin
- write('Введите количество слагаемых = ');
- readln(n);
- write('Введите значение аргумента x = ');
- readln(x);
- k:=-1;
- m:=2;
- a:=1;
- sum:=1;
- for i:=2 to n do
- begin
- a:=-a*((x*k)/m);
- sum:=sum+a;
- k:=k+2;
- m:=k+2;
- end;
- writeln('Для ', n, ' слагаемых сумма равна ', sum:0:15);
- write('Введите eps ');
- readln(eps);
- a:=1;
- sum:=1;
- i:=2;
- for j:= 1 to 2 do
- begin
- while a>eps do
- begin
- a:=-a*((x*k)/m);
- sum:=sum+a;
- inc(i);
- inc(k,2) ;
- inc(m,2)
- end;
- writeln('Для eps = ', eps:0:10, ' сумма ', i-1, ' слагаемых равна ', sum:0:15);
- eps:=eps/10;
- end;
- total:=sqrt(1+x);
- writeln('Точное значение равно ', total:0:15) ;
- readln;
- end.
Решение задачи: «Для заданных x, N и E вычислить сумму N слагаемых заданного вида»
textual
Листинг программы
- uses crt;
- var n,k,m,i: integer;
- x,a,eps,sum,total: real;
- begin
- clrscr;
- repeat
- write('Введите количество слагаемых n>0 n=');
- readln(n);
- until n>0;
- repeat
- write('Введите значение аргумента |x|<1 x=');
- readln(x);
- until abs(x)<1;
- a:=x/2;
- sum:=1+a;
- k:=1;
- m:=2;
- for i:=2 to n do
- begin
- inc(m,2);
- a:=-a*((x*k)/m);
- sum:=sum+a;
- inc(k,2);
- end;
- writeln('Для ', n, ' слагаемых сумма равна ', sum:0:10);
- repeat
- write('Введите 0<eps<1 eps=');
- readln(eps);
- until (eps>0)and(eps<1);
- a:=x/2;
- sum:=1+a;
- k:=1;
- m:=2;
- while abs(a)>eps do
- begin
- m:=m+2;
- a:=-a*((x*k)/m);
- sum:=sum+a;
- inc(k,2);
- end;
- writeln('Для eps = ', eps:0:5,' сумма равна ',sum:0:10);
- eps:=eps/10;
- a:=x/2;
- sum:=1+a;
- k:=1;
- m:=2;
- while abs(a)>eps do
- begin
- m:=m+2;
- a:=-a*((x*k)/m);
- sum:=sum+a;
- inc(k,2);
- end;
- writeln('Для eps = ', eps:0:5,' сумма равна ',sum:0:10);
- total:=sqrt(1+x);
- writeln('Точное значение равно ', total:0:10) ;
- readln;
- end.
Объяснение кода листинга программы
- Ввод количества слагаемых и значения аргумента
- Вычисление значения переменной a
- Вычисление суммы слагаемых
- Вычисление значений переменных k и m
- Цикл, в котором происходит увеличение m на 2 и вычисление значения a
- Проверка условия для окончания цикла
- Вычисление суммы слагаемых с учетом условия
- Вывод результата для заданного количества слагаемых
- Ввод значения eps
- Проверка условия для окончания цикла
- Вычисление значения переменной a
- Вычисление суммы слагаемых с учетом условия
- Вывод результата для заданного значения eps
- Установка значения eps
- Вычисление значения переменной a
- Цикл, в котором происходит увеличение m на 2 и вычисление значения a
- Проверка условия для окончания цикла
- Вычисление суммы слагаемых с учетом условия
- Вывод результата для заданного значения eps
- Вывод точного значения суммы слагаемых
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д