51091

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

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

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

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

Русский

2014-02-05

101.95 KB

91 чел.

Лабораторная работа «Вычисление определенного интеграла при помощи метода трапеций» в среде 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.


 

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

6127. Система управления сайтами. Обзор основных CMS. Создание собственной системы управления контентом 1.16 MB
  Введение Развитие компьютерных сетей и коммуникаций значительно расширяет возможности применения информационных технологий и систем обеспечения ведения электронного бизнеса. Все больше жителей Республики Беларусь предпочитают покупать товары в Интер...
6128. Злочини і покарання: Джозеф Гільотин 34.77 KB
  Злочини і покарання: Джозеф Гільотин Вид заняття: лекція-семінар (практичне) Тип заняття: комбіноване Мета: надати студентам іншомовну інформацію з теми, ознайомити із новою лексикою по темі, практикувати навички використання у мовлення професійної...
6129. Посередницька діяльність у каналах розподілу 31.5 KB
  Посередницька діяльність у каналах розподілу Посередництво в товарному обігу - це виконання спеціалізованими підприємствами, організаціями чи окремими особами спеціальних функцій для сприяння налагодженню і реалізації комерційних взаємовідносин...
6130. Джерела формування фразеологізмів української мови. Використання фразеологізмів у різних стилях мови 32.97 KB
  Джерела формування фразеологізмів української мови. Використання фразеологізмів у різних стилях мови План Джерела формування фразеологізмів української мови. Використання фразеологізмів у різних стилях мови. Джерела формування фразеологізмів українс...
6131. Геологічне середовище міста 31.22 KB
  Геологічне середовище міста План лекції: Антропогенні зміни рельєфу. Основні види забруднення ґрунтів. Захист міських територій в небезпечних геологічних процесів. Антропогенні зміни рельєфу На вибір місця закладання міста та...
6132. Сценарій виховного заходу Урок мужності, присвячений святу День перемоги 38.5 KB
  Сценарій виховного заходу Урок мужності, присвячений святу День перемоги Катерина Гівак: Щороку в травні ми відзначаємо День перемоги. Дорогою ціною заплатив український народ за участь у найстрашнішій за всю світову історію війні 1941-1945 рр. Не щ...
6133. Особенности эксплуатации импортных автомобилей в условиях Сибири 528.43 KB
  Введение В процессе развития автомобильного транспорта конструкция транспортных средств усложняется и в современных автомобилях все более широко применяется электроника, а также комбинация электронных, гидравлических и механических систем. Особенно ...
6134. Школы стратегий. Стратегическое сафари: экскурсия по дебрям стратегий менеджмента 2.47 MB
  Школы стратегий. Стратегическое сафари: экскурсия по дебрям стратегий менеджмента. Перед вами умный, блестящий путеводитель по бизнес-стратегиям, который может стать жизненно необходимым руководством для творчески мыслящих менеджеров. В этой увлек...
6135. Котельные установки и парогенераторы 3.64 MB
  Котельные установки и парогенераторы Характеристики и виды движения водного теплоносителя в паровых котлах Гидродинамика водного теплоносителя в паровых котлах Температурный режим поверхностей нагрева паровых котлов Физико-х...