Вычисление интеграла

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Курсовая работа

по дисциплине «Информатика»

Тема: «Вычисление интеграла»

Задание на выполнение курсовой работы

1. расчет, выполненный в математическом пакете Matlab (R2009b) (файл-функция для описания подынтегральной функции, график функции, решение в символьном и численном виде, вычисление с помощью циклов: четные и не четные варианты).

2. Вычисление интеграла в электронных таблицах MS Excel (вид подынтегральной функции, график функции, провести серию расчетов при n = 20, 30: методом левых и правых прямоугольников; методом трапеций и методом Симпсона).

3. Создание приложения для нахождения решения интегрального уравнения в среде Delphi (вид подынтегральной функции, график на заданном интервале, для каждого численного метода задать пользовательскую подпрограмму с передачей параметров). Итоговые результаты отобразить на форме в виде таблицы и в файле. Предусмотреть изменение точности значения (Е = 0,001).

4. вид уравнения

Введение

интеграл excel delphi matlab

Численные методы интегрирования универсальны: позволяют вычислить значение определенного интеграла непосредственно по значениям подынтегральной функции f (x), независимо от способа ее задания или вида аналитического выражения.

Геометрический смысл определенного интеграла — площадь криволинейной трапеции, ограниченной осью OX, кривой f (x), и прямыми x = a и x = b.

Численные методы интегрирования основаны на различных способах оценки этой площади, поэтому полученные формулы численного интегрирования называются квадратурными (формулами вычисления площади).

1. Теория вычисления интеграла. Описание используемых численных методов

Многие инженерные задачи, задачи физики, геометрии и многих других технических областях, приводят к необходимости вычислять определенный интеграл вида,

где f (x) — подынтегральная функция, непрерывная на отрезке [a; b].

Если интеграл от данной функции не может быть вычислен по формуле Ньютона-Лейбница,

или если функция f (x) задана графически или таблицей, то для вычисления определенного интеграла применяют приближенные формулы. Для приближенного вычисления интеграла существует много численных методов, таких как:

1) Метод прямоугольников (правых и левых);

2) Трапеций;

3) Симпсона и др.

Метод прямоугольников (правых и левых)

Необходимость вычисления значений определенных интегралов при моделировании возникает достаточно часто.

Формула Ньютона-Лейбница

(1)

имеет ограниченное применение:

во-первых, не позволяет вычислить интегралы от таблично заданной подынтегральной функции f (x);

во-вторых, не всякая подынтегральная функция имеет первообразную F (x).

Численные методы интегрирования универсальны: позволяют вычислить значение определенного интеграла непосредственно по значениям подынтегральной функции f (x), независимо от способа ее задания или вида аналитического выражения.

Геометрический смысл определенного интеграла — площадь криволинейной трапеции, ограниченной осью OX, кривой f (x), и прямыми x = a и x = b (Рис. 1.).

Численные методы интегрирования основаны на различных способах оценки этой площади, поэтому полученные формулы численного интегрирования называются квадратурными (формулами вычисления площади).

Рассмотрим получение и применение простейших формул.

Отрезок [a, b] делят на n необязательно равных частей — элементарных отрезков. Принято такое деление отрезка называть сеткой, а точки xо, x1,…, xn — узлами сетки.

Рис. 1. Геометрический смысл определённого интеграла

Если сетка равномерная, то

(1)

— шаг сетки, при интегрировании — шаг интегрирования, а координата i-го узла вычисляется по формуле:

, (2)

Полная площадь криволинейной трапеции состоит из n элементарных криволинейных трапеций — элементарных площадей:

(3)

Метод правых треугольников

Метод левых прямоугольников

Метод трапеций

Метод трапеций является одним из методов численного интегрирования. Он позволяет вычислять определенные интегралы с заранее заданной степенью точности.

Поставим перед собой следующую задачу: пусть нам требуется приближенно вычислить определенный интеграл, где подынтегральная функция y=f (x) непрерывна на отрезке [a; b].

Разобьем отрезок [a; b] на n равных интервалов длины h точками. В этом случае шаг разбиения находим как и узлы определяем из равенства.

Рассмотрим подынтегральную функцию на элементарных отрезках.

Возможны четыре случая (на рисунке показаны простейшие из них, к которым все сводится при бесконечном увеличении n):

На каждом отрезке заменим функцию y=f (x) отрезком прямой, проходящей через точки с координатами и. Изобразим их на рисунке синими линиями:

В качестве приближенного значения интеграла возьмем выражение, то есть, примем.

Давайте выясним, что означает в геометрическом смысле записанное приближенное равенство. Это позволит понять, почему рассматриваемый метод численного интегрирования называется методом трапеций.

Мы знаем, что площадь трапеции находится как произведение полу суммы оснований на высоту. Следовательно, в первом случае площадь криволинейной трапеции приближенно равна площади трапеции с основаниями и высотой h, в последнем случае определенный интеграл приближенно равен площади трапеции с основаниями и высотой h, взятой со знаком минус. Во втором и третьем случаях приближенное значение определенного интеграла равно разности площадей красной и синей областей, изображенных на рисунке ниже.

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

2. Формула метода трапеций

В силу пятого свойства определенного интеграла.

Если вместо интегралов подставить их приближенные значения, то получится формула метода трапеций:

3. Оценка абсолютной погрешности метода трапеций

Абсолютная погрешность метода трапеций оценивается как.

Графическая иллюстрация метода трапеций.

4. Метод Симпсона (парабол)

Это более совершенный способ — график подынтегральной функции приближается не ломаной линией, а маленькими параболками. Сколько промежуточных отрезков — столько и маленьких парабол. Если взять те же три отрезка, то метод Симпсона даст ещё более точное приближение, чем метод прямоугольников или метод трапеций.

Пусть функция y = f (x) непрерывна на отрезке [a; b] и нам требуется вычислить определенный интеграл.

Разобьем отрезок [a; b] на n элементарных отрезков длины точками. Пусть точки являются серединами отрезков соответственно. В этом случае все «узлы» определяются из равенства.

Суть метода парабол.

На каждом интервале подынтегральная функция приближается квадратичной параболой, проходящей через точки. Отсюда и название метода — метод парабол.

Это делается для того, чтобы в качестве приближенного значения определенного интеграла взять, который мы можем вычислить по формуле Ньютона-Лейбница. В этом и заключается суть метода парабол.

Геометрически это выглядит так:

Красной линией изображен график функции y=f (x), синей линией показано приближение графика функции y=f (x) квадратичными параболами на каждом элементарном отрезке разбиения.

Графическая иллюстрация метода парабол (Симпсона)

Вывод формулы метода Симпсона (парабол)

В силу пятого свойства определенного интеграла имеем

.

Для получения формулы метода парабол (Симпсона) нам осталось вычислить

.

Пусть (мы всегда можем к этому прийти, проведя соответствующее геометрическое преобразования сдвига для любого i = 1, 2, …, n).

Сделаем чертеж.

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

Так как — точки параболы, то справедливо каждое из уравнений системы

Записанная система уравнений есть система линейных алгебраических уравнений относительно неизвестных переменных. Определителем основной матрицы этой системы уравнений является определитель Вандермонда, а он отличен от нуля для несовпадающих точек. Это указывает на то, что система уравнений имеет единственное решение (об этом говорится в статье решение систем линейных алгебраических уравнений), то есть, коэффициенты определяются единственным образом, и через точки проходит единственная квадратичная парабола.

Перейдем к нахождению интеграла.

Очевидно:

Используем эти равенства, чтобы осуществить последний переход в следующей цепочке равенств:

Таким образом, можно получить формулу метода парабол:

Формула метода Симпсона (парабол) имеет вид

.

Оценка абсолютной погрешности метода Симпсона.

Абсолютная погрешность метода Симпсона оценивается как

5. Расчеты в математическом пакете Mat lab

В математическом пакете по условию задания был построен график функции и найден корень уравнения с использованием символьного решения и в численном виде используя встроенные функции. Для описания функции создан m-файл функции.

На следующем рисунке представлен график функции:

Для записи команд использован m-файл:

В командном окне были получены следующие результаты:

tochnoe = 0. 56 226

levpr = 0. 5555

pravpr = 0. 5691

trapezii = 0. 5623

Sympson = 0. 5623

6. Отчет о результатах вычисления приближенного значения корня уравнения в MS Excel

В MS Excel был проведен расчет приближенного значения корня уравнения.

Интерфейс программы:

График уравнения:

Корни, полученные в excel:

7. Описание приложения созданного в среде Delphi

При создании приложения в среде Delphi в интерфейсе был предусмотрен вывод вида функции и графика. Нахождение корня уравнения интеграла было реализовано с использование трех методов: метода правых и левых прямоугольников, метода трапеций и метода Симпсона. В отличии от расчета в Excel, где корни находились, в программе предусмотрен ввод точности вычисления пользователем. Результаты расчета выводятся, как в окно приложения, так и в текстовый файл.

8. Блок — схемы, реализующие численные методы

/

Блок-схема для метода правых прямоугольников:

/

Блок-схема для метода левых прямоугольников

Блок-схема для метода трапеций

Блок-схема метода Симпсона:

9. Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Math, AxCtrls, OleCtrls, VCF1, ExtCtrls, TeeProcs,

TeEngine, Chart, Menus, Series, OleCtnrs;

type

TForm1 = class (TForm)

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Button3: TButton;

Edit2: TEdit;

F1Book1: TF1Book;

Edit3: TEdit;

Button5: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Chart1: TChart;

Edit4: TEdit;

Button4: TButton;

Series2: TLineSeries;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

Label4: TLabel;

OleContainer1: TOleContainer;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure N2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

a, b, h, s, x, e: real;

i, j, n: integer;

f: text;

str: string;

implementation

{$R *. dfm}

function integral (x: real):real;

begin

integral: =1/sqrt (power (x, 2)+2*x+2);

end;

procedure methlev;

begin

h: =(b-a)/(n-1);

x: =0;

s: =0;

while abs (s)<e do

for i: =2 to n do

begin

x: =x+h;

s: =s+integral (x)*h;

end;

end;

procedure methpr;

begin

h: =(b-a)/n;

x: =0;

s: =0;

while abs (s)<e do

for i: =1 to n do

begin

s: =s+integral (x)*h;

x: =x+h;

end;

end;

procedure methtr;

var

sa, sb: real;

begin

h: =(b-a)/n;

x: =0;

s: =0;

while abs (s)<e do

for i: =1 to n do

begin

sa: =integral (x);

sb: =integral (x+h);

s: =s+h*(sa+sb)/2;

x: =x+h;

end;

end;

procedure meths;

var

sa, sb, sh: real;

begin

h: =(b-a)/n;

x: =0;

s: =0;

while abs (s)<e do

for i: =1 to n do

begin

sa: =integral (x);

sb: =integral (x+h);

s: =s+(2*sa+sb)*h/3;

x: =x+h;

end;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

n: =StrToInt (Form1. Edit1. Text);

a: =StrToFloat (Form1. Edit2. Text);

b: =StrToFloat (Form1. Edit3. Text);

e: =StrToFloat (Edit4. Text);

methlev;

F1Book1. textRC[1,1]:= 'Method';

F1Book1. textRC[1,2]:='levix';

F1Book1. textRC[2,1]:= 'S=';

F1Book1. numberRC[2,2]:=s;

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

n: =StrToInt (Edit1. Text);

a: =StrToFloat (Edit2. Text);

b: =StrToFloat (Edit3. Text);

e: =StrToFloat (Edit4. Text);

methpr;

F1Book1. textRC[1,3]:='pravix';

F1Book1. numberRC[2,3]:=s;

end;

procedure TForm1. Button3Click (Sender: TObject);

begin

n: =StrToInt (Edit1. Text);

a: =StrToFloat (Edit2. Text);

b: =StrToFloat (Edit3. Text);

e: =StrToFloat (Edit4. Text);

methtr;

F1Book1. textRC[1,4]:='trapezii';

F1Book1. numberRC[2,4]:=s;

end;

procedure TForm1. Button5Click (Sender: TObject);

begin

n: =StrToInt (Edit1. Text);

a: =StrToFloat (Edit2. Text);

b: =StrToFloat (Edit3. Text);

e: =StrToFloat (Edit4. Text);

meths;

F1Book1. textRC[1,5]:='sumpsona';

F1Book1. numberRC[2,5]:=s;

end;

procedure TForm1. Button4Click (Sender: TObject);

var y: real;

begin

form1. Chart1. Series[0]. Clear;

n: =StrToInt (Edit1. Text);

a: =StrToFloat (Edit2. Text);

b: =StrToFloat (Edit3. Text);

e: =StrToFloat (Edit4. Text);

h:= (b-a)/n;

x: =a;

Chart1. Series[0]. AddXY (x, y,'', clRed);

for i: =1 to n do begin

x: =x+h;

y: =integral (x);

Chart1. Series[0]. AddXY (x, y,'', clRed);

end;

end;

procedure TForm1. N1Click (Sender: TObject);

begin

close;

end;

procedure TForm1. N2Click (Sender: TObject);

begin

AssignFile (f,'Корни');

rewrite (f);

for i: =1 to n do begin

str: ='';

for j: =1 to n do str: =str+F1Book1. TextRC[i, j]+' ';

writeln (f, str);

end;

closeFile (f);

end;

end.

10. Изображение окна приложения

Первоначальный интерфейс имеет следующий вид:

После выполнения расчетов при E<= 0,0001:

В качестве отчета был сформирован файл «Корни. txt»:

11. Анализ полученных результатов

В соответствии с заданием на курсовую работу в математическом пакете мною было найдено решение определенного интеграла и построен график.

В электронных таблицах был найден корень уравнения. Результаты практически совпали с результатами в Matlab.

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

Таким образом, расчеты показали, что можно найти решение определенного интеграла в разных средах. Наиболее трудоемким расчет оказался в среде Delphi.

Литература

1. Фаронов В. В. Delphi. Программирование на языке высокого уровня 2010

2. Уокенбах Д. Microsoft Office Excel 2011

3. Матющенко М. А. Matlab. Первые шаги 2009

ПоказатьСвернуть
Заполнить форму текущей работой