close

Вход

Забыли?

вход по аккаунту

?

отчет вычмат 4

код для вставкиСкачать
Министерство образования и науки РФ
ФГБОУ ВПО "Тульский Государственный Университет"
кафедра Автоматизированных станочных систем
ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ И ИНТЕГРИРОВАНИЕ
Отчет по практической работе №4
по курсу "Вычислительная математика"
Выполнила: студентка Проверил: Ямникова О. А.
Тула
.
Задание 1. Расчитать значение производной первого и второго порядка функции, заданной таблично.
2. Расчитать определенный интеграл по квадратурным формулам.
Интеграл имеет вид: Теоретическая часть
1. Постановка задачи численного дифференцирования и простейшие формулы численного дифференцирования
Простейшие выражения для производных получаются в результате дифференцирования интерполяционных форм. Рассмотрим следующую задачу. На сетке в узлах заданы значения функции f, непрерывно дифференцируемой n+m+1 раз. Требуется вычислить производную и оценить погрешность. Один из возможных способов решения этой задачи заключается в следующем. Построим для функции f по узлам интерполяционный многочлен с остаточным членом , так что
.(1)
Продифференцируем правую и левую части соотношения (1) m раз и положим :
.(2)
Для достаточно гладких функций, т.е. для функций с ограниченными производными, необходимым количеством узлов и заданной точностью величиной, величина мала и является хорошим приближенным для , так что можно положить
.(3)
Остановимся более подробно на получении расчетных формул для и в узлах равномерной сетки. Для получения производных в узловых точках целесообразно использовать интерполяционный многочлен Стирлинга и его остаточный член. Так дифференцируя многочлен Стирлинга и его остаточный член по x и полагая (), получим следующие выражения для производной: (k=1)(4)
(k=2)(5)
Дифференцируя многочлен Стирлинга два раза по x и вычисляя значение второй производной в точке имеем (k=1)(6)
(k=2)(7)
Для вычисления производной точно в середине между узлами применяют многочлен Бесселя. В этом случае соответствующие формулы для производной имеют вид (k=1)(8)
(k=2)(9)
Практический интерес представляют также так называемые формулы одностороннего дифференцирования, позволяющие вычислить по узлам (i=0,1,...,k,... или i=0,- 1,...,- k,...). Построение этих формул удобно провести с помощью первого и второго интерполяционных многочленов Ньютона.
Дифференцируя первый многочлен Ньютона по x и вычисляя значение производной в точке (t = 0) для k=1 и k=2 получим соответственно следующие формулы:
(10)
(11)
Из соотношений (4), (6) и (8) имеем
(14)
(15)
(16)
Соотношения (11) и (13) соответственно дают
(17)
(18)
Пример. Вычислить , для функции f(x), заданной в виде таблицы.
Таблица
x 1,2 1,3 1,4 1,5 1,6 y=f(x) 0,18 0,26 0,34 0,41 0,47 На основании формул (17) и (19) получаем:
2. Постановка задачи численного интегрирования
Пусть требуется вычислить интеграл
(19)
Из курса математического анализа известно, что для непрерывной на отрезке [a,b] функции f интеграл (19) существует и равен разности значений для первообразной F для функции f в точках b и a:
.(20)
Однако в подавляющем большинстве практических задач первообразную F не удается выразить через элементарные функции. Кроме того, функция f часто задается в виде таблицы ее значений для определенных значений аргумента. Все это порождает потребность в приближенных методах вычислении интеграла (19), которые можно условно подразделить на аналитические и численные. Первые заключаются в приближенном построении первообразной и дальнейшем использовании формулы (20). Вторые позволяют непосредственно найти числовое значение интеграла, основываясь на известных значениях подынтегральной функции (а иногда и ее производной) в заданных точках, называемых узлами. В настоящей главе остановимся лишь на численных методах интегрирования функций. Сам процесс численного определения интеграла называется квадратурой, а соответствующие формулы - квадратурными.
Задача: На отрезке [a,b] в узлах заданы значения некоторой функции f, принадлежащей определенному классу F. Тре6уется приближенно вычислить интеграл (19). Так обычно ставится задача численного интегрирования в том случае, когда подынтегральная функция задана в виде таблицы.
Один из способов решения сформулированной задачи основан на использовании различных квадратурных формул вида (21)
С известным остаточным членом или его оценкой.
В общем случае, как узловые точки , так и весовые множители (веса) заранее не известны и подлежат определению при выводе каждой конкретной квадратурной формулы на основе предъявляемых к ней требований.
Алгоритм решения задачи:
1) Выбирают конкретную квадратурную формулу (21) и вычисляют . Если значения функции заданы приближенно, то фактически вычисляют лишь приближенное значение для точного .
2) Приближенно принимают, что 3) Пользуясь конкретным выражением для остаточного члена или оценкой его для выбранной квадратурной формулы, вычисляют погрешность метода:
.
4) Определяют погрешность вычисления :
по погрешности приближения значений .
5) Находят полную абсолютную погрешность приближенного значения :
.
6) Получают решение задачи в виде .
Используемые в алгоритме квадратурные формулы строятся на основании тех или иных критериев, определяющих положение узловых точек и величины весовых множителей. Такими критериями могут быть: представление интеграла в виде интегральной суммы; аппроксимация подынтегральной функции (например, многочленом) и последующее интегрирование аппроксимирующей функции; требование, чтобы формула (21) была абсолютно точной для определенного класса функций, и др. 3. Простейшие квадратурные формулы
Формулы прямоугольников. Как известно, определенный интеграл в силу своего построения есть предел интегральных сумм:
,(22)
каждая, из которых соответствует некоторому разбиению : отрезка и произвольному набору точек для каждого разбиения; .
Ограничиваясь конечным числом слагаемых в правой части равенства (22) и принимая в качестве набора те или иные значения аргумента из отрезков , можно получить различные формы приближенного интегрирования. Так, принимая в качестве набора значения левых или правых концов отрезков , получим соответственно формулу левых или правых прямоугольников :
,(23)
.(24)
Наиболее часто используемой формулой, основанной на идее представления определенного интеграла в виде интегральной суммы, является формула прямоугольников, где в качестве берут середины отрезков . Для равномерной сетки эта формула имеет следующий вид:
, (25)
где ; ; .
Выражение для остаточного члена квадратурной формулы (25):
(26)
Таким образом, оценку погрешности квадратурной формулы (25) можно представить в следующем виде:
(27)
где Суммарная вычислительная погрешность составит (28)
Эта погрешность не зависит от числа разбиений отрезка интегрирования, а пропорциональна только его длине.
Формула трапеций. Перейдем теперь к другому способу построения квадратурных формул, связанному с аппроксимацией подынтегральной функции интерполяционным многочленом. Рассмотрим простейший случай аппроксимации многочленом первой степени с узлами в точках a и b:
; .
Интегрируя правую и левую части этого равенства и используя вторую теорему о среднем значении функции при интегрировании последнего слагаемого правой части, находим:
; .
Таким образом, предполагая, что отрезок интегрирования мал, получаем квадратурную формулу, называемую формулой трапеций:
(29)
с остаточным членом
; .(30)
Используя выражение (27) для остаточного члена, опенку погрешности квадратурной формулы (29) можно представить в виде
,(31)
где .
Полученные выражения для остаточного члена (30) и погрешности (31) показывают, что квадратурная формула (29) является точной для всех линейных функций, поскольку вторая производная таких функций равна нулю, а, следовательно, равны пулю остаточный член и погрешность.
Описание входной и выходной информации
Входная информация
a - начало отрезка дифференцирования/интегрирования, вещественный тип.
b - конец отрезка дифференцирования/интегрирования, вещественный тип.
n - количество разбиений интервала, целый тип.
x1 - значение аргумента точки, в которой считаются первая и вторая производные, вещественный тип.
Выходная информация
p - значение первой производной функции в точке x1, вещественный тип.
p2 - значение второй производной функции в точке x1, вещественный тип.
il - значение определенного интеграла, вычисленного методом левых прямоугольников, вещественный тип.
ip - значение определенного интеграла, вычисленного методом правых прямоугольников, вещественный тип.
ic - значение определенного интеграла, вычисленного методом центральных прямоугольников, вещественный тип.
it - значение определенного интеграла, вычисленного методом трапеций, вещественный тип.
Схема программы вычисление первой и второй производных
Рисунок 1 - схема программы вычисления производных
Продолжение рисунка 1
Продолжение рисунка 1
Продолжение рисунка 1
Продолжение рисунка 1
Схема подпрограммы функции f
Рисунок 2 - схема подпрограммы функции f
Схема программы вычисления определенного интеграла
Рисунок 3 - схема программы нахождения интеграла
Продолжение рисунка 3
Продолжение рисунка 3
Продолжение рисунка 3
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
btn1: TButton;
edt4: TEdit;
lbl4: TLabel;
lbl5: TLabel;
lbl8: TLabel;
lbl9: TLabel;
lbl10: TLabel;
img1: TImage;
lbl11: TLabel;
btn2: TButton;
lst2: TListBox;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type vec=array [1..100] of Real;
var
Form1: TForm1;
a,b,h,x1,p,p2,s,il,ip,ic,it:Real;
n,i,metod:Integer;
x,y:vec;
implementation
{$R *.dfm}
function f(x:Real):Real;
begin
f:=(x+2)/Sqrt(x*x+1);
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
a:=StrToFloat(edt1.Text);
b:=StrToFloat(edt2.Text);
n:=StrToInt(edt3.Text);
x1:=StrToFloat(edt4.Text);
if b>a then
begin
h:=(b-a)/n;
x[1]:=a;
x[n+1]:=b;
y[1]:=f(a);
y[n+1]:=f(b);
for i:=2 to n do
begin
x[i]:=x[i-1]+h;
y[i]:=f(x[i]);
end;
end
else MessageDlg(' ошибка ', mtInformation, [mbOK], 0);
if (x1>=a) and (x1<=b) then
begin
for i:=1 to n+1 do
if x1>=x[i] then if x1<=x[i+1] then
begin
//Ньютон 1-го рода
if (x1>=a) and (x1<=(a+h/4)) then
begin
p:=(-3*f(x[1])+4*f(x[2])-f(x[3]))/(2*h);
p2:=(f(x[3])-2*f(x[2])+f(x[1]))/(h*h);
lbl8.Caption:=FloatToStrF(p,ffGeneral,8,4);
lbl10.Caption:=FloatToStrF(p2,ffGeneral,8,4);
end;
// Ньютон 2-го рода
if (x1>=(b-h/4)) and (x1<=b) then
begin
p:=(3*f(x[n+1])-4*f(x[n])+f(x[n-1]))/(2*h);
p2:=(f(x[n+1])-2*f(x[n])+f(x[n-1]))/(h*h);
lbl8.Caption:=FloatToStrF(p,ffGeneral,8,4);
lbl10.Caption:=FloatToStrF(p2,ffGeneral,8,4);
end;
//Стирлинг1
if (x1>=x[i]) and (x1<=(x[i]+h/4)) then
begin
p:=(f(x[i+1])-f(x[i-1]))/(2*h);
p2:=(f(x[i+1])-2*f(x[i])+f(x[i-1]))/(h*h);
lbl8.Caption:=FloatToStrF(p,ffGeneral,8,4);
lbl10.Caption:=FloatToStrF(p2,ffGeneral,8,4);
end;
//Бессель
if (x1>=(x[i]+h/4)) and (x1<=(x[i]+3*h/4)) then
begin
p:=(f(x[i+1])-f(x[i]))/h;
p2:=(f(x[i+1])-2*f(x[i])+f(x[i-1]))/(h*h);
lbl8.Caption:=FloatToStrF(p,ffGeneral,8,4);
lbl10.Caption:=FloatToStrF(p2,ffGeneral,8,4);
end;
//Стирлинг2
if (x1>=(x[i]+3*h/4)) and (x1<=x[i+1]) then
begin
p:=(f(x[i+2])-f(x[i]))/(2*h);
p2:=(f(x[i+2])-2*f(x[i+1])+f(x[i]))/(h*h);
lbl8.Caption:=FloatToStrF(p,ffGeneral,8,4);
lbl10.Caption:=FloatToStrF(p2,ffGeneral,8,4);
end;
end;
end
else MessageDlg('x* не входит в [a,b]', mtInformation, [mbOK], 0);
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
a:=StrToFloat(edt1.Text);
b:=StrToFloat(edt2.Text);
n:=StrToInt(edt3.Text);
if b>a then
begin
h:=(b-a)/n;
x[1]:=a;
x[n+1]:=b;
y[1]:=f(a);
y[n+1]:=f(b);
for i:=2 to n do
begin
x[i]:=x[i-1]+h;
y[i]:=f(x[i]);
end;
end
else MessageDlg('ошибка', mtInformation, [mbOK], 0);
Lst2.Items.Clear;
s:=0;
for i:=1 to n do s:=s+f(x[i]);
il:=h*s;
Lst2.Items.Add (Левые прямоугольники I = '+ floatToStrF(il,ffFixed,8,4));
s:=0;
for i:=2 to n+1 do s:=s+f(x[i]);
ip:=h*s;
Lst2.Items.Add ('Правые прямоугольники I = '+ floatToStrF(ip,ffFixed,8,4));
s:=0;
for i:=2 to n+1 do s:=s+f(x[i]-(h/2));
ic:=h*s;
Lst2.Items.Add ('Центральные прямоугольники I = '+ floatToStrF(ic,ffFixed,8,4));
it:=(b-a)*(f(a)-f(b))/2;
Lst2.Items.Add (Метод трапеций I = '+ floatToStrF(it,ffFixed,8,4));
end;
end.
Результат работы программы
Рисунок 4 - результат работы программы
Документ
Категория
Рефераты
Просмотров
45
Размер файла
1 417 Кб
Теги
вычмат, отчет
1/--страниц
Пожаловаться на содержимое документа