Gennady
Гений
(60223)
1 год назад
Все это хорошо, а вопрос-то в чем? Но это так, для вступления. По-сути, программа работать не будет. Целиком не разбирался, но это точно не прокатит
(exp(n*ln(-a)))
Вы в курсе, что не существует логарифмов отрицательных чисел и даже нуля? А поскольку а=1, это как раз тот случай. Я понимаю, что вы хотели минус единицу возвести в некоторую степень. Только так это не делается! Все значительно проще. Достаточно каждый следующий член суммы умножать на -1 и все! И да, (2*n) здесь скобки не надо.
СКАчать ФайлУченик (159)
1 год назад
Числа не сходятся
и n скачет
И вопросик, что значит "инкрементация выполняется после накапливания суммы"
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='-2';
Edit2.Text:='-0,1';
Edit3.Text:='0,25';
Edit4.Text:='0,001';
Memo1.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
xn,xk,x,h,e,a,s,y:Extended;
n:Integer;
begin
Memo1.Lines.Add('Вычисление таблицы значений функции');
Memo1.Lines.Add('Исходные данные:');
xn:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('xn= '+FloatToStrF(xn,ffFixed,6,2));
xk:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('xk= '+FloatToStrF(xk,ffFixed,6,2));
h:=StrToFloat(Edit3.Text);
Memo1.Lines.Add('h= '+FloatToStrF(h,ffFixed,8,3));
e:=StrToFloat(Edit4.Text);
Memo1.Lines.Add('eps= '+FloatToStrF(e,ffFixed,8,5));
Memo1.Lines.Add('Таблица знацений функции');
Memo1.Lines.Add('x S(x) Y(x) n');
x:=xn;
Repeat
a:=1;
S:=1;
n:=0;
While Abs(a)>e Do
Begin
Inc(n); //n:=n+1
a:=(exp(n*ln(-a)))*exp((2*n)*ln(1+x))/n;
s:=s+a;
end;
y:=Ln(1/(2+2*x+Sqr(x)));
Memo1.Lines.Add(FloatToStrF(x,ffFixed,6,2)+' '+FloatToStrF(s,ffFixed,8,4)+' '+FloatToStrF(y,ffFixed,8,4)+' '+IntToStr(n));
x:=x+h;
Until x>xk+h/2
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Memo1.Clear;
end;