function TIntegratorForm.f(x: double):double;
//Ôóíêöèÿ f(x)
begin
result:=k*arccos(a*x+b)+c*x+d;
end;
function TIntegratorForm.int_f(x: double):double;
{Ïåðâîîáðàçíàÿ f(x)}
begin
result:=(((a*x+b)*arccos(a*x+b)-sqrt(1-sqr(a*x+b)))*k)/a+0.5*c*sqr(x)+d*x;
end;
begin
Btn_calc.Enabled:=false;
try
k :=StrToFloat(Edit_k.Text);
a :=StrToFloat(Edit_a.Text);
b :=StrToFloat(Edit_b.Text);
c
:=StrToFloat(Edit_c.Text);
d :=StrToFloat(Edit_d.Text);
x1 :=StrToFLoat(Edit_x1.Text);
x2 :=StrToFloat(Edit_x2.Text);
nDiv:=StrToInt (Edit_nDiv.Text);
if (nDiv<1) then
begin
MessageBox(Handle,
'Íåîáõîäèì ïî êðàéíåé ìåðå 1 îòðåçîê ðàçáèåíèÿ',
'Îøèáêà', MB_OK or MB_ICONEXCLAMATION);
Edit_nDiv.SetFocus;
Btn_calc.Enabled:=true;
exit;
end;
except
MessageBox(Handle, 'Ñëåäóåò
ââåñòè ÷èñëî', 'Îøèáêà', MB_OK or MB_ICONEXCLAMATION);
Edit_k.SetFocus;
Btn_calc.Enabled:=true;
exit;
end;
{Ðàñ÷åò ïëîùàäè}
s:=0;
dx:=(x2-x1)/nDiv;
x:=x1;
try
for i:=1 to nDiv do
begin
s:=s+f(x+0.5*dx)*dx;
x:=x+dx;
end;
s_exact:=int_f(x2)-int_f(x1);{Ôîðìóëà Íüþòîíà-Ëåéáíèöà}
except
On EMathError do
begin
MessageBox(Handle,
'Çàäàííûå ïàðàìåòðû ïðèâåëè ê âûõîäó çà ïðåäåëû
ÎÄÇ',
'Íàðóøåíèå ÎÄÇ', MB_OK or MB_ICONEXCLAMATION);
Btn_calc.Enabled:=true;
exit;
end;
end;
Внимание! сейчас Вы не авторизованы и не можете подавать сообщения как зарегистрированный пользователь.
Чтобы авторизоваться, нажмите на эту ссылку (после авторизации вы вернетесь на
эту же страницу)