51091

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

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

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

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

Русский

2014-02-05

101.95 KB

149 чел.

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


 

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

30090. Формирование и развитие начальных естественнонаучных представлений и понятий на уроках «Окружающий мир» 37.5 KB
  Понятия отражают существенные свойства связи и отношения предметов и явлений. Как понятия так и представления которыми овладеют дети при изучении естествознания делятся на общие и единичные. Общие понятия охватывают однородные предметы и явления. Единичные понятия это понятия о конкретных объектах и явлениях например река Волга Кавказские горы озеро Байкал дождь гроза и т.
30091. Олигофрения 18.9 KB
  а также с резуснесовместимостью крови матери и плода травмой и асфиксией плода в родах перенесёнными менингитомэнцефалитом и т. Имбецильность средняя степень олигофрении слабоумия интеллектуального недоразвития обусловленная задержкой развития мозга плода или ребёнка в первые годы жизни. В ней выделяется 4 степени тяжести олигофрении: Легкая IQ 5070 Умеренная IQ 3550 Тяжелая IQ 2035 Глубокая IQ менее 20 Причинами олигофрении могут служить: наследственные факторы в том числе патология генеративных клеток...
30092. Заде́ржка психи́ческого разви́тия 19.51 KB
  ЗПР нарушение нормального темпа психического развития когда отдельные психические функции память вниманиемышление эмоциональноволевая сфера отстают в своём развитии от принятых психологических норм для данного возраста. ЗПР как психологопедагогический диагноз ставится только в дошкольном и младшем школьном возрасте если к окончанию этого периода остаются признаки недоразвития психических функций то речь идёт уже оконституциональном инфантилизме или об умственной отсталости. Синдром психического инфантилизма Церебрастенический...
30093. Микроцефалия 15.16 KB
  Микроцефалия характерна для таких синдромов как: трисомия по 18 хромосоме синдром Эдвардса трисомия по 13 хромосоме синдром Патау синдром кошачьего крика сидром Миллера синдром ПрадераВилли и др. плодный алкогольный синдром Аутосомнорецессивный тип наследования.
30094. Шизофрени́я 17.6 KB
  У лиц страдающих шизофренией обнаруживается повышенная дофаминергическая активность в мезолимбическом пути и сниженная в мезокортикальном. У больных шизофренией с большой вероятностью диагностируются коморбидные расстройства в их числе депрессии и тревожные расстройства; риск алкоголизма и наркомании составляет около 40 . Повышенный риск самоубийства и проблемы со здоровьем обуславливают снижение продолжительность жизни которая у больных на 1012 лет короче по сравнению с людьми не страдающими шизофренией. Есть также данные о возможной...
30095. Наследственные нарушения органов зрения 20.15 KB
  Аниридия иногда сочетается с передней и задней полярной катарактой подвывихом хрусталика и редко колобомой хрусталика. Эктопия хрусталика смещение линзы хрусталика. Наиболее типичным примером является эктопия хрусталика наблюдающаяся при семейнонаследственном поражении всей костномышечной системы которое выражается в удлинении дистальных фаланг пальцев рук и ног удлинении конечностей слабости суставов. В глазах при этом обнаруживается симметричное смещение хрусталика.
30096. Наследственные заболевания органов слуха 12 KB
  Наследственные заболевания органов слуха: Наследственные нарушения слуха возникают под действием генетических факторов в том числе в результате врожденных дефектов. Некоторые исследователи в особую группу факторов снижения слуха выделяют факторы патологического воздействия на орган слуха плода не связанные с генетическим фоном. Несиндромальная форма тугоухости форма тугоухости при которой снижение слуха не сопровождается другими признаками или заболеваниями других органов и систем которые передавались бы по наследству вместе с...
30097. Сложные сенсорные дефекты при наследственных синдромах 12.17 KB
  Дети с задержкой психического развития которая сочетается с дефектами зрения или слуха; Глухие дети с нарушениями соматического характера врожденные пороки сердца заболевания почек печени желудочнокишечного тракта. Кроме того в дефектологической практике встречаются дети с множественными дефектами. Дети с умственной осталостью слепоглухие; 2. Дети с нарушениями опорнодвигательного аппарата в сочетании с дефектами органов слуха зрения речи или интеллектуальной недостаточностью.
30098. Роль наследственности в паталогии речи 30.74 KB
  Роль наследственности в паталогии речи: Речь как одна из важнейших функций головного мозга не является врожденной как некоторые элементарные формы нервной деятельности а развивается по законам условных рефлексов. Нервные импульсы из области речедвигательного анализатора через черепномозговые нервы приводят в движение органы речи. Итак для нормальной речи и ее развития у ребенка необходимо: а нормальное строение и функция центральной нервной системы и речевых центров; б нормальное состояние органов голосо и речеобразования гортань...