51091

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

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

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

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

Русский

2014-02-05

101.95 KB

130 чел.

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


 

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

29333. Цветовые системы, используемые в обрабатывающей станции 58 KB
  Недостатки такого выражения: неоднозначность системы координат RGB и аппаратная зависимость неясное представление о цвете на основе соотношения этих сигналов Воздействие на один из каналов приводит к изменению цвета которое трудно предсказать. Если хотим получить насыщенные цвета должны работать в пределах 50 светлоты По координате а цвет меняется от Зеленого до Пурпурного. У нас имеются две группы основных цветов: цвета аддитивного синтеза однозональные цвета: Красный Зеленый Синий двузональные цвета субтрактивного синтеза:...
29334. Калибровка монитора без использования специальных аппаратных средств (по разработкам фирмы Gretag) 56 KB
  Однако для более точной коррекции цвета на экране монитора и корректного представления его в колориметрических координатах необходимо провести стадию технологической калибровки монитора. Это приводит к тому что если не принять специальных мер коррекции голубая краска выделится на синефильтровой и зеленофильтровой фотоформе будет запечатываться соответственно желтой и пурпурной краской. По сути дела при правильной настройки системы и правильной работе в соответствующих цветовых пространствах задача базовой коррекции решается автоматически...
29335. Селективная коррекция 56.5 KB
  Цветопроба в процессе коррекции Без проведения цветопробы оптимальная цветовая коррекция является затруднительной и может не дать удовлетворительных результатов. Контроль этого изображения экранная цветопроба. Такая цветопроба называется контрактной цветопробой. Такая цветопроба называется аналоговой.
29336. Коррекция структурных свойств изображения 54.5 KB
  Коррекция резкости изображения Коррекция резкости изображения в системе поэлементной обработки может осуществляться двумя методами: аппертурным и программным. Аппертурный метод включает аппертурную коррекцию резкости изображения по методу нерезкого маскирования при этом коррекция производится непосредственно при сканировании изображения. В соответствие с этой процедурой производится обработка массива цифровой информации формируя сигнал нерезкого изображения путем интегрирования нескольких пиксель в окрестностях обрабатываемой пиксели.
29337. Геометрические преобразования в системе поэлементной обработки изображения 62 KB
  В процессе преобразования на этапе сканирования формируется пиксель размер которого уже выбран в соответствии с масштабом окончательного изображения. Сложнее при масштабировании изображения записанного в виде цифрового массива высокого разрешения. Сложнее при увеличении или уменьшении изображения не в целое число раз.
29338. Технология обработки изобразительной информации 53.5 KB
  Соотношение свойств изображения на входе системы и свойств изображения которые должны получить на выходе системы диктует ряд преобразований это технологические преобразования. Часть системных преобразований может служить в качестве технологических например преобразование изображения из позитивного в негативное при фотографировании так же могут быть использованы изменения полярности и зеркальности. Так обработка штрихового изображения и растрового изображения цветного или чернобелого осуществляется с использованием разных технологий....
29339. Вычисление экспонирования 39.5 KB
  При правильном выборе экспозиции для широких и узких штрихов и просветов очень узкие штрихи и просветы будут воспроизведены с искажениями. При необходимости возможно воспроизвести геометрически точно штрихи и просветы относящиеся к классу очень узких или суперузких при использовании материала с бесконечно большим коэффициентом контрастности. Однако при таком выборе условий экспонирования все остальные штрихи и просветы в том числе широкие и узкие будут воспроизводиться геометрически не точно а с определенными искажениями геометрических...
29340. Условия результата получения штриховой продукции при коэффициенте контрастности фотографического материала меньше бесконечности 63.5 KB
  Если Dmax полученная  Dmax требуемой то не выполняется одно из требований штрихового изображения и необходимо произвести изменения условий проведения процесса. Градиент получаемого фотографического изображения будет определяться градиентом характеристической кривой: где g 0 градиент оптического изображения где gф градиент фотографического изображения если t= const lgt=0 то lgH=lgE Можем подвести итоги. Факторы влияющие на воспроизведение штрихового изображения: характеристика самого оригинала как правило на входе имеем штрихи с...
29341. Бинарное изображение и битовая карта 49.5 KB
  На воспроизведение штрихового изображения влияют 2 группы факторов: 1 группа факторы определяющие зону размытия пограничной кривой. Определяет резкость изображения на входе аналогично фокусировке в системе фотоаппарата фактор апертурной фильтрации. Эта дискретность возникает как на стадии сканирования вследствие строчной развертки так и на стадии синтеза изображения так же вследствие строчной развертки. В целом границу такого дискретизированного изображения вследствие возникшей ступенчатой структуры можно также представить в виде...