Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.04.2010, 01:00
bullet92820 bullet92820 вне форума
Прохожий
 
Регистрация: 08.04.2010
Сообщения: 21
Репутация: 10
По умолчанию Программа для вычисления интеграла

Нужна программа для вычисления интеграла методом средних прямоугольников и трапеций
Ответить с цитированием
  #2  
Старый 17.04.2010, 03:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Батенька, вам в раздел "Работа".
Вообще-то, такие программы делаются за 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  
Старый 17.04.2010, 20:17
bullet92820 bullet92820 вне форума
Прохожий
 
Регистрация: 08.04.2010
Сообщения: 21
Репутация: 10
По умолчанию

вот моя функция ln(x+sqrt(sqr(x)+8)), а как разбить ортезок на н частей?
Ответить с цитированием
  #4  
Старый 17.04.2010, 20:39
bullet92820 bullet92820 вне форума
Прохожий
 
Регистрация: 08.04.2010
Сообщения: 21
Репутация: 10
По умолчанию

Код:
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.
Admin: Недельный бан за повторное нарушение пункта правил 2.8 форума.

вот что я сделал , все работает, ответ -0.03424

Последний раз редактировалось Admin, 18.04.2010 в 13:12.
Ответить с цитированием
  #5  
Старый 17.04.2010, 20:39
bullet92820 bullet92820 вне форума
Прохожий
 
Регистрация: 08.04.2010
Сообщения: 21
Репутация: 10
По умолчанию

подскажите как график построить пожалуйста
Ответить с цитированием
  #6  
Старый 18.04.2010, 12:25
bullet92820 bullet92820 вне форума
Прохожий
 
Регистрация: 08.04.2010
Сообщения: 21
Репутация: 10
По умолчанию

при разных значениях n получаются разные значения интеграла, чем n больше тем значение меншье, как это исправить?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025