Помощь - Поиск - Пользователи - Календарь
Полная версия: Курсовая,интеграл, Tchart
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Kalipsoo
Доброго времени суток...Как понятно приближается сессия и студенты начинают всё больше и больше учиться... так вот к чему это я... Курсовая работа "Вычисление определённго интеграла методом Чебышева" В прошлом семестре делалась аналогичная работа на Паскале, а в этом попросили перенести её на Дельфи, при чём реализовать графическую интерпретацию функции, интеграл которой мы ищет, при чём через 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 извиняюсь за создание аналогичной темы...просто не уверен,что если напишу в другой, мне кто-то ответит. Заранее спасибо.
мисс_граффити
можешь в архиве кинуть проект (без ехе-шника)?
Kalipsoo
Юлия, извините, а на какой ящик мне скинуть? )) в вашем профиле не нашёл...)
Kalipsoo
Вот...прикрепил)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.