51091

Вычисление определенного интеграла при помощи метода трапеций в среде Delphi

Лабораторная работа

Информатика, кибернетика и программирование

В компоненте Groupbox1 три текстовых поля объекты Edit для ввода значений количества разбиений n начального и конечного значения интервалов а и b; в компоненте Groupbox1 три поля меток объекты Lbel для вывода информации содержащейся в текстовых полях Edit; в компоненте Groupbox2 четыре поля меток объекты Lbel Lbel5 и Lbel7 для вывода результатов значения шага h и вычисления определенного интеграла по методу трапеции; Lbel4 и Lbel6 для вывода соответствующей информации. Аналогично измените свойство Cption для полей меток...

Русский

2014-02-05

101.95 KB

117 чел.

Лабораторная работа «Вычисление определенного интеграла при помощи метода трапеций» в среде Delphi.

Создание новой программы в объектно-программированной среде Delphi начинается с выбора опции File/New Application.

1Разместить на форме со страницы библиотеки Standard:

  1.  два компонента  (объект Groupbox) для группировки установленных в форму компонентов по смыслу (см. рис.1).
  2.  в компоненте Groupbox1 три текстовых поля  (объекты Edit) для ввода значений количества разбиений n, начального и конечного значения интервалов а и b;
  3.  в компоненте Groupbox1 три поля меток  (объекты Label) для вывода информации, содержащейся в текстовых полях Edit;
  4.  в компоненте Groupbox2 четыре поля меток (объекты Label), Label5 и Label7 для вывода результатов значения шага h и вычисления определенного интеграла по методу трапеции; Label4 и Label6 для вывода соответствующей информации.

Расположите компоненты страницы Standart на форме следующим образом см. рисунок 1.

Рисунок 1 - Проектирование формы (первый этап)

2. Обратившись к инспектору объектов, измените, свойство Caption формы следующим образом щелкните мышью по строке Caption окна инспектора объектов. Вы активизировали эту строку свойств. В правой колонке запишите «Вычисление определенного интеграла – метод трапеций» (см. рис 3). Аналогичным способом измените, свойство Caption для компонента Groupbox1 запишите «Исходные данные», для компонента Groupbox2 «Расчетные данные». Аналогично измените, свойство Caption для полей меток (объекты Label) следующим образом: Label1 - «Количество разбиений,n»; Label2 - «Начальное значение интеграла, а»; Label3 - «Конечное значение интеграла, b»; Label4 – «Значение шага, h»; Label5 – «неизвестная величина»; Label6 –«Значение интеграла по методу трапеций,S»; Label7 - «неизвестная величина» (см. рис.2).

Рисунок 2 - Проектирование формы (второй этап).

Следующим этапом является создание программного кода событийной процедуры, определяющей вычисления определенного интеграла по методу трапеции. Для этого необходимо совершить следующие действия.

3. Поместить на форму кнопку Button1 . Для данной кнопки в инспекторе объектов обозначить свойство Caption как «Расчет». Необходимо создать для нее событийную процедуру TForml.ButtonlClick, для этого по кнопке произведем двойной щелчок мышью, откроется окно редактора кода программы (см. рис. 3).

Рисунок 3 - Окно редактора кода программы вычисление определенного интеграла методом трапеций (третий этап).

В процедуре TForml.ButtonlClick нужно:

присвоить переменным a, b, h значения, введенные в текстовые поля, с использованием функции преобразования строки в вещественное число StrToFloat (). Например: a:=StrToFloat(Edit2.Text); (см. таблицу 1).

Таблица 1 - Функции преобразования типов

Функция

Значение

IntToStr(n)

Строка, являющаяся изображением значения целого типа n

FloatToStr(n)

Строка, являющаяся изображением значения вещественного типа n

FloatToStrF(n,f,L,m)

Строка, являющаяся изображением значения вещественно типа n. При вызове функции указываются:
F-формат (способ изображения)
L-точность (нужное общее количество цифр)
M-количество цифр после десятичной точки

StrToInt(s)

Целое значение, изображением которого является строка s

StrToFloat (s)

Вещественное, изображением которого является строка s

Формула трапеции имеет вид:

где f(xi) – значение подынтегральной функции в точках разбиения интервала (a,b) на равные участки с шагом hf(x0), f(xn) – значения подынтегральной функции соответственно в точках и b. x i=a+i*h;

Например: Дана функция .

При помощи цикла с параметром вычислим значение, для этого рассчитаем x=а+ih. Приведем пример фрагмента кода программы:

sum:=0;
for i:=1 to (n-1) do
  begin
    x:=a+i*h;
    f:=1/sqrt((0.2*x*x)+1);
    sum:=sum+f;
end;

Вычислим длину каждого элементарного отрезка (значение шага) . точки деления отрезка будут: x0=a; x1=a+h……………………… xn=b.

Для того чтобы вывести значение шага в поле метки Label5 используем функцию преобразования типа данных FloatToStr(L);

НапримерLabel5.Caption:=FloatToStrF(h,ffFixed,4,3);

Расчет значения определенного интеграла f(x0) в точке x0=a:

Напримерf0:=1/sqrt((0.2*a*a)+1);

Расчет значения определенного интеграла f (xn) в точке xn=b:

Например: fn:=1/sqrt((0.2*b*b)+1);

Расчет значения определенного интеграла при помощи метода трапеции:

sft:=h*(f0+fn/2)*sum;

Вывод значения интеграла по методу трапеций в поле метки Label7 с использованием функции преобразования типа данных FloatToStr(L);

НапримерLabel7.Caption:=FloatToStrF(sft,ffFixed,4,3);

Приведем пример кода программы:

procedure TForm1.Button1Click (Sender: TObject);

Var a,b,x,h,f,f0,fn,sft,sum:real; i,n:integer;
begin
n:=StrToInt(Edit1.Text);
a:=StrToFloat(Edit2.Text);
b:=StrToFloat(Edit3.Text);
h:=(b-a)/n;
Label5.Caption:=FloatToStrF(h,ffFixed,4,3);
sum:=0;
for i:=1 to (n-1) do
  begin
    x:=a+i*h;
    f:=1/sqrt((0.2*x*x)+1);
    sum:=sum+f;
end;
f0:=1/sqrt((0.2*a*a)+1);
fn:=1/sqrt((0.2*b*b)+1);
sft:=h*(f0+fn/2)*sum;
Label7.Caption:=FloatToStrF(sft,ffFixed,4,3);
end;

4. Поместить на форму кнопку Button2 . Для данной кнопки в инспекторе объектов обозначить свойство Caption как «Выход в редактор кода программы». Необходимо создать для нее событийную процедуру TForml.Button2Click, для этого произведем двойной щелчок по кнопке мышью, откроется окно редактора кода программы. Для осуществления выхода в редактор кода программы необходимо записать слово close.

Запуск проекта осуществляется при нажатии на клавишу F9. Ввести значения n=19, a=2,1 и b= 3,6. Нажать на кнопку «Расчет» (см. рис. 4)

Рисунок 4 - Окно редактора кода программы вычисление определенного интеграла методом трапеций (итоговый этап).

Вычисление интеграла с заданной точностью алгоритмом Симпсона.

// (c) Copydown 2002, all left reserved. http://world.fpm.kubsu.ru.

{$APPTYPE CONSOLE}

{$F+} {разрешение передачи функций, как параметров}

type FunctionType = function(x: real): real;

{интегрируемая функция}

function f(x: real): real; begin f := x end;

{интегрирование от a до b функции f с точностью e}

function IntegralSimpson(a, b: real; f: FunctionType; e: real): real;

 var

   h, x, s, s1, s2, s3, sign: real;

 begin

 if (a = b) then

   begin

     IntegralSimpson := 0; exit

   end;

 if (a > b) then

   begin

     x := a; a := b; b := x; sign := -1

   end

  else sign:=1;

 h := b - a; s := f(a) + f(b); s2 := s;

 repeat

   s3 := s2; h := h/2; s1 := 0; x := a + h;

   repeat

     s1 := s1 + 2*f(x); x := x + 2*h;

   until (not(x < b));

   s := s + s1; s2 := (s + s1)*h/3; x := abs(s3 - s2)/15

 until (not(x > e));

 IntegralSimpson := s2*sign;

 end;

begin

 {вывод результата интегрирования от 0 до 1 функции f с точностью 0.001}

 writeln(IntegralSimpson(0, 1, f, 0.001));

 writeln; writeln('Press Enter'); readln;

end.

Вычисление интеграла методом прямоугольников в Delphi.

 

(с) Incognito 2009

Что ж… Продолжим вместе со мной изучение Delphi.

 

 

Задача: необходимо написать программу, вычисляющую интеграл от 0 до 1 ln(x+1)dx(простите за такую форму записи, но не знаю как записать по-нормальному).

Давайте подумаем, что нам необходимо сделать?.. Во-первых, найти значение этого интеграла. Во-вторых, построить график, иллюстрирующий метод прямоугольников. Вроде все… Тогда, приступим!

Думаю, если вы читаете эти строки, то включать комп уже не обязательно, поэтому сразу запускаем Delphi.   

 

На форме размещаем кнопочку “Выполнение” точно так же, как мы это делали в линейной интерполяции. Помимо кнопки разместим еще объект  Lable он находится на главной панели во вкладке Standart. Так же разместим на форме уже знакомый нам объект TChart(как мы помним, он отвечает за графики). Кликаем дважды по последнему и добавляем две линии(для удобства не забудьте выключить функцию 3D).

В var описываем необходимые переменные:

var
  Form1: TForm1;
  s,x,y,h, g: double;

Причем “Form1: TForm1;” – Delphi пишет за нас(использует нашу форму). Теперь поясню: s – площадь под графиком функции ln(x+1) (искомое значение нашего интеграла); х,у – координату точек; h – шаг для прямоугольников(длина их основания); g – тот шаг, который мы будем использовать при построении графиков. Отмечу, что шаг g много меньше h, что обеспечивает визуальную гладкость на изображении.

Далее, в событии OnClick нашей кнопки “Вычисление” пишем такой код:

 s:=0; // присваиваем площади значение 0, чтобы впоследствии, шаг за шагом, наращивать его.
h:=0.1; // задаем шаг(основание прямоугольника). Можете сделать его меньше: чем меньше шаг – тем точнее вычисление(меньше погрешность).
x:=0; // присваиваем х значение 0, чтобы у нас была возможность использовать цикл с условием.
while(x<=1) do // собственно, начинаем этот цикл.
 begin
  y:=ln(x+1); 
// по мере нарастания х, вычисляем значения у в них.
  s:=s+y*h; // с каждым шагом наращивем площадь.
  x:=x+h; // наращиваем х(движемся далее по циклу).
 end; // конец цикла.
Label1.Caption:=FloatToStr(s); // выводим на экран конечное значение площади s. Вывод будет производиться в объекте Lable1.

Теперь начнем строить графики:

x:=0; // опять присваиваем х значение 0 для возможности использовать цикл с учловием.
g:=0.001; // задаем шаг построения точек. Напомню, что он должен быть много меньше шага h, иначе получится не кривая, а ломаная.
while (x<=1) do // Начинаем построение графика функции у=ln(х+1).
begin
 y:=ln(x+1);
 x:=x+g;
 Series1.AddXY(x,y,’ ‘,clRed);
end; 
// конец построения первого графика.

x:=0; // и снова та же процедура. 
while (x<=1) do // Начинаем строить прямоугольники, наглядно демонстрирующие суть метода(собственно, мы считаем не площадь под графиком, а именно их площадь).
begin
 Series2.AddXY(x,0,’ ‘,clBlue);
 y:=ln(x+1);
 Series2.AddXY(x,y,’ ‘,clBlue);
 x:=x+h;
 Series2.AddXY(x,y,’ ‘,clBlue);
end; 
// конец построения.

После того как мы все это сделали, у нас получается такой програмный код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Chart1: TChart;
    Series1: TLineSeries;
    Series2: TLineSeries;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  s,x,y,h, g: double;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  s:=0;
h:=0.1;
x:=0;
while(x<=1) do
 begin
  y:=ln(x+1);
  s:=s+y*h;
  x:=x+h;
 end;
Label1.Caption:=FloatToStr(s);
x:=0;
g:=0.001;
while (x<=1) do
begin
 y:=ln(x+1);
 x:=x+g;
 Series1.AddXY(x,y,’ ‘,clRed);
end;

x:=0;
while (x<=1) do
begin
 Series2.AddXY(x,0,’ ‘,clBlue);
 y:=ln(x+1);
 Series2.AddXY(x,y,’ ‘,clBlue);
 x:=x+h;
 Series2.AddXY(x,y,’ ‘,clBlue);
end;

end;

end.


 

А также другие работы, которые могут Вас заинтересовать

31601. ПОРУШЕННЯ ЛІПІДНОГО ОБМІНУ 80.5 KB
  Характерні: а високий рівень холестерину і ТГ у плазмі; б ксантелазми ліктьові і колінні ксантоми жовтуватокоричневі відкладення ліпідів у шкірі долонних ліній і в місцях тиску кілець; в атеросклероз коронарних артерій периферичних судин і судин мозку; в ожиріння цукровий діабет гіпотиреоз. Клінічно проявляються: а загальним ожирінням б ожирінням печінки в цукровим діабетом г хронічними захворювання нирок д органними ангіопатіями є жировими відкладеннями в сітківці. 4 Гормональні порушення хвороби обміну...
31602. ПАТОЛОГІЧНА ФІЗІОЛОГІЯ НЕРВОВОЇ СИСТЕМИ. ПОРУШЕННЯ СЕНСОРНОЇ ФУНКЦІЇ НЕРВОВОЇ СИСТЕМИ 93.5 KB
  Екстралемнісковий шлях проводить больову чутливість пізня глибока і вісцеральна біль. На відміну від двох попередніх є багатонейронним і філогенетично більш давній. Біль неприємне сенсорне і емоційне відчуття повязане із загрозою або самим ушкодженням тканин. Особливості болю як виду чутливості: 1 Біль дає мало інформації про навколишній світ проте інформує про небезпеку яка може виникнути або уже виникла внаслідок дії ушкоджуючих факторів захисна функція болю.
31603. ПОРУШЕННЯ СИСТЕМИ ЛЕЙКОЦИТІВ 84 KB
  Периферична кров містить: 1 пул циркулюючих лейкоцитів близько 50; 2 пристінковий маргінальний пул близько 50. Для характеристики стану лейкоцитів використовують наступні показники: 1 Вміст лейкоцитів в одиниці обєму крові. Збільшення вмісту лейкоцитів у крові одержало назву лейкоцитозу зменшення лейкопенії.
31604. ПОРУШЕННЯ СИСТЕМНОГО РІВНЯ АРТЕРІАЛЬНОГО ТИСКУ 96.5 KB
  Відповідно до цього виділяють 3и гемодинамічних варіанти артеріальної гіпертензії: 1. Виникнення артеріальної гіпертензії може обумовлюватися змінами функції регуляторних систем організму які забезпечують сталість артеріального тиску. При первинній артеріальній гіпертензії підвищення артеріального тиску не пов'язане із конкретним захворюванням чи патологічним процесом у тих чи інших органах і системах організму: причина підвищення артеріального тиску залишається неясною. Таку форму гіпертензії у різних країнах називають...
31605. ПОРУШЕННЯ ТРАВЛЕННЯ У КИШЕЧНИКУ. (МАЛЬДІГЕСТІЯ) 76 KB
  Він виникає внаслідок: 1 недостатності секреторної функції шлунка; 2 недостатності секреції соку підшлункової залози; 3 недостатньої секреції жовчі; 4 недостатньої секреції кишкового соку 12палої та порожньої кишок. П р и ч и н а м и такого явища можуть бути: а нейрогенне гальмування зовнішньосекреторної функції підшлункової залози при зменшенні тонусу блукаючого нерва чи отруєнні атропіном і ін. Такі фактори ведуть до порушення надходження у 12палу кишку ферментів підшлункової залози які відіграють вирішальну роль в травленні...
31606. ПРЕДМЕТ, ЗАДАЧІ І МЕТОДИ ПАТОЛОГІЧНОЇ ФІЗІОЛОГІЇ 78 KB
  Патологічна фізіологія це наука яка вивчає загальні закономірності виникнення розвитку і завершення хвороби. Особливість предмету патологічної фізіології полягає в тому що вона вивчає найбільш загальні закономірності виникнення і розвитку хвороби у той час як інші науки вивчають особливе спеціальне кожної хвороби. При цьому патологічна фізіологія як наука вирішує наступні задачі: 1 Встановлення сутності хвороби що таке хвороба. 2 Вивчення причин і умов виникнення хвороби чому виникає хвороба чи патологічний процес.
31607. ПУХЛИНИ 85.5 KB
  Доброякісні пухлини складаються із добре диференційованих клітин і зберігають типову структуру тієї тканини з якої виростають. Злоякісні пухлини характеризуються втратою диференціювання клітин спрощенням і атиповістю будови. Певна частина пухлин походить із клітин крові тобто є гемобластозами або із клітин сполучної тканини і є саркомами. Ендогенними називають канцерогени які утворюються в організмі з його нормальних компонентів: а канцерогенні поліциклічні ароматичні вуглеводні метилхолантрен які синтезуються із холестерину...
31608. РЕАКТИВНІСТЬ і АЛЕРГІЯ 138.5 KB
  4 За патогенезом: а алергійні реакції гуморального типу I II III і V типи реакцій; 2 алергійні реакції клітинного типу IV тип реакцій за Кумбсом і Джеллом. У патогенезі алергійних реакцій виділяють наступні стадії: 1 імунологічну 2 патохімічну 3 патофізіологічну стадію клінічних проявів. 2 Патохімічна стадія це період часу від початку взаємодії алергену з ефекторами імунної системи антитілами чи Тлімфоцитами до появи біологічно активних речовин медіаторів алергійних реакцій. 3 Патофізіологічна стадія це період...
31609. АЛЕРГІЯ. Алергійні реакції III типу за Кумбсом і Джеллом - імунокомплексні реакції 75.5 KB
  Антиген і антитіло перебувають у вільному стані не фіксовані на поверхні клітин. В результаті активації комплементу і дії продуктів які продукуються макрофагами відбувається ушкодження клітин і розвивається запалення. Алергійні реакції IV типу за Кумбсом і Джеллом гіперчутливість cповільненого типу або клітинноопосередкований тип алергії. Такими клітинами є Тхелпери1 CD41 які мають специфічні до відповідного антигену рецептори Тірецептори.