![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Нужна программа для вычисления интеграла методом средних прямоугольников и трапеций
|
|
#2
|
|||
|
|||
|
Батенька, вам в раздел "Работа".
Вообще-то, такие программы делаются за 1 час на коленке, если функия задана в задании. Если для любой функции, то тоже можно сделать, но это чуть сложнее. Тебе надо разбить отрезок интегрирования на N частей (т.е. получить неуоторый шаг d). Далее циклом от 1 до N складывает площади фигур, построенных на основании d и значения функции в соотв, точках: - ср. прямоугольник: S = d*F(X0 + d*(I+0.5)); - трапеций: S = d*(F(X0 + I*d) + F(X0 + (I+1)*d))/2; F(X) - подитегральная функция X0 - начало отрезка интегрирования d - "ширина" шага I - номер шага (счетчик цикла). |
|
#3
|
|||
|
|||
|
вот моя функция ln(x+sqrt(sqr(x)+8)), а как разбить ортезок на н частей?
|
|
#4
|
|||
|
|||
|
Код:
const a=1;
const b=0;
const n=20;
var
Form1: TForm1;
s,d: real;
i: integer;
implementation
{$R *.dfm}
function f(x:real):real;
begin
f:=ln(x+sqrt(sqr(x)+8));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
d:=(b-a)/n;
for i:=0 to n do
s:=d*f(0+d*(i+0.5));
label1.Caption:=floattostrf(s,fffixed,9,8);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
d:=(b-a)/n;
for i:=0 to n do
S:=d*(F(0 + I*d) + F(0 + (I+1)*d))/2;
label1.Caption:=floattostrf(s,fffixed,9,8);
end;
end.вот что я сделал , все работает, ответ -0.03424 Последний раз редактировалось Admin, 18.04.2010 в 13:12. |
|
#5
|
|||
|
|||
|
подскажите как график построить пожалуйста
|
|
#6
|
|||
|
|||
|
при разных значениях n получаются разные значения интеграла, чем n больше тем значение меншье, как это исправить?
|