Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Дмитрий999
1 / 1 / 4
Регистрация: 07.02.2015
Сообщений: 221
1

Правильно ли решена задача на нахождение суммы ряда?

13.02.2015, 12:34. Просмотров 363. Ответов 8
Метки нет (Все метки)

Правильно ли я написал? Если нет, то исправьте.

ЗаданиеНайти сумму ряда с точностью http://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon =10^{-4}, общий член которого http://www.cyberforum.ru/cgi-bin/latex.cgi?a_n=\frac{(-1)^{n-1}}{(n!)^2}


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program i2;
var sum,an:real;
    n:integer;
begin
 sum:=0;    
 an:=1;
 n:=1;
 while an>0.0001 do
  begin
  sum:=sum+an;
  n:=n-1;
  an:=an*(-1)/(2*n+2);
  end;
 writeln('Сумма равна =',sum:7:6);
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2015, 12:34
Ответы с готовыми решениями:

Задача на нахождение суммы бесконечного ряда
Используя оператор цикла с последующей условием, вычислить сумму бесконечного ряда, учитывая только...

Вычислить значения функции. Правильно ли решена задача?
Не знаю как записать Ln^2 (x). Правильно ли я сделала? program Zadacha2; var x, t: real;...

Правильно ли решена задача (Сколько часов проработала вся бригада)
В бригаде, работающей на уборке сена, имеется N сенокосилок. Первая сенокосилка работала m часов, а...

Нахождение суммы ряда
x + x^3\3+x^5\5+ ......x^11\11

Рекурсия: нахождение суммы ряда
Нужно найти сумму ряда 1)рекурсией и 2) суммированием в цикле. Сделал, но явно не не правильно: ...

8
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
13.02.2015, 14:09 2
n надо не уменьшать, а увеличивать
0
Дмитрий999
1 / 1 / 4
Регистрация: 07.02.2015
Сообщений: 221
13.02.2015, 14:22  [ТС] 3
А остальное правильно?
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
13.02.2015, 14:25 4
http://www.cyberforum.ru/cgi-bin/latex.cgi?\left(n! \right)^2 предусматривает домножение на 1/n дважды:
Pascal
1
2
n:=n+1;
an:=an*(-1)/n/n;
1
13.02.2015, 14:25
Puporev
Модератор
56587 / 43280 / 29921
Регистрация: 18.05.2008
Сообщений: 102,942
13.02.2015, 14:53 5
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program i2;
var sum,an:real;
    n:integer;
begin
n:=1;
an:=1;
sum:=an;
while abs(an)>0.0001 do
 begin
  n:=n+1;
  an:=-an/sqr(n);
  sum:=sum+an;
 end;
writeln('Сумма=',sum:0:4);
end.
1
Cyborg Drone
Модератор
5876 / 3459 / 2556
Регистрация: 17.08.2012
Сообщений: 11,116
13.02.2015, 16:58 6
an:=-an/sqr(n) - есть вероятность целочисленного переполнения в результате вычисления n*n.

an:=-an/n/n - вот так целочисленного переполнения не возникнет вообще.

Добавлено через 10 минут
В жертву приносятся производительнось и размер екзешника.
0
Puporev
Модератор
56587 / 43280 / 29921
Регистрация: 18.05.2008
Сообщений: 102,942
13.02.2015, 17:15 7
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
есть вероятность целочисленного переполнения в результате вычисления n*n.
Да при точности 0.0001 n=5
1
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
13.02.2015, 21:30 8
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
В жертву приносятся производительнось и размер екзешника.
еще плюс вызов функции, передача аргумента по копированию, возможность переполнения....
0
Cyborg Drone
Модератор
5876 / 3459 / 2556
Регистрация: 17.08.2012
Сообщений: 11,116
15.02.2015, 18:59 9
saden, спасибо, что уточнили, почему понижается производительность и увеличивается объём экзешника. Я полагал, что это очевидно.
- согласен, функция преобразование целого в вещественное,
- ну, фактически я про это и писал (да, откуда такое определение? Обычно говорят: по значению),
- не согласен, если до этой строчки переполнения не было, то на ней и не возникнет, здесь возможно лишь антипереполнение, от которого программа застрахована конструкцией abs(an)>0.0001. Утверждаете, переполнение возможно? Пример выложите.

Puporev, лучше перебдеть, чем недоспать. Ну да, этот ряд быстро сходится... Да и, если честно, это всё - дело вкуса и стиля, делить там, умножать... Я вот предпочитаю целые числа, если возможно, не перемножать и в степень не возводить, от этого трудновылавливаемые ошибки случаются.
0
15.02.2015, 18:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2015, 18:59

Нахождение суммы бесконечного ряда
Помогите пожайлуйста.Не выводит ответ. Задание: Вычислить сумму ряда S с точностью е для всех...

Задача на нахождение суммы/произведения ряда
Здравствуйте) Если не трудно напишите программку) Нужно составить схему алгоритма и написать...

Правильно ли решена задача?
Верно ли я решил данную задачу?


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

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

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