51091

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

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

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

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

Русский

2014-02-05

101.95 KB

121 чел.

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


 

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

38895. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ ДИПЛОМНЫХ РАБОТ 469 KB
  Присяжнюк В методических рекомендациях раскрываются цели и задачи дипломной работы определяются обязанности студентов и научных руководителей определяется порядок ее выполнения описываются требования к содержанию и оформлению. Методические указания предназначены в помощь студентам специальности при выполнении дипломной работы а также преподавателям техникума. Цели и задачи выпускной квалификационной дипломной работы. Требования к структуре и содержанию выпускной квалификационной дипломной работы.
38897. ПУТИ ПОВЫШЕНИЯ ПРОДУКТИВНОСТИ ОТРАСЛИ КОРМОПРОИЗВОДСТВА В СПК «КАТП «ДЖАНКОЙ» ДЖАНКОЙСКОГО РАЙОНА АР КРЫМ 350.5 KB
  Одной из основных проблем животноводства остается производство кормов. При этом их продуктивность снизилась: надой на 1 фуражную корову упал с 3720 до 2847 кг молока то есть его производство уменьшилось более чем в 38 раза Для поднятия животноводства хозяйства необходимо совершенствовать систему кормопроизводства СПК КАТП Джанкой обратив внимание на поиск путей удешевления кормов так как именно их высокая себестоимость делает очень дорогой продукцию животноводства хозяйства и в конечном счете убыточной. Одной из основных причин...
38898. Освещение ЛГБТ-проблематики в современном Рунете 355 KB
  ДИПЛОМНАЯ РАБОТА на тему Освещение ЛГБТ проблематики в современном Рунете. ЛГБТ проблематика как одно из тематических направлений современных СМИ. Актуальность ЛГБТ проблематике в современном социуме 1. Правовые и профессионально-этические проблемы в освещении ЛГБТ проблематики.
38899. Специфика работы с ЛГБТ-проблематикой в рунете 334.5 KB
  Журналистика ДИПЛОМНАЯ РАБОТА на тему Специфика работы с ЛГБТпроблематикой в рунете. ЛГБТпроблематика как одно из тематических направлений современных СМИ. Обоснованность обращения к ЛГБТпроблематике в журналистском и публицистическом научном дискурсе. Правовая и профессиональноэтическая проблемы освещения ЛГБТпроблематики в СМИ.
38900. Міжпроцесна взаємодія в локальній обчислювальній мережі 364 KB
  Переваги використання локальних обчислювальної мережі. Визначення локальної обчислювальної мережі5 1. Модульна структура локальної мережі. Протокол Internet забезпечує при необхідності також фрагментацію і збір датаграм для передачі даних через мережі з малим розміром пакетів.
38901. УРОКИ-ЭКСКУРСИИ ПО МАТЕМАТИКЕ КАК СРЕДСТВО ФОРМИРОВАНИЯ ПОЗНАВАТЕЛЬНОГО ИНТЕРЕСА МЛАДШИХ ШКОЛЬНИКОВ 560 KB
  Информатика УРОКИ-ЭКСКУРСИИ ПО МАТЕМАТИКЕ КАК СРЕДСТВО ФОРМИРОВАНИЯ ПОЗНАВАТЕЛЬНОГО ИНТЕРЕСА МЛАДШИХ ШКОЛЬНИКОВ ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА Студент Пахтаев Александр Остапович гр. Теоретические основы формирования познавательного интереса младших школьников 1. Особенности познавательного интереса младших школьников 10 1. Роль и значение нестандартных уроков по математике в формировании познавательного интереса младших школьников 25 1.
38902. ПОНЯТТЯ, ВИДИ І ЗНАЧЕННЯ НАСЛІДКІВ ЗЛОЧИНУ 172 KB
  Правове забезпечення охорони прав і свобод людини і громадянина, власності, громадського порядку та громадської безпеки, довкілля, конституційного устрою України від злочинних посягань, забезпечення миру і безпеки людства, а також запобігання злочинам
38903. Исследование законов движения тел по наклонной плоскости 346.5 KB
  Цель работы: проверка законов сохранения энергии для поступательного и вращательного движения тел по наклонной плоскости с учетом силы трения.1 Сила трения Силы трения появляются при перемещении соприкасающихся тел или их частей друг относительно друга. Трение возникающее при относительном перемещении двух соприкасающихся тел называется внешним; трение между частями одного и того же сплошного тела например жидкости или газа носит название внутреннего трения. Сила и есть сила трения покоя.