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