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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 21:42   #1
Helene Rolles
Новичок
Джуниор
 
Регистрация: 02.07.2011
Сообщений: 1
По умолчанию floating point division by zero

Всем привет.
Помогите пожалуйста исправить ошибки-две отмечены и то,что под Button3-совсем не работает(не ошибок,ничего.пустота)

Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Chart, Series, ExtCtrls, math, TeeProcs, TeEngine, TeeFunci;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    Edit3: TEdit;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
const
    pi=3.1415;
var
  Form1: TForm1;
  x,max,y:real;
  t: tchart;
implementation
 
{$R *.dfm}
 
function f(x:real):real;
begin
f:=(x*x)*(sin(power(x,1/3))-3);
end;
 
function d(x:real):real;
begin
d:=(1/3)*(power(x,4/3))*(cos(power(x,1/3)))+(2*x)*(sin(power(x,1/3))-3);
end;
 
function d1(x:real):real;
begin
d1:=(-(1/81))*((16*sin(power(x,1/3))*(power(x,5/3))+56*(power(x,4/3))*cos(power(x,1/3))-sin(power(x,1/3))*(power(x,7/3))+12*(power(x,2))*cos(power(x,1/3)))/(power(x,3)));
end;
 
function f1(x:real):real;
begin
f1:=(-1)-(1*x)-(0.1*x*x)+(1*x*x*x)+(1*x*x*x*x)+(1*x*x*x*x*x);
end;
 
function f2(t,x:real):real;
begin
f2:=t*sin(t*t+x*t);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var n,i:integer;
a,b:real;
e,h,x1,x2,s,s1,p,pr:real;
begin
t.Free;
t:= TChart.Create(Form1);
t.Parent := Form1;
t.AddSeries(TlineSeries.Create(t));
t.AddSeries(TlineSeries.Create(t));
x:=0;
max:=d(x);
while x<=2 do
begin
y:=d(x);
if y>max then max:=y;
x:=x+0.000001;
end;
N:=1;
e:=0.000001;
a:=pi/4;
b:=pi/2;
s:=0;
s1:=0;
 for i := 1 to N do
 begin
 h:=(b-a);
 x1:=a+i*h;
 x2:=x1-0.5*h;
 s:=s+f(x2)*h;
 end;
  repeat
  s:=s1;
  s1:=0;
  N:=N*2;
  h:=h/2;
   for i := 1 to N do
   begin
   x1:=a+i*h;
   x2:=x1-0.5*h;
   s1:=s1+f(x2)*h;
   end;
  p:=((h*h*(b-a))/24)*max;
  pr:=(s1-s)/(3);
  t.Series[0].AddXY(ln(h),ln(abs(pr)),'');
  t.Series[1].AddXY(ln(h),ln(abs(p)),'');   // floating point division by zero
 
  until abs(p)<e;
edit1.Text:=floattostr(abs(s1));
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var n,i:integer;
a,b:real;
e,s,s1,h,p,x1,x2,pr:real;
begin
t.Free;
t:= TChart.Create(Form1);
t.Parent := Form1;
t.AddSeries(TlineSeries.Create(t));
t.AddSeries(TlineSeries.Create(t));
a:=pi/4;
b:=pi/2;
N:=1;
e:=0.000001;
s:=0;
s1:=0;
h:=(b-a)/N;
 for i := 1 to N do
 begin
 x1:=a+(i-1)*h;
 x2:=a+i*h;
 s:=s+((f(x1)+f(x2))*h)/2;
 end;
  repeat
  s:=s1;
  s1:=0;
  N:=N*2;
  h:=(b-a)/N;
   for i := 1 to N do
   begin
   x1:=a+(i-1)*h;
   x2:=a+i*h;
   s1:=s1+(f(x1)+f(x2))*h*0.5;
   end;
  pr:=(s1-s)/(3);
  p:=((h*h*(b-a))/12)*max;
 t.Series[0].AddXY(ln(h),ln(abs(pr)),''); 
  t.Series[1].AddXY(ln(h),ln(abs(p)),''); // floating point division by zero
  until abs(p)<e;
edit2.Text:=floattostr(abs(s1));
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var i,N:integer;
a,b:real;
e,h,s,s1,p,n2,pr:real;
begin
t.Free;
t:= TChart.Create(Form1);
t.Parent := Form1;
t.AddSeries(TlineSeries.Create(t));
t.AddSeries(TlineSeries.Create(t));
x:=0;
max:=d1(x);
while x<=2 do
begin
y:=d1(x);
if y>max then max:=y;
x:=x+0.000001;
end;
N:=2;
e:=0.000001;
a:=pi/4;
b:=pi/2;
h:=(b-a)/N;
 for i:=1 to trunc(n) do
 s:=s+((f(a+((2*i)-2)*h)+4*f(a+((2*i)-1)*h)+f(a+(2*i)*h))*h)/3;
  repeat
  h:=(b-a)/n;
  n2:=n/2;
  s:=s1;
  s1:=0;
   for i:=1 to (n div 2) do
   s1:=s1+((f(a+((2*i)-2)*h)+4*f(a+((2*i)-1)*h)+f(a+(2*i)*h))*h)/3;
  n:=n*2;
  pr:=(s1-s)/(15);
  p:=((h*h*h*h*(b-a))/180)*max;
  t.Series[0].AddXY(ln(h),ln(abs(pr)),'');
  t.Series[1].AddXY(ln(h),ln(abs(p)),'');
  until abs(p)<e;
edit3.Text:=floattostr(abs(s1));
end;
 
 end.

Последний раз редактировалось Simply-Art; 19.12.2011 в 06:25. Причина: с какой стати это было PHP кодом?
Helene Rolles вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
is not a valid floating point value nexzis Помощь студентам 3 22.11.2010 13:55
Floating point exception Gorbunov89 Общие вопросы C/C++ 0 19.12.2009 23:05
s not a valid floating point value prod87 Помощь студентам 1 02.12.2009 20:57
invalid floating point operation mosq Общие вопросы Delphi 7 01.11.2009 13:28