Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 23:18   #1
NamelessEndless
Ворон-мститель
Пользователь
 
Аватар для NamelessEndless
 
Регистрация: 26.05.2008
Сообщений: 24
По умолчанию Ряд Тейлора в Delphi. В чёи ошибка?

Задача:
Вычисление с заданной точностью по расписанию в ряд Тейлора значения функции y=ln(1+x) в точке, заданной с клавиатуры.

Код:
unit lab1_14;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Edit2Change(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Label4Click(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  x,i,e : byte;
  result,x1 : real;

implementation

{$R *.dfm}

procedure TForm1.Edit2Change(Sender: TObject);
begin
x:=StrToInt(Edit2.Text);
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
e:=StrToInt(Edit1.Text);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  result:= 0;
  x1:= x;
    for i:=1 to e do
    begin
      result:= result+ (((exp(i*ln(-1))*(exp((i-1)*ln(x))))/(i+1)));
    end;
  result:=result+x1;
end;

procedure TForm1.Label4Click(Sender: TObject);
begin
Label4.Caption:=FloatToStr(result);
end;
end.
После введения точности и значения Х, выдает ошибку:
"Project Projectl.exe raised exception dass EInvalidOp with message 'Invalid floating point operation'. Process stopped. Use Step or Run to continue."
Говорит, что в:
result:= result+ (((exp(i*ln(-1))*(exp((i-1)*ln(x))))/(i+1)));

Где здесь ошибка..?

Заранее спасибо.
Бог умер. Воскрес и мстит.
NamelessEndless вне форума Ответить с цитированием
Старый 10.12.2009, 23:28   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Ориганльно ^__^
Код:
result:= result+ (((exp(i*ln(-1))*(exp((i-1)*ln(x))))/(i+1)));
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 10.12.2009, 23:39   #3
NamelessEndless
Ворон-мститель
Пользователь
 
Аватар для NamelessEndless
 
Регистрация: 26.05.2008
Сообщений: 24
По умолчанию

Ёп. Глаза уже замылились. Не заметила. Спасибо.

И вторую ошибку нашла..
Всем спасибо. Все работает.
Бог умер. Воскрес и мстит.
NamelessEndless вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. ряд Тейлора Archetype Помощь студентам 5 10.12.2009 18:23
Ряд тейлора ln(x) R@Ziel Помощь студентам 9 13.11.2009 17:48
Ряд Тейлора siriusz Общие вопросы C/C++ 6 06.02.2009 20:26