Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Курсовая,интеграл, Tchart

Автор: Kalipsoo 27.05.2008 13:34

Доброго времени суток...Как понятно приближается сессия и студенты начинают всё больше и больше учиться... так вот к чему это я... Курсовая работа "Вычисление определённго интеграла методом Чебышева" В прошлом семестре делалась аналогичная работа на Паскале, а в этом попросили перенести её на Дельфи, при чём реализовать графическую интерпретацию функции, интеграл которой мы ищет, при чём через Tchart. Вроде бы всё сделал, график рисует, только теперь программа перестала высчитывать интеграл...) Помогите найти ошибку... только оговорюсь, алгоритм вычисление интеграла менять не хочется...) потому что он рабочий точно))
Вот


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 извиняюсь за создание аналогичной темы...просто не уверен,что если напишу в другой, мне кто-то ответит. Заранее спасибо.

Автор: мисс_граффити 27.05.2008 21:02

можешь в архиве кинуть проект (без ехе-шника)?

Автор: Kalipsoo 28.05.2008 0:28

Юлия, извините, а на какой ящик мне скинуть? )) в вашем профиле не нашёл...)

Автор: Kalipsoo 28.05.2008 11:31

Вот...прикрепил)


Прикрепленные файлы
Прикрепленный файл  ________.zip ( 5.25 килобайт ) Кол-во скачиваний: 243