Вот
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, TeEngine, Series, TeeProcs, Chart;
type
aa=array[1..5] of real;
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
RadioGroup1: TRadioGroup;
Label4: TLabel;
Edit4: TEdit;
BitBtn1: TBitBtn;
Label5: TLabel;
Chart1: TChart;
Series1: TLineSeries;
Panel1: TPanel;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Edit8: TEdit;
Series2: TLineSeries;
Series3: TLineSeries;
Series4: TLineSeries;
function f(x:real;n:integer):real;
procedure BitBtn1Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure vvod(var a,b:real; var k:aa);
procedure Raschet(var j:aa; var y:aa; var int:real);
private
{ Private declarations }
public
{ Public declarations }
end;
const pi=3.14;
var
Form1: TForm1;
x0,x,e,x1,a,b,c,d,gral:real;
m:integer;
j,y,k:aa;
implementation
{$R *.dfm}
function TForm1.f(x:real;n:integer):real;
begin
case RadioGroup1.ItemIndex of //Выбирает нужное уравнение
0:f:=x*x*x - x*x -x -1;
1:f:=x;
2:f:=x*x ;
end
end;
procedure TForm1.vvod(var a,b:real; var k:aa); //считаем k
var i:integer; t1,t2:real;
Begin
k[1]:=0.5*(b+a);
t1:=0.5*sqrt((5-sqrt(11))/3);
k[2]:=0.5*(b+a)+ 0.5*(b-a)*t1 ;
k[3]:=0.5*(b+a) - 0.5*(b-a)*t1;
t2:=0.5*sqrt((5+sqrt(11))/3);
k[4]:=0.5*(b+a)+ 0.5*(b-a)*t2;
k[5]:=0.5*(b+a) - 0.5*(b-a)*t2;
end;
procedure TForm1.Raschet(var j:aa; var y:aa; var int:real); // расчёт интеграла
var i:integer;
Begin
If RadioGroup1.ItemIndex=0 then
For i:=1 to 5 do
y[i]:=(j[i]*j[i]*j[i]-j[i]*j[i]+j[i]+1);
if RadioGroup1.ItemIndex=1then
For i:=1 to 5 do
y[i]:=j[i];
If RadioGroup1.ItemIndex=2 then
for i:=1 to 5 do
y[i]:=j[i]*j[i];
int:=y[1]+y[2]+y[3]+y[4]+y[5];
gral:=int*(b-a)/5; //получили значение интеграла
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var r:real;
i:integer;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
vvod(a,b,k);
raschet(j,y,gral);
Series1.Clear; //Очищает график от предыдущих линий
Series2.Clear;
Series3.Clear;
Series4.Clear;
m:=RadioGroup1.ItemIndex;
// Чертит график и оси координат для 1-го и 3-го уравнений
if (RadioGroup1.ItemIndex=0)or(RadioGroup1.ItemIndex=2)then
begin
for i:=-10 to 10 do begin
Series1.AddXY(i,f(i,m),'',clRed);
Series2.AddXY(0,-f(i,m),'',clBlack);
Series2.AddXY(0,f(i,m),'',clBlack);
Series4.AddXY(-i,0,'',clBlack);
Series4.AddXY(i,0,'',clBlack);end;end else
//Чертит график и оси координат для 2-го уравнения
for i:=-10 to 10 do begin r:=i/10;
Series1.AddXY(i,f(r,m),'',clRed);
Series2.AddXY(0,-f(r,m),'',clBlack);
Series2.AddXY(0,f(r,m),'',clBlack);
Series4.AddXY(-i,0,'',clBlack);
Series4.AddXY(i,0,'',clBlack);end;
// Проводит линию указывающую результат
Series3.AddXY(x,0,'',clGreen);
Series3.AddXY(x,f(x,m),'',clGreen);
//Вывод результата
Edit4.Text:=FLoatToStr(gral);
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
// Показывает или скрывает панель для ввода коэффициентов
If (RadioGroup1.ItemIndex=2)or(RadioGroup1.ItemIndex=1) Then Panel1.Visible:=True Else
Panel1.Visible:=False;
end;
end.
P.S извиняюсь за создание аналогичной темы...просто не уверен,что если напишу в другой, мне кто-то ответит. Заранее спасибо.