Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
1

Вычисление суммы ряда с заданной точностью, и количества слагаемых

24.06.2015, 15:29. Просмотров 989. Ответов 10
Метки нет (Все метки)

Помогите, пожалуйта!
У меня не получается посчитать сумму ряда.

http://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\sum_{k=0}^{\infty}\frac{ln \left(a+x \right)^{2k}}{2^k+k!}<br />

Заданы величины х, а, е http://www.cyberforum.ru/cgi-bin/latex.cgi?x\neq 0,a\neq 0, e>0. Разработать программу, которая вычисляет значение суммы с заданной точностью http://www.cyberforum.ru/cgi-bin/latex.cgi?e и указывает количество учитываемых слагаемых.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2015, 15:29
Ответы с готовыми решениями:

Вычисление суммы ряда с заданной точностью
Помогите разобраться с ошибкой. Задание:Для заданных значений e&gt;0 и x...

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

Разработать программу, которая вычисляет значение суммы с заданной точностью и указывает количество учтенных слагаемых
Помогите пожалуйста. Задано действительные величины a,x,e(a&lt;&gt;0,x&lt;&gt;0,e&gt;0)....

Разработать программу, которая вычисляет значение суммы с заданной точностью и указывает количество учтенных слагаемых
Помогите пожалуйста. Задано действительные величины a,x,e(a&lt;&gt;0,x&lt;&gt;0,e&gt;0)....

Вычисление суммы ряда с точностью
Вычислить сумму ряда с точностью до 0,0001. \sum_{n=1}^{\infty} (-1)^{n+1}*...

10
Puporev
Модератор
55402 / 42537 / 29392
Регистрация: 18.05.2008
Сообщений: 100,603
24.06.2015, 16:02 2
В формуле (ln(a+x))2k?
0
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
24.06.2015, 16:39  [ТС] 3
Не знаю, такое задание дали. Даже не понимаю, как его решать.
Если первый элемент равен нулю, это же не значит, что сумма ряда равна нулю?
0
Puporev
Модератор
55402 / 42537 / 29392
Регистрация: 18.05.2008
Сообщений: 100,603
24.06.2015, 16:45 4
Цитата Сообщение от Nazar25 Посмотреть сообщение
Если первый элемент равен нулю, это же не значит, что сумма ряда равна нулю?
Значит, ибо 0<e
0
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
24.06.2015, 17:12  [ТС] 5
Я тут проконсультировался и мне сказали, что заданную точность надо вводить самому(типа е:=0,001), и х, а, е - это числа с плавающей запятой
0
Puporev
Модератор
55402 / 42537 / 29392
Регистрация: 18.05.2008
Сообщений: 100,603
24.06.2015, 17:13 6
Да делайте что хотите...
1
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
24.06.2015, 17:55  [ТС] 7
Puporev, помогите, пожалуйста. Пишет деление на 0
Delphi
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1; i, y, n,e,a,x, sum:real; k:integer;
 
implementation
 
{$R *.dfm}
function factorial(k:integer): integer;
begin
  if k<>1 then begin
 factorial:= k*factorial(k-1);
  end
  else factorial:= 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
e:=0.001;
sum:=0; i:=1;k:=-1;
n:=strtofloat(edit1.text);
while i <=n do
begin
repeat
y:=(exp((2*(k+i))*ln(ln(a+x))))/((exp((k+i)*ln(2)))*factorial(k));
sum:=sum+y;
i:=i+1;
until y<=e;
end;
Label1.Caption := 'Сумма ряда равна  '+floattostr(sum);
end;
 
end.
0
Puporev
Модератор
55402 / 42537 / 29392
Регистрация: 18.05.2008
Сообщений: 100,603
24.06.2015, 18:03 8
Для начала вводить нужно а,х, n вводить не нужно.
0
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
24.06.2015, 18:13  [ТС] 9
Puporev, так?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function factorial(k:integer): integer;
begin
  if k<>1 then begin
 factorial:= k*factorial(k-1);
  end
  else factorial:= 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
e:=0.001;
sum:=0; i:=1;k:=-1;
a:=strtofloat(edit1.text);
x:=strtofloat(edit2.text);
//while i <=n do
//begin
repeat
y:=(exp((2*(k+i))*ln(ln(a+x))))/((exp((k+i)*ln(2)))*factorial(k));
sum:=sum+y;
i:=i+1;
until y<=e;
//end;
Label1.Caption := 'Сумма ряда равна  '+floattostr(sum);
end;
У меня выдает "Stack owerflow" на этой строчке:
Delphi
1
 factorial:= k*factorial(k-1);
0
Puporev
Модератор
55402 / 42537 / 29392
Регистрация: 18.05.2008
Сообщений: 100,603
24.06.2015, 19:02 10
Лучший ответ Сообщение было отмечено Nazar25 как решение

Решение

Если числитель дроби читать так ln[(a+x)2k)], то задача не имеет смысла, поскольку как я писал уже первый член=0<e
Если же читать так [ln(a+x)]2k, то задание имеет смысл и может быть решено так
Delphi
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Math{добавить};
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
function fact(n:integer):double;
var i:integer;
begin
result:=1;
for i:=2 to n do
result:=result*i
end;
procedure TForm1.Button1Click(Sender: TObject);
var x,a,e,z,sum:double;
    k:integer;
begin
val(Edit1.Text,x,k);
if k<>0then
 begin
  showmessage('Неверно введено значение Х');
  Edit1.Clear;
  Edit1.SetFocus;
  exit;
 end;
val(Edit2.Text,a,k);
if(k<>0)or(a+x<=0)then
 begin
  showmessage('А должно быть числом и а+х>0');
  Edit2.Clear;
  Edit1.SetFocus;
  exit;
 end;
val(Edit3.Text,e,k);
if(k<>0)or(e<=0)then
 begin
  showmessage('Неверно введено значение E');
  Edit3.Clear;
  Edit3.SetFocus;
  exit;
 end;
k:=0;
z:=0.5;//значение члена ряда при k=0
sum:=z;
while abs(z)>=e do
 begin
  k:=k+1;
  z:=power(ln(a+x),2*k)/(power(2,k)+fact(k));
  sum:=sum+z;
 end;
Label1.Caption:='Сумма ряда равна  '+format('%.4f',[sum]);
 
end;
 
end.
1
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
24.06.2015, 20:58  [ТС] 11
Puporev, спасибо вам большое!
0
24.06.2015, 20:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2015, 20:58

Вычисление бесконечного ряда с заданной точностью
var x,y,n,f: real; begin x:=StrToFloat(Edit1.Text); y:=0; n:=1; f:=1;...

Вычислить значение суммы ряда с заданной точностью
вообщем есть задание как я понял тут надо использовать циклы..... но как и что...

Цикл: Вычислить значение суммы ряда с заданной точностью
Препод сказал, что неверно. Помогите исправить? procedure...


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

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

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