IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Курсовая,интеграл, Tchart, Программа перестала высчитывать интеграл
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Доброго времени суток...Как понятно приближается сессия и студенты начинают всё больше и больше учиться... так вот к чему это я... Курсовая работа "Вычисление определённго интеграла методом Чебышева" В прошлом семестре делалась аналогичная работа на Паскале, а в этом попросили перенести её на Дельфи, при чём реализовать графическую интерпретацию функции, интеграл которой мы ищет, при чём через 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 извиняюсь за создание аналогичной темы...просто не уверен,что если напишу в другой, мне кто-то ответит. Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 6:34
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name