- •«Московский технический университет связи и информатики»
- •По дисциплине «Численные методы»
- •1.2. Общее задание
- •Выбрать индивидуальное задание из табл. 1-1:
- •2) Отделение корней
- •3) Уточнение корней Метод Ньютона (вручную)
- •1. Исследование задания
- •Расчет трех итераций
- •Погрешность численного решения нелинейных уравнений
- •Метод половинного деления (на программе)
- •1. Исследование задания
- •Результаты программы.
3) Уточнение корней Метод Ньютона (вручную)
1. Исследование задания
Из условия для уравнения x + ln(4x) – 1 = 0, где F(0)*F’’(x) > 0, а F(1)*F’’(x) < 0 выберем начальное приближение к корню: x0=0.
Для получения решения уравнения методом Ньютона воспользуемся следующей рекуррентной формулой: Xn+1=Xn – F(xn) / F’(xn)
В нашем случае xn+1 = xn - (x + ln(4x) – 1) / (1+1/x)
Расчет трех итераций
Для начала возьмем x0=0.01 т.к. F(0) * F’’(x) > 0.
тогда получается x1 = 0.051672 т.к.
Xn+1=Xn – F(Xn)/F’(Xn)
Xn+1=Xn – (x + ln(4x) – 1) / (1+1/x)
x2 = Xn – (x + ln(4x) – 1) / (1+1/x) =0.175727
x3 = Xn – (x + ln(4x) – 1) / (1+1/x) =0.351615
Таблица 1.1 — результаты
n |
xn |
F(xn) |
0 |
0.01 |
-4.208876 |
1 |
0.051672 |
-2.524872 |
2 |
0.175727 |
-1.176801 |
3 |
0.351615 |
-0.30731 |
После 3 итераций x3= 0.351615
Погрешность численного решения нелинейных уравнений
Оценим погрешность после трех итераций по формуле:
ε = |F(x3)| / m1 = 0.30731/ 2 = 0.153655
Метод половинного деления (на программе)
1. Исследование задания
Метод половинного деления сходится, если на выбранном отрезке отделен один корень. Так как на отрезке [0;1] функция x + ln(4x) – 1 = 0 меняет знак(f(0)*f(1)<0) и монотонна (f’(x)>0), то условие сходимости выполняется.
Начальным приближением является середина отрезка [0;1]:x0=(a+b)/2=0.5.
Результаты программы.
Cоздать функцию, реализующую метод половинного деления
|
Функция для вычисления приближенного значения
import math print("Введите исходные данные: ") print("a = ", end='') a = float(input()) print("b = ", end='') b = float(input()) print("eps = ", end='') e = float(input()) print("Вы ввели: ") print("a = %.2f b = %.2f eps = %.2e" % (a, b, e)) y = 3.0 * math.sin(a**0.5) + a - 3.0 n = 0 x = 0 z = 0 while abs(b - a) >= e: x = (a + b) / 2 z = 3.0 * math.sin(x**0.5) + x - 3.0 n = n + 1 if y * z < 0: b = x
print(f'промеежуточное значение x:{x}') print(f'промеежуточное значение z:{z}')
else: a = x y = z
print(f'промеежуточное значение x:{x}') print(f'промеежуточное значение z:{z}')
print("x =", x, "z =", z, "n=", n)
И его результат
Введите исходные данные:
a = 0
b = 1
eps = 0.0001
1)промеежуточное значение x:0.5
промеежуточное значение z:0.1931471805599454
2)промеежуточное значение x:0.25
промеежуточное значение z:-0.75
3)промеежуточное значение x:0.375
промеежуточное значение z:-0.21953489189183562
4)промеежуточное значение x:0.4375
промеежуточное значение z:-0.0028842120645773406
5)промеежуточное значение x:0.46875
промеежуточное значение z:0.0973586594223741
6)промеежуточное значение x:0.453125
промеежуточное значение z:0.047832107746692776
7)промеежуточное значение x:0.4453125
промеежуточное значение z:0.022627865034823724
8)промеежуточное значение x:0.44140625
промеежуточное значение z:0.009910985352668877
9)промеежуточное значение x:0.439453125
промеежуточное значение z:0.003523263284803013
10)промеежуточное значение x:0.4384765625
промеежуточное значение z:0.0003220057626918127
11)промеежуточное значение x:0.43798828125
промеежуточное значение z:-0.0012804817307117133
12)промеежуточное значение x:0.438232421875
промеежуточное значение z:-0.00047908280207387133
13)промеежуточное значение x:0.4383544921875
промеежуточное значение z:-7.84997458155301e-05
14)промеежуточное значение x:0.43841552734375
промеежуточное значение z:0.00012176269920782801
x = 0.43841552734375 z = 0.00012176269920782801 n= 14
После трех итераций приближение к корню x3=0.4375
Таблица 2.1 — результаты программы
-
x
f(x)
f’(x)
f’’(x)
0
-1
+∞
-∞
0.2
-0.21221334
6
-25
0.4
0.35551145
3.5
-6.25
0.6
0.82377543
2.66666667
-2.77777778
0.8
1.23508453
2.25
-1.5625
1
1.60943791
2
-1
Таблица 2.2 — результаты программы
|
к |
x |
f(x) |
|
1 |
0.5 |
0.1931471805599454 |
2 |
0.25 |
-0.75 |
|
3 |
0.375 |
-0.21953489189183562 |
|
4 |
0.4375 |
-0.002884212064577340 |
Выводы
Проведён анализ поставленной задачи. Необходимо было выбрать индивидуальное задание, отделить корни заданного уравнения графическим и аналитическим методом, для каждого из заданных методов провести исследование функции нелинейного уравнения, с использованием итерационной формулы 1-го заданного метода провести расчет трех итераций с использованием средств мат. пакета, оценить погрешность результата после 3-х итераций, для 2-го заданного метода выполнить решение уравнения с точностью 10-4, создав программу, реализующую заданный метод.
Результаты предварительного и программного расчётов, приведены в разделе 2 и 3.
Заполнены необходимые таблицы зависимых величин.
