Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Imperion
2 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 433
1

Необходимо сделать задачу методом итераций (задача уже решена рекурсивно)

18.05.2017, 22:31. Просмотров 782. Ответов 6
Метки нет (Все метки)

Ниже я прикрепляю код, решающий задачу при помощи рекурсии. Помогите, пожалуйста, написать для этой программы решение при помощи итераций (и если не сложно, оставьте комментарии к коду, т.к. я хочу именно понять как он работает). Само задание я прикрепляю скрином.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const e=0.00001; //точность
function Summa(x,sn,st:real;n:integer):real;
//параметры:  х, начальный член ряда(х), начальный текущий член ряда(x^(2*n+1)), счетчик итераций(от 1)}
var t:real; // изменяющийся текущий член ряда
begin
Summa:=sn;
t:=-st*x*x;
if abs(t)/(2*n+1)<e then  exit;
Summa:=Summa(x,sn+t/(2*n+1),t,n+1);
end;
var x:real;
begin
repeat
write('|x|<1 x=');
readln(x);
until abs(x)<1;
writeln ('Сумма=',Summa(x,x,x,1):0:5);
write('arctg(x)=',arctan(x):0:5);
end.
0
Миниатюры
Необходимо сделать задачу методом итераций (задача уже решена рекурсивно)  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2017, 22:31
Ответы с готовыми решениями:

надо переделать задачу она уже решена ну ее нужно переделать
вот задача const n=4; var a:array of integer; i,s:integer; begin for i:=1 to n do begin...

задача на множества, если она уже решена то прошу ссылку
. Напечатать текст, за которым следует точка. В алфавитном порядке напечатать все строчные русские...

Решение СЛАУ методом простых итераций, задача решена, только написать код осталось
решить СЛАУ с точностью е=10 в степени(-4) 4*x1-x2-x3=2 x1+5*x2-2*x3=4 x1+x2+4*x3=6 ...

[Цикл] Найти делители числа (задача уже решена, но где-то ошибка)
Вот собственно попробовал решить (нужно решить с помощью while), но видимо где-то ошибка: ...

Необходимо составить блок-схему.Задача решена
Помогите,пож-та, составить блок-схему . Задача решена. program nood; uses crt; var a,b:longint;...

6
Ivandur
467 / 995 / 185
Регистрация: 11.08.2016
Сообщений: 1,391
19.05.2017, 15:29 2
Pascal
1
2
3
4
5
6
7
8
9
sum:=pi/2;
num=x;
den:=1;
while abs(num/den)>e do
   begin
   sum:=sum+num/den;
   num:=-num*x*x;
   den:=den+2;
   end;
примерно так...
0
Imperion
2 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 433
19.05.2017, 19:54  [ТС] 3
А что мы должны выводить на экран?
Я, признаться, ряды не понимаю абсолютно... У нас их не было еще... А программу вынь да полож...
И ответ ведь должен быть один и тот же и в рекурсии, и в итерациях?
0
Ivandur
467 / 995 / 185
Регистрация: 11.08.2016
Сообщений: 1,391
20.05.2017, 09:10 4
sum
0
Imperion
2 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 433
20.05.2017, 09:58  [ТС] 5
Проблема в том, что при одном и том же значении X сильно разные ответы получаются в рекурсии и в вашей программе... Мне кажется такого не должно быть или я не прав?
0
Puporev
Модератор
56854 / 43438 / 30034
Регистрация: 18.05.2008
Сообщений: 103,470
20.05.2017, 10:29 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const e=0.00001; //точность
function Summa(x,sn,st:real;n:integer):real;
//параметры:  х, начальный член ряда(х), начальный текущий член ряда(x^(2*n+1)), счетчик итераций(от 1)}
var t:real; // изменяющийся текущий член ряда
begin
Summa:=sn;
t:=-st*x*x;
if abs(t)/(2*n+1)<e then  exit;
Summa:=Summa(x,sn+t/(2*n+1),t,n+1);
end;
var x,t,s:real;
    n:integer;
begin
repeat
write('|x|<1 x=');
readln(x);
until abs(x)<1;
writeln ('Сумма рекурсией=',Summa(x,x,x,1):0:5);
n:=0;
t:=x;
s:=t;
while abs(t)/(2*n+1)>e do
 begin
  n:=n+1;
  t:=-t*x*x;
  s:=s+t/(2*n+1);
 end;
writeln('Сумма итеративно=',s:0:5);
write('arctg(x)=',arctan(x):0:5);
end.
Добавлено через 15 минут
Imperion, Я же Вам писал в предыдущей теме что приведенная в Вашем задании ормула не есть разложение arctg(x) при |x|<1 и привел правидбную ормулу для которой и написал функцию. Естественно результат не будет сходиться с кодом от Ivandur, даже если его правильно написать.
1
Puporev
Модератор
56854 / 43438 / 30034
Регистрация: 18.05.2008
Сообщений: 103,470
20.05.2017, 10:40 7
Лучший ответ Сообщение было отмечено Imperion как решение

Решение

Кстати, если писать строго по формуле что в Wiki
Необходимо сделать задачу методом итераций (задача уже решена рекурсивно)

то так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const e=0.00001; //точность
function Summa(x,sn,st:real;n:integer):real;
//параметры:  х, начальный член ряда(х), начальный текущий член ряда(x^(2*n+1)), счетчик итераций(от 1)}
var t:real; // изменяющийся текущий член ряда
begin
Summa:=sn;
t:=-st*x*x;
if abs(t)/(2*n-1)<e then  exit;
Summa:=Summa(x,sn+t/(2*n-1),t,n+1);
end;
var x,t,s:real;
    n:integer;
begin
repeat
write('|x|<1 x=');
readln(x);
until abs(x)<1;
writeln ('Сумма рекурсией=',Summa(x,x,x,2):0:5);
n:=1;
t:=x;
s:=t;
while abs(t)/(2*n-1)>e do
 begin
  n:=n+1;
  t:=-t*x*x;
  s:=s+t/(2*n-1);
 end;
writeln('Сумма итеративно=',s:0:5);
write('arctg(x)=',arctan(x):0:5);
end.
1
20.05.2017, 10:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2017, 10:40

Решить задачу методом ньютона и итераций
Помогите пожалуйста с задачей. Нужно решить методом ньютона и интераций уравнение...

Решение методом простых итераций, методов итераций и хорд, методом итераций и касательных
Здравствуйте.Подскажите пожалуйста,как написать программы для решения методом простых иттераций,...

Пытаюсь рекурсивно сделать задачу. гляньте код плз)
КТО-НИБУДЬ, избавьте меня от мучений, гляньте код, посмотрите где я лажанул((( Пытаюсь решить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru