• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Обчисление суммы ряда

lazyrazor4

"Все лгут."
Регистрация
22 Авг 2012
Сообщения
174
Реакции
5
Баллы
0
Обчисление суммы ряда

Здравствуйте. Вот набросал такой код, но что-то не так с Ak, и из-зи этого программа не работает, нужно обязательно с рекурсиями для файториала, степени, Ak и суммы. Delphi. Снимок.webp

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}



procedure TForm2.Button1Click(Sender: TObject);
VAR n: integer;
s: double;
{Попередній опис функції Ak}

Function Ak(k: integer ): double; FORWARD;

function Stepin(a,b:real):real;
begin
a:=-1;
Result := exp(b*ln(a)); //підносимо до степеня
end;

{Функція обчислення факторіалу}
Function Fact(k: integer ): longint;
begin
if (k=0) or (k=1) then result:=1
else result:=Fact(k-1)*k;
end;


{Функція обчислення Ak}
Function Ak(k: integer ): double;
begin
if k=1 then result:=1/2
else result:=1+(Stepin(-1,k)/Fact(k+1));
end;



{Функція обчислення суми}
Function Sum(k: integer ): double;
begin
if k=1 then result:=1/4
else result:=Sum(k-1)+(Ak(k))/Fact(k);
end;
begin

{Введення початкових даних}
n:=StrToInt(Edit1.Text);
{Обчислення суми}
s:=Sum(n);
{Виведення результату}
Edit2.Text:=FloatToStr(s);
end;


end.
 
Вот тут у тебя K=-1
function Stepin(a,b:real):real;
begin
a:=-1;
Result := exp(b*ln(a)); //підносимо до степеня
end;

Да и зачем ты так степень выписываешь?
в Uses подключи библиотеку Math
и считай через power(a,b) т.е. возвести число a в степень b.

Вспомни элементарную математику
e^(ln(a)) = a (a>0)
ln(e^a) = a
ln(xy) = ln(x)+ln(y)
ln(1) = 0
ln(-1) = ipi - т.е. комплексный натуральный логарифм
lim((ln(1+x))/x) = 1 - где придел x стремится к 0
 
Назад
Сверху