I

advertisement
ПЛАН РАБОТЫ
I. ВСТУПЛЕННИЕ.
1. Постановка задачи:
а) для решения функционального уравнения;
б) для численного интегрирования.
2. Анализ данных:
а) построение графиков данных функций y=f1(x); y=f2(x); y=f3(x);
б) расчет и построение графиков функций F1(x); F2(x); F3(x).
II. ОСНОВНАЯ ЧАСТЬ.
1. Вычисление корня функционального уравнения методом хорд и
касательных (комбинированный метод):
а) постановка задачи;
б) расчет абсцисс точек пересечения вручную;
в) описание численного метода решения уравнений;
г) расчет первых и вторых производных функций F1(x); F2(x); F3(x) и
построение их графиков;
2. Численное интегрирование методом Симпсона:
а) постановка задачи;
б) расчет площади фигуры вручную по формуле Ньютона-Лейбница;
в) описание численного интегрирования методом Симпсона;
3. Описание программы в среде программирования VBA.
III. ЗАКЛЮЧЕНИЕ.
1. Расчет погрешности результатов.
2. Анализ результатов, выводы из работы.
1
ВСТУПЛЕНИЕ.
Постановка задачи. В данной работе рассмотрены два вопроса:
1. Принцип нахождения корней функционального уравнения методом хорд и
касательных (комбинированный метод) с учетом определенной точности.
Необходимо было с точностью 0,001 вычислить абсциссы точек пересечения
трех кривых.
2. Принцип нахождения площади заданной фигуры как алгебраической
суммы определенных интегралов, которые вычисляются с заданной
точностью по квадратурной формуле Симпсона.
Для выполнения данной работы были предложены три функции
0.5
5
𝑓1 (𝑥) = 3 ∗ (
+ 1) , 𝑓2 (𝑥) = 2.5𝑥 − 9.5, 𝑓3 (𝑥) = ; 𝑥 > 0
имеющие
𝑥+1
𝑥
следующие графики:
Для выполнения поставленных задач нам понадобились функции 𝐹1 (𝑥) =
𝑓1 (𝑥) − 𝑓3 (𝑥); 𝐹2 (𝑥) = 𝑓2 (𝑥) − 𝑓3 (𝑥); 𝐹3 (𝑥) = 𝑓1 (𝑥) − 𝑓2 (𝑥) .
Далее
найдем
1.5𝑥+3𝑥 2 +3𝑥−5𝑥−5
формулы,
=
функции:
1.5
𝑥+1
+ 3−
5
𝑥
=
𝑥(𝑥+1)
𝑥(𝑥+1)
5
2.5𝑥 − 9.5 − =
𝑥
𝐹2 (𝑥)=
2.5𝑥 2 −9.5𝑥−5
𝑥
2.5𝑥 2 − 9.5𝑥−5
𝑥
1.5−2.5𝑥 2 −2.5𝑥+12.5𝑥+12.5
𝑥+1
2
эти
з𝑥 2 −0.5𝑥−5
𝑥(𝑥+1)
3𝑥 2 −0.5𝑥−5
𝐹1 (𝑥 )=
задающие
=
1.5
𝑥+1
−2.5𝑥 2 +10𝑥+14
𝑥+1
+ 3 − 2.5𝑥 + 9.5 =
1.5
𝑥+1
− 2.5𝑥 + 12.5 =
F3(x) =
−2.5𝑥 2 +10𝑥+14
𝑥+1
Средствами MS Excel построим графики заданных функций:
3
Решение данного функционального уравнения и расчет площади фигуры
численным интегрированием были проведены вначале вручную, а затем, с
целью упростить работу ( в частности, избавиться от однотипных
арифметических и логических операций) и обеспечить максимальную
точность вычислениям при решении поставленных задач, в среде Visual Basic
for Applications были разработаны программы, реализующие этот поиск и
проверку.
ОСНОВНАЯ ЧАСТЬ.
1. Вычисление корня функционального уравнения методом хорд и
касательных (комбинированный метод).
Перед нами стоит задача: найти корень уравнения 𝐹(𝑥) = 0. Число 𝑥0 –
корень данного уравнения, если 𝐹(𝑥0 ) = 0. Число 𝑥0 называют нулем
функции 𝑦 = 𝐹(𝑥). Если эта функция непрерывна и принимает на концах
отрезка[𝑎; 𝑏] значения разных знаков, то внутри этого промежутка найдется
нуль функции. Для решения уравнения 𝐹(𝑥) = 0 необходимо найти отрезок
[𝑎; 𝑏], на котором уравнение имеет один корень. Достаточное условие для
этого заключается в следующем: на концах отрезка функция 𝐹(𝑥) имеет
разные знаки, а первая и вторая производные от функции не меняют свой
знак на всем отрезке.
4
Вначале рассчитаем абсциссы точек пересечения графиков функций
вручную. С этой целью решим функциональные уравнения 𝐹1 (𝑥) = 0; 𝐹2 (𝑥)=0;
𝐹3 (𝑥) = 0 и получим следующие результаты:
3𝑥 2 − 0.5𝑥 − 5
=0
𝑥(𝑥 + 1)
3𝑥 2 − 0.5𝑥 − 5 = 0
𝑥 ≈ 1.377 ; 𝑥 ≈ −1.210
-1.210 не подходит, т.к. по условию x>0.
2.5𝑥 2 − 9.5𝑥 − 5
=0
𝑥
2.5𝑥 2 − 9.5𝑥 − 5 = 0
𝑥 ≈ 4.269 ; 𝑥 ≈ −0.469
-0.469 не подходит, т.к. по условию x>0.
−2.5𝑥 2 + 10𝑥 + 14
=0
𝑥+1
−2.5𝑥 2 + 10𝑥 + 14 = 0
𝑥 ≈ 5.098 ; 𝑥 ≈ −1.098
-1.098 не подходит, т.к. по условию x>0.
Ответ: абсциссы точек пересечения кривых равны ≈ 1.377; ≈ 4.26; ≈ 5.098.
Теперь рассмотрим данный вопрос с точки зрения метода хорд и
касательных.
Численные методы решения функциональных уравнений позволяют найти
решения определенных задач, заранее зная, что полученные результаты
будут вычислены с определенной погрешностью, поэтому необходимо
заранее знать «уровень точности», которому будет соответствовать
полученное решение. Для решения функциональных уравнений существует
несколько численных методов, остановимся на методе хорд и касательных.
Метод основан на построении графика функции, определении интервалов
его пересечения с осью абсцисс и последующем сжатии этого интервала при
помощи строимых хорд и касательных к графику этой функции.
Надо отметить, что существуют также отдельно метод хорд (дает значение
корня с недостатком) и метод касательных (с избытком). Преимущество
комбинированного метода заключается в «двустороннем сжатии»
рассматриваемого отрезка.
Рассмотрим следующий случай:
- дана функция 𝐹(𝑥) и построен ее график;
- определена допустимая погрешность ℇ;
- на основании графика определен отрезок[𝑎; 𝑏], на котором график функции
пересекает ось абсцисс, следовательно, на этом отрезке существует корень
рассматриваемого уравнения.
5
6
Дальнейший алгоритм сводится к следующим действиям:
1. Строим касательную к графику функции в точке 𝐹(𝑏);
2. Вычисляем абсциссу точки пересечения касательной с осью абсцисс,
−𝐹(𝑏)
обозначив ее 𝑏 / , по формуле 𝑏 / = 𝑏 − 𝛥𝑏, где 𝛥𝑏 = / ;
𝐹 (𝑏)
3. Строим к графику функции хорду, проходящую через точки 𝐹(𝑎) и 𝐹(𝑏);
4. Вычисляем точку пересечения хорды с осью абсцисс, обозначив ее 𝑎/ , по
формуле 𝑎 / = 𝑎 − 𝛥𝑎, где 𝛥𝑎 =
(𝑏−𝑎)𝐹(𝑎)
𝑓(𝑏/ )− 𝑓(𝑎/ )
;
5. Таким образом, получаем новый отрезок[𝑎/ ; 𝑏 / ], который (по
определениям хорды и касательной) по-прежнему содержит решение
уравнения;
6. Теперь принимаем отрезок [𝑎/ ; 𝑏 / ] за новый отрезок [𝑎; 𝑏] и повторяем
шаги 1-5 до тех пор, пока разность 𝐹(𝑏) − 𝐹(𝑎) не станет меньше
первоначально заложенной погрешности ℇ. Отметим также, что после этого
рекомендуется в качестве искомого решения взять среднее арифметическое
𝐹(𝑎)и 𝐹(𝑏).
В рассмотренном случае производная 𝐹 / (𝑥)>0, т.е. график «выпуклый» и
𝑏 > 𝑎. При работе с каждым отдельным случаем необходимо находить
производные функции первого и второго порядков и, сообразуясь с ее
знаком, определять 𝑎 и 𝑏.
Возможны четыре случая:
а) 𝐹 / (𝑥)<0, 𝐹 // (𝑥)>0
б) 𝐹 / (𝑥)>0, 𝐹 // (𝑥)>0
в) 𝐹 / (𝑥)<0, 𝐹 // (𝑥)<0
г) 𝐹 / (𝑥)>0, 𝐹 // (𝑥)<0
𝐹 / (𝑥)𝐹 // (𝑥)>0
𝐹 / (𝑥)𝐹 // (𝑥)<0
Способ хорд
С недостатком
С избытком
Способ касательных
С избытком
С недостатком
Таким образом, если хорда (касательная) дает значение корня с избытком,
то этот корень берется в качестве новой правой границы, а если с
недостатком – то левой. В обоих случаях точный корень лежит между
точками пересечения хорды и касательной с осью абсцисс.
Используя данный метод, сходимость интервала к корню происходит
наиболее быстро, особенно если совместить метод хорд и касательных с
7
методом деления отрезка пополам, т.к. середина нового отрезка зачастую
дает вполне удовлетворительное решение.
Следует отметить, что функции 𝐹1 (𝑥), 𝐹2 (𝑥), 𝐹3 (𝑥) непрерывны и дважды
дифференцируемы на всей области определения (0;∞). Рассчитаем их
первую и вторую производные и построим их графики
/
𝐹1 (𝑥) =
−1.5
(𝑥+1)
2 +
/
5
𝑥2
5
𝐹2 (𝑥) = 2.5 + 𝑥2
/
𝐹3 (𝑥) =
−1.5
(𝑥+1)2
- 2.5
Представим графики первых производных:
8
3
//
𝐹1 (𝑥) =
//
(𝑥+1)3
𝐹2 (𝑥) = //
−
10
𝑥3
10
𝑥3
3
𝐹3 (𝑥) = (𝑥+1)3
Представим графики вторых производных:
9
2. Численное интегрирование методом Симпсона с заданной точностью.
Задача численного интегрирования функции
𝐹(𝑥) заключается в
𝑏
вычислении определенного интеграла S = ∫𝑎 𝐹(𝑥)𝑑𝑥 на основании ряда
значений подынтегральной функции. Заменим определенный интеграл
конечной суммой: 𝑆𝑛 = ∑𝑛𝑘=0 𝐶𝑘 𝐹(𝑥𝑘 ) , где 𝐶𝑘 - числовые коэффициенты, а
𝑥𝑘 ∊ [𝑎; 𝑏], k=0;1;…n.
𝑏
Равенство ∫𝑎 𝐹(𝑥)𝑑𝑥 ≈ ∑𝑛𝑘=0 𝐶𝑘 𝐹(𝑥𝑘 ) называется квадратурной формулой,
𝑥𝑘 - узлы квадратурной формулы. Если на отрезке [𝑎; 𝑏] ввести равномерную
сетку шагом h (𝑥𝑖 = 𝑎 + 𝑖ℎ, где i = 0;1…n; hn=b-a), то исходный интеграл
можно представить в виде суммы интегралов по частичным отрезкам:
10
𝑏
𝑥
𝑘
Для построения формулы численного
∫𝑎 𝐹(𝑥)𝑑𝑥 = ∑𝑛𝑘=1 ∫𝑥 𝐹(𝑥)𝑑𝑥.
𝑘
интегрирования на отрезке [𝑎; 𝑏] достаточно построить квадратурную
формулу на частичном отрезке [𝑥𝑖−1 ; 𝑥𝑖 ] и просуммировать результат.
Погрешность квадратурной формулы определяется соотношением ℇ𝑛 =
𝑏
∫𝑎 𝐹(𝑥)𝑑𝑥 − ∑𝑛𝑘=0 𝐶𝑘 𝐹(𝑥𝑘 ).
Вычислим площадь фигуры, ограниченную графиками данных функций по
формуле Ньютона-Лейбница вручную. С этой целью разобьем данную фигуру
на две и, зная абсциссы точек пересечения, рассчитаем площадь:
𝑏
𝑐
𝑆ф = ∫ 𝐹1 (𝑥)𝑑𝑥 + ∫ 𝐹2 (𝑥)𝑑𝑥
𝑎
𝑏
4.3
3𝑥 2 − 0.5𝑥 − 5
𝑠1 = ∫
𝑑𝑥
𝑥2 + 𝑥
1.3
4.3
= ∫ (
1.3
1.5
5
4.3
+ 3 − ) 𝑑𝑥 = 1.5 ln(𝑥 + 1) + 3𝑥 − 5𝑙𝑛𝑥⎢
𝑥+1
𝑥
1.3
= (1.5𝑙𝑛5.3 + 3 ∗ 4.3 − 5𝑙𝑛4.3) − (1.5𝑙𝑛2.3 + 3 ∗ 1.3 − 5𝑙𝑛1.3)
= 8.108 − 3.838 = 4.270 (кв. ед. )
11
5.1
2.5𝑥 2 − 9.5𝑥 − 5
𝑆2 = ∫
𝑑𝑥
𝑥
4.3
5.1
5
2.5𝑥 2
5.1
= ∫ (2.5𝑥 − 9.5 − ) 𝑑𝑥 =
− 9.5𝑥 − 5𝑙𝑛𝑥⎢
𝑥
2
4.3
4.3
2.5 ∗ 5.12
2.5 ∗ 4.32
=(
− 9.5 ∗ 5.1 − 5𝑙𝑛5.1) − (
− 9.5 ∗ 4.3
2
2
− 5𝑙𝑛4.3) = −24.084 − (−25.031) = 0.947 (кв. ед. )
𝑆ф = 4.270 + 0.947 = 5.217 (кв. ед. )
Ответ: площадь заданной фигуры 5.217 кв.ед.
Опишем численное интегрирование методом Симпсона.
Расчет площади фигуры по квадратурной формуле Симпсона или формуле
парабол имеет важное значение в прикладном анализе. Она названа по
имени английского математика Т.Симпсона, который получил ее в 1743г.
Геометрический смысл формулы Симпсона очевиден: площадь
криволинейной трапеции под графиком функции 𝐹(𝑥) на отрезке [𝑎; 𝑏]
приближенно заменяется суммой площадей фигур, лежащих под
параболами.
Суть численного интегрирования по методу Симпсона заключается в
𝑏
следующем. Пусть надо вычислить определенный интеграл S=∫𝑎 𝐹(𝑥)𝑑𝑥
методом Симпсона. Для этого отрезок [𝑎; 𝑏] разбивается на n=2m частей 𝑥 =
𝑏−𝑎
𝑎, 𝑥1 = 𝑎 + ℎ, … , 𝑥𝑛 = 𝑏 с шагом ℎ =
. Вычисляются значения 𝑦𝑖 = 𝐹(𝑥𝑖 )
𝑛
функции в точках 𝑥𝑖 и находится значение интеграла по формуле Симпсона:
𝑏
𝑏−𝑎
(𝐹(𝑥0) + 4𝐹(𝑥1 ) + 2𝐹(𝑥2 ) + 4𝐹(𝑥3 ) + ⋯ + 𝐹(𝑥2𝑁)).
∫𝑎 𝐹(𝑥)𝑑𝑥 ≈
6𝑛
ℎ
𝑚−1
S = 𝑆𝑛 + 𝑅𝑛 , где 𝑆𝑛 = (𝑦0 + 𝑦2𝑚 + 2 ∑𝑚−1
𝑖=1 𝑦2𝑖 + 4 ∑𝐼=0 𝑦2𝑖+1 )
ℎ5
− ∑2𝑚
𝑦4(
90 𝑘=1
3
𝑅𝑛 =
ℇ𝑘 ) , ℇ𝑘 ∊ [𝑥𝑘−1 ; 𝑥𝑘 ] .
Затем количество точек разбиения удваивается и производится оценка
точности вычислений: 𝑅𝑛 = |𝑆2𝑛 − 𝑆𝑛 | / 15.
Если 𝑅𝑛 > 𝑒 , то количество точек разбиения удваивается. Значение суммы
2(𝑦1 + 𝑦2 + ⋯ + 𝑦2𝑚−1 ) сохраняется, поэтому для вычисления интеграла при
удвоении количества точек разбиения требуется вычислять значения 𝑦𝑖
лишь в новых точках разбиения.
12
Этот метод численного интегрирования был реализован на программном
уровне и включен в курсовую работу.
3. В рамках задания на работу в среде программирования Visual Basic for
Applications была разработана программа для
вычисления корня
функционального уравнения методом хорд и касательных и численного
интегрирования методом Симпсона. Представим данную программу и дадим
описание ее работы.
Private Sub CommandButton3_Click()
Unload UserForm1
End Sub
(задаем кнопку CommandButton,
удаляем все предыдущие
результаты)
Private Sub TextBox1_Change()
If Not ((47 < KeyAscii) And (KeyAscii < 58) Or (KeyAscii = 9) Or (KeyAscii = 44) And
(InStr(TextBox1.Text, ",") = 0)) Then KeyAscii = 0 (определяем текстовое поле и
End Sub
точность погрешности)
Function F(ByVal x As Double, i As Integer) As Double (простой цикл, задаем
If i = 1 Then
функции 𝐹1 , 𝐹2 , 𝐹3 )
F = (3x^2-0.5x-5)/x(x+1)
ElseIf i = 2 Then
F = (2.5x^2-9.5x-5)/x
Else
F = (-2.5x^2+10x+14)/(x+1)
End If
End Function
Function df(ByVal x As Double, i As Integer) As Double
If i = 1 Then
df = -3 / (2 * (x + 1) ^ 2) + 5 / x ^ 2
ElseIf i = 2 Then
df = 5 / x ^ 2 + 2.5
Else
df = -3 / (2 * (x + 1) ^ 2) - 2.5
End If
(простой цикл , задаем
/ / /
производные 𝐹1 , 𝐹2 , 𝐹3 )
End Function
Function kombenirovanniy(x1 As Double, x2 As Double, i As Integer, e As Double)
As Double
(определяем решение комбинированным методом)
13
Dim x3 As Double, x4 As Double
Do While Abs(x2 - x1) > e
(начало сложного цикла)
x3 = x2 - F(x2, i) / df(x2, i)
(определяет метод касательных)
x4 = x1 - F(x1, i) * (x1 - x2) / (F(x1, i) - F(x2, i))
(определяет метод хорд)
x1 = x3
(сужаем длину отрезка)
x2 = x4
Loop
(окончание цикла)
kombenirovanniy = (x1 + x2) / 2
End Function
Public Function simpson(a As Double, b As Double, ByRef e As Double, index As
Integer) As Double
(определяем начало метода Симпсона)
Dim i As Integer
(определяем необходимые значения для цикла)
Dim h As Double
Dim s As Double
Dim s1 As Double
n=1
h=b-a
s = (F(a, index) + F(b, index)) * h / 2 (считаем начальную площадь)
Do
(начало большого цикла)
n=n*2
(количество отрезков разбиения увеличиваем в 2 раза)
h = (b - a) / n
s=0
s1 = s
For i = 1 To n – 1
(начало малого цикла для подсчета четных и нечетных значений)
If i Mod 2 = 0 Then
s = s + 2 * F(a + i * h, index)
Else
s = s + 4 * F(a + i * h, index)
End If
Next i
(следующее значение для цикла)
s = (s + F(a, index) + F(b, index)) * (h / 3) (формула для расчета площади фигуры
Loop Until Abs(s1 - s) >= 15 * e
под одним графиком функции)
simpson = s
(вывод результата, завершение цикла)
End Function
Private Sub CommandButton1_Click()
(наглядный вывод результата в UserForm,
определяем вывод результатов комбинированного метода)
14
Dim k1 As Double, k2 As Double, k3 As Double, i As Integer, e As Double, index As
Double
e = TextBox1
(задание погрешности)
k1 = kombenirovanniy(1.8, 1.2, 1, e) (результаты применения комбинированного
k2 = kombenirovanniy(3.9, 4.8, 2, e) метода)
k3 = kombenirovanniy(5.4, 4.9, 3, e)
Label3.Caption = k1
(вывод на экран результатов комбинированного
Label5.Caption = k2
метода)
Label7.Caption = k3
End Sub
Private Sub CommandButton4_Click()
Dim k1 As Double, k2 As Double, k3 As Double, i As Integer, e As Double, index As
Double
(определяем вывод результатов площади)
e = TextBox1
(задаем погрешность)
k1 = kombenirovanniy(1.8, 1.2, 1, e)
(определяем результат комбинированного
k2 = kombenirovanniy(4.5, 3.9, 2, e)
метода, необходимый для расчета площади)
k3 = kombenirovanniy(5.4, 4.9, 3, e)
Label9.Caption = simpson(k1, k2, e, 1) + simpson(k2, k3, e, 3) (вывод на экран
окончательного результата площади)
End
Для запуска программы нажимаем кнопку CommandButton1. После ее
нажатия открывается UserForm1 (экранная форма). Вводим значение ℇ =
0.001 и получаем значения точек пересечения и площади по заданному
методу.
CommandButton1
15
ЗАКЛЮЧЕНИЕ. АНАЛИЗ РЕЗУЛЬТАТОВ РАБОТЫ.
В результате выполнения заданий работы были созданы программы:
вычисление корня функционального уравнения с указанной точностью
посредством метода хорд и касательных (комбинированный) и вычисление
площади фигуры, ограниченной графиками трех функций посредством
интегрирования методом Симпсона с заданной точностью.
Фактические результаты совпали с формальными. Абсолютная и
относительная погрешности вычислений абсцисс точек пересечения
графиков функций составили:
16
Для 𝑥1 − |1.377 − 1.377|=0 или
0
1.377
Для х2 - |4.269 − 4.269| = 0 или
= 0%
0
4.269
0
=0%
Для х3 - |5.098 − 5.098| = 0 или
= 0%
5.098
Абсолютная и относительная погрешности для вычисления площади фигуры
по методу Симпсона составили:
0.198
|5.217 − 5.019| = 0.198 или
≈ 0.039 = 3.9%
5.217
Отметим, что приближенные формулы для вычисления определенного
интеграла или расчета абсцисс точек пересечения графиков функций
применяют в тех случаях, когда первообразная подынтегральной функции не
выражается через элементарные функции (в методе Симпсона) или
функциональное уравнение слишком сложное для его решения.
В заключении обратим внимание на то, что каждый из изложенных методов
содержит четкий алгоритм их нахождения, что позволяет широко применять
эти методы для вычислений на ЭВМ. Таким образом, указанные методы –
эффективное средство для вычислений.
17
ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА.
1. М.П. Гришкина «Курс лекций по информатике». МИЭМ.
2. Л.Д.Слепцова «Программирование на VBA в Microsoft Office 2007».
Москва, «Диалектика», 2007.
3. Ш.Кинкоф «Microsoft Excel 2000». Москва, АСТ Астрель, 2006.
4. Р.С.Гутер, Б.В.Овчинский «Элементы численного анализа и
математической обработки результатов опыта». Москва, «Наука», 1979.
5. Н.Н.Калиткин «Численные методы». Москва, «Наука», 1978.
6. В.В.Бобков, В.И.Крылов, П.И.Монастырский «Вычислительные методы».
Москва, «Наука», 1976.
7. С.М.Никольский «Курс математического анализа». Москва,
Физматлит,2001.
18
Download