Автор работы: Пользователь скрыл имя, 07 Февраля 2015 в 19:19, реферат
Численное интегрирование — вычисление значения определённого интеграла. Под численным интегрированием понимают набор численных методов для нахождения значения определённого интеграла.
Численное интегрирование применяется, когда:
Сама подынтегральная функция не задана аналитически. Например, она представлена в виде таблицы (массива) значений в узлах некоторой расчётной сетки.
Площади фигур, найденных методами указанных выше в Microsoft Excel VBA:
VBA |
VBA |
|||
3,367890 |
Лев.прям |
3,289116 |
Лев.прям | |
3,526029 |
Прав.прям |
3,605394 |
Прав.прям | |
3,446811 |
Сред.прям |
3,446664 |
Сред.прям | |
3,446959 |
Трап. |
3,447255 |
Трап. | |
3,446861 |
Симпс. |
3,446863 |
Симпс. |
Ниже указаны коды VBA для каждого метода последовательно и сама подынтегральная функция:
Function integral(x)
integral = Tan(x ^ 2)
End Function
Function LevPram(a, b, n)
Dim x, S, Y, h As Double
Dim i As Integer
If b < a Then
MsgBox "a äîëæíî áûòü ìåíüøå b"
Exit Function
End If
h = (b - a) / n
S = 0
For i = 0 To n - 1
x = a + i * h
Y = integral(x)
S = S + Y
Next i
LevPram = S * h
End Function
Function PravPram(a, b, n)
Dim x, S, Y, h As Double
Dim i As Integer
If b < a Then
MsgBox "a äîëæíî áûòü ìåíüøå b"
Exit Function
End If
h = (b - a) / n
S = 0
For i = 1 To n
x = a + i * h
Y = integral(x)
S = S + Y
Next i
PravPram = S * h
End Function
Public Function SrednPram(a As Double, b As Double, n As Integer) As Double
Dim x, S, Y, h As Double
Dim i As Integer
If b < a Then
MsgBox "a äîëæíî áûòü ìåíüøå b"
Exit Function
End If
h = (b - a) / n
S = 0
x = a
For i = 1 To n
x = x + h / 2
Y = integral(x)
S = S + Y
x = x + h / 2
Next i
SrednPram = S * h
End Function
Function Strap(a As Double, b As Double, n As Integer) As Double
Dim x, S, Y, h As Double
Dim i As Integer
If b < a Then
MsgBox "a äîëæíî áûòü ìåíüøå b"
Exit Function
End If
h = (b - a) / n
S = 0
For i = 1 To n - 1
x = a + i * h
Y = integral(x)
S = S + Y
Next i
S = 2 * S + integral(a) + integral(b)
Strap = S * h / 2
End Function
Function SSimps(a As Double, b As Double, n As Integer) As Double
Dim x, S, Y, h As Double
Dim i As Integer
If b < a Then
MsgBox "a äîëæíî áûòü ìåíüøå b"
Exit Function
End If
If n / 2 <> Int(n / 2) Then
MsgBox "n äîëæíî áûòü ÷åòíûì"
Exit Function
End If
h = (b - a) / n
S = 0
For i = 1 To n - 1 Step 2
x = a + i * h
Y = integral(x)
S = S + 4 * Y
Next i
For i = 2 To n - 2 Step 2
x = a + i * h
Y = integral(x)
S = S + 2 * Y
Next i
S = S + integral(a) + integral(b)
SSimps = S * h / 3
End Function
Площади фигур я нашел методами: прямоугольником (левым, правым, средним), трапецией и методом Симпсона. В итоге все найденные мною площади численно совпали, как это видно на представленных таблицах.
Решением или корнями уравнения Y(x)=0, называются такие значения аргумента х, при которых значение функции Y(x) становится равным нулю (равенство обращается в верное тождество). Только 2 класса уравнений – линейное ax + b = 0 и квадратное ax2 + bx + c = 0 – имеют в общем случае аналитическое решение в виде формул.
В различных инженерных и исследовательских задачах часто возникает необходимость нахождения одного или нескольких решений уравнений вида
F(x)=0
где F(x) - некоторая известная функция независимой переменной x. В описание функции F(x) могут входить параметры, имеющие постоянные значения в каждой конкретной реализации функции. Например, функция:
F(x)=ax2+bx+c
определяет множество многочленов второго порядка. Описание многочлена содержит одну независимую переменную – аргумент x, значения которой принадлежат диапазону [X0 , Xk] и три параметра a, b, c, не зависящие друг от друга.
Набор числовых значений этих трех параметров определяет одну реализацию, для которой по известным алгебраическим формулам могут быть вычислены значения двух корней.
Численное решение нелинейного уравнения обычно осуществляется в 2 этапа:
1 этап – отделение корней состоит в выделении на заданном интервале изменения аргумента [X0 , Xk] подынтервалов, содержащих только один корень. Для отделения корней обычно выполняется вычисление таблицы значений функции и (или) построение её графика;
2 этап - уточнение корней выполняется на каждом промежутке, содержащем один корень, выделенном на первом этапе исследования поведения функции. Для уточнения значения корня выбирается один из 3
численных методов. Наиболее часто используются метод половинного деления (дихотомии), метод хорд, метод касательных (Ньютона) и др.
Кроме алгебраических уравнений к нелинейным уравнениям, решения которых приходится искать при выполнении математических исследований различных технических систем, относятся также трансцендентные уравнения.
Трансцендентными уравнениями называются уравнения, неприводимые к виду алгебраических. В частности, это уравнения, в которые входят тригонометрические, логарифмические и т.п. функции. Иногда для того, чтобы отличить эти уравнения от дифференциальных или интегральных уравнений их называют "конечными".
Для трансцендентных и алгебраических уравнения, порядок которых выше четвёртого, аналитические решения могут быть получены только в некоторых частных случаях. По этой причине математиками было разработано множество методов, позволяющих получать численные решения такого рода уравнений.
Алгоритмы численных методов решения нелинейных уравнений имеютитерационный характер. То есть при использовании таких алгоритмов решениенаходится за несколько последовательно выполняемых шагов. На каждом шаге итерации точность решения увеличивается.
В ряде случаев функции, для которых необходимо найти решения, получены в результате экспериментальных исследований.
Такие функции либо не имеют аналитических описаний, а задаются числовыми таблицами (таблично-заданные, табличные, решетчатые функции), либо получены как результат решения задачи интерполяции.
В таблицы, получаемые обычно при проведении каких-либо экспериментальных исследований, записываются значения аргумента и соответствующие им значения исследуемой функции. На основании таблицы значений функции необходимо определить значение её корня, т.е. найти значение аргумента, при котором значение функции будет равно нулю.
Уравнение 1:
h |
0,5 |
x3+3.1x-9.4=0 | |
E= |
0,000005 |
x |
y |
y(vba) |
-2,00 |
-23,60 |
-23,60 |
-1,50 |
-17,43 |
-17,43 |
-1,00 |
-13,50 |
-13,50 |
-0,50 |
-11,08 |
-11,08 |
0,00 |
-9,40 |
-9,40 |
0,50 |
-7,73 |
-7,73 |
1,00 |
-5,30 |
-5,30 |
1,50 |
-1,38 |
-1,38 |
2,00 |
4,80 |
4,80 |
2,50 |
13,98 |
13,98 |
3,00 |
26,90 |
26,90 |
3,50 |
44,33 |
44,33 |
4,00 |
67,00 |
67,00 |
4,50 |
95,68 |
95,68 |
3,80 |
0,82 |
0,82 |
4,00 |
0,89 |
0,89 |
4,20 |
0,95 |
0,95 |
Метод Дихотомии(половинного деления):
№ |
a |
b |
c |
F( a ) |
F( b ) |
F( c ) |
Метод Дихотомии |
Дихотомия(VBA) |
0 |
1,50000 |
2,00000 |
1,75000 |
-1,37500 |
4,80000 |
1,38438 |
0,50 |
1,6314678192 |
1 |
1,50000 |
1,75000 |
1,62500 |
-1,37500 |
1,38438 |
-0,07148 |
0,25 |
|
2 |
1,62500 |
1,75000 |
1,68750 |
-0,07148 |
1,38438 |
0,63667 |
0,13 |
|
3 |
1,62500 |
1,68750 |
1,65625 |
-0,07148 |
0,63667 |
0,27774 |
0,06 |
|
4 |
1,62500 |
1,65625 |
1,64063 |
-0,07148 |
0,27774 |
0,10193 |
0,03 |
|
5 |
1,62500 |
1,64063 |
1,63281 |
-0,07148 |
0,10193 |
0,01492 |
0,02 |
|
6 |
1,62500 |
1,63281 |
1,62891 |
-0,07148 |
0,01492 |
-0,02836 |
0,01 |
|
7 |
1,62891 |
1,63281 |
1,63086 |
-0,02836 |
0,01492 |
-0,00674 |
0,00 |
|
8 |
1,63086 |
1,63281 |
1,63184 |
-0,00674 |
0,01492 |
0,00409 |
0,00 |
|
9 |
1,63086 |
1,63184 |
1,63135 |
-0,00674 |
0,00409 |
-0,00132 |
0,00 |
|
10 |
1,63135 |
1,63184 |
1,63159 |
-0,00132 |
0,00409 |
0,00138 |
0,00 |
|
11 |
1,63135 |
1,63159 |
1,63147 |
-0,00132 |
0,00138 |
0,00003 |
0,00 |
|
12 |
1,63135 |
1,63147 |
1,63141 |
-0,00132 |
0,00003 |
-0,00065 |
0,00 |
|
13 |
1,63141 |
1,63147 |
1,63144 |
-0,00065 |
0,00003 |
-0,00031 |
0,00 |
|
14 |
1,63144 |
1,63147 |
1,63145 |
-0,00031 |
0,00003 |
-0,00014 |
0,00 |
|
15 |
1,63145 |
1,63147 |
1,63146 |
-0,00014 |
0,00003 |
-0,00006 |
0,00 |
|
16 |
1,63146 |
1,63147 |
1,63147 |
-0,00006 |
0,00003 |
-0,00001 |
0,00 |
|
17 |
1,63147 |
1,63147 |
1,63147 |
-0,00001 |
0,00003 |
0,00001 |
корень= 1,631468 за 17 шагов |
|
18 |
1,63147 |
1,63147 |
1,63147 |
-0,00001 |
0,00001 |
0,00000 |
корень= 1,631467 за 18 шагов |
Код VBA для метода Дихотомии:
Function dix(a As Double, b As Double, e As Double)
10 c = (a + b) / 2
If ff(a) * ff(c) < 0 Then b = c Else a = c
If Abs(a - b) <= e Then dix = c Else GoTo 10
dix = Format(c, "0.000000")
End Function
Метод Ньютона:
X |
F(x) |
F'(x) |
№ |
Метод Ньютона |
Метод Ньютона(VBA) |
2,00000 |
4,80000 |
15,10000 |
0 |
0,31788079 |
1,631467158 |
1,68212 |
0,57417 |
11,58858 |
1 |
0,04954603 |
|
1,63257 |
0,01227 |
11,09589 |
2 |
0,00110547 |
|
1,63147 |
0,00001 |
11,08506 |
3 |
корень= 1,63146715843216 за 3 шагов |
|
1,63147 |
0,00000 |
11,08506 |
4 |
корень= 1,63146715843203 за 4 шагов |
|
1,63147 |
0,00000 |
11,08506 |
5 |
корень= 1,63146715843203 за 5 шагов |
|
1,63147 |
0,00000 |
11,08506 |
|||
1,63147 |
0,00000 |
11,08506 |
|||
1,63147 |
0,00000 |
11,08506 |
|||
1,63147 |
0,00000 |
11,08506 |
|||
1,63147 |
0,00000 |
11,08506 |
Код VBA для метода Ньютона:
Function Newton(x0 As Double, e As Double)
x = x0
x1 = x - ff(x) / fd(x)
While Abs(x1 - x) >= e
x = x1
x1 = x - ff(x) / fd(x)
Wend
Newton = Format(x1, "0.000000")
End Function