|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
График функции y=sqtr(sqr(x)-1) и ошибка EInvalidOp
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, TeEngine, Series, StdCtrls, ExtCtrls, TeeProcs, Chart; type TForm1 = class(TForm) Chart1: TChart; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Button1: TButton; Button2: TButton; Series1: TLineSeries; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Xmin,Xmax,Ymin,Ymax,Hx,Hy,h:real; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin {Установка начальных параметров.} Xmin:=-2*pi; Xmax:=2*pi; Ymin:=-1.5; Ymax:=1.5; Hx:=1; Hy:=0.5; h:=0.01; Edit1.Text:=FloatToStr(Xmin); Edit2.Text:=FloatToStr(Xmax); Edit3.Text:=FloatToStr(Ymin); Edit4.Text:=FloatToStr(Ymax); Edit5.Text:=FloatToStr(Hx); Edit6.Text:=FloatToStr(Hy); Edit7.Text:=FloatToStr(h); Chart1.BottomAxis.Automatic:=False; Chart1.BottomAxis.Minimum:=Xmin; Chart1.BottomAxis.Maximum:=Xmax; Chart1.LeftAxis.Automatic:=False; Chart1.LeftAxis.Minimum:=Ymin; Chart1.LeftAxis.Maximum:=Ymax; Chart1.BottomAxis.Increment:=Hx; Chart1.LeftAxis.Increment:=Hy; end; procedure TForm1.Button1Click(Sender: TObject); begin Xmin:=StrToFloat(Edit1.Text); Xmax:=StrToFloat(Edit2.Text); Ymin:=StrToFloat(Edit3.Text); Ymax:=StrToFloat(Edit4.Text); Hx:=StrToFloat(Edit5.Text); Hy:=StrToFloat(Edit6.Text); Chart1.BottomAxis.Minimum:=Xmin; Chart1.BottomAxis.Maximum:=Xmax; Chart1.LeftAxis.Minimum:=Ymin; Chart1.LeftAxis.Maximum:=Ymax; Chart1.BottomAxis.Increment:=Hx; Chart1.LeftAxis.Increment:=Hy; end; //рисуем график procedure TForm1.Button2Click(Sender: TObject); var x,y:real; begin Series1.Clear; Xmin:=StrToFloat(Edit1.Text); Xmax:=StrToFloat(Edit2.Text); h:=StrToFloat(Edit7.Text); x:=Xmin; Repeat y:=sqrt(sqr(x)-1); Series1.AddXY(x,y,'',clTeeColor); x:=x+h; Until x>Xmax; end; end. Подробней об ошибке: Project Project1.exe raised exception class EInvalidOp with message 'Invalid floating point operation'. |
#2
|
||||
|
||||
Квадратный корень из отрицательных значений не извлекается.
Вообще, график функции получится линейный, т.к. в ф-ии две взаимно противоположные ф-ии: степень и квадратный корень. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |