- •«Московский технический университет связи и информатики»
- •По дисциплине «Численные методы»
- •1.2. Общее задание
- •Выбрать индивидуальное задание из табл. 1-1:
- •2) Отделение корней
- •3) Уточнение корней Метод Ньютона (вручную)
- •1. Исследование задания
- •Расчет трех итераций
- •Погрешность численного решения нелинейных уравнений
- •Метод половинного деления (на программе)
- •1. Исследование задания
- •Результаты программы.
3) Уточнение корней Метод Ньютона (вручную)
1. Исследование задания
Из условия для уравнения 3 sin (x1/2) + x – 3 = 0, где F(0)*F’’(x) > 0, а F(1)*F’’(x) < 0 выберем начальное приближение к корню: x0=0.
Для получения решения уравнения методом Ньютона воспользуемся следующей рекуррентной формулой: Xn+1=Xn – F(xn) / F’(xn)
В нашем случае xn+1 = xn - (3*sin (xn 1/2) + x – 3) / (3*cos(xn 1/2)*1/(2 * xn 1/2)+1)
Расчет трех итераций
Для начала возьмем x0=0.01 т.к. F(0) * F’’(x) > 0.
тогда получается x1 = 0.1789475161 т.к.
Xn+1=Xn – F(Xn)/F’(Xn)
Xn+1=Xn – (3*sin (xn 1/2) + x – 3) / (3*cos(xn 1/2)*1/(2*xn ½) + 1)
x2 = Xn – (3*sin (xn 1/2) + x – 3) / (3*cos(xn 1/2)*1/(2*xn ½) + 1) =0.5544180221
x3 = Xn – (3*sin (xn 1/2) + x – 3) / (3*cos(xn 1/2)*1/(2*xn ½) + 1) =0.7206805341
Таблица 1.1 — результаты
n |
xn |
F(xn) |
0 |
0.01 |
-2.6904997501 |
1 |
0.1789475161 |
-1.5894989539 |
2 |
0.5544180221 |
-0.4125653196 |
3 |
0.7206805341 |
-0.0275999758 |
После 3 итераций x3= 0.7206805341
Погрешность численного решения нелинейных уравнений
Оценим погрешность после трех итераций по формуле:
ε = |F(x3)| / m1 = 0.0152447858
Метод половинного деления (на программе)
1. Исследование задания
Метод половинного деления сходится, если на выбранном отрезке отделен один корень. Так как на отрезке [0;1] функция 3 sin (x1/2) + x – 3 = 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.5510891827598128
2) промеежуточное значение x:0.75
промеежуточное значение z:0.0352799442488676
3) промеежуточное значение x:0.625
промеежуточное значение z:-0.24273818796250035
4) промеежуточное значение x:0.6875
промеежуточное значение z:-0.10041505996154187
5) промеежуточное значение x:0.71875
промеежуточное значение z:-0.03178749629680988
6) промеежуточное значение x:0.734375
промеежуточное значение z:0.0019357263372721256
7) промеежуточное значение x:0.7265625
промеежуточное значение z:-0.014877842187713153
8) промеежуточное значение x:0.73046875
промеежуточное значение z:-0.0064591319425106875
9) промеежуточное значение x:0.732421875
промеежуточное значение z:-0.002258731779393841
10) промеежуточное значение x:0.7333984375
промеежуточное значение z:-0.00016076126710151684
11) промеежуточное значение x:0.73388671875
промеежуточное значение z:0.0008876677362921193
12) промеежуточное значение x:0.733642578125
промеежуточное значение z:0.00036349955516268295
13) промеежуточное значение x:0.7335205078125
промеежуточное значение z:0.00010138072670740073
14) промеежуточное значение x:0.73345947265625
промеежуточное значение z:-2.9687374210940476e-05
Вы ввели:
a = 0.00 b = 1.00 eps = 1.00e-04
x = 0.73345947265625 z = -2.9687374210940476e-05 n= 14
После трех итераций приближение к корню x3=0.7334.
Таблица 2.1 — результаты программы
x |
f(x) |
f’(x) |
f’’(x) |
0. |
-3. |
inf |
nan |
0.2 |
-1.50263548 |
4.0242448 |
-24.30354168 |
0.4 |
-0.82661865 |
2.91296867 |
-8.28199584 |
0.6 |
-0.30171639 |
2.38401678 |
-4.33432679 |
0.8 |
0.13955195 |
2.04977627 |
-2.69944048 |
1. |
0.52441295 |
1.81045346 |
-1.84678343 |
Таблица 2.2 — результаты программы
|
к |
x |
f(x) |
|
1 |
0.5 |
0.5510891827598128 |
2 |
0.75 |
0.0352799442488676 |
|
3 |
0.625 |
0.24273818796250035 |
|
4 |
0.6875 |
0.10041505996154187 |
Выводы
Проведён анализ поставленной задачи. Необходимо было выбрать индивидуальное задание, отделить корни заданного уравнения графическим и аналитическим методом, для каждого из заданных методов провести исследование функции нелинейного уравнения, с использованием итерационной формулы 1-го заданного метода провести расчет трех итераций с использованием средств мат. пакета, оценить погрешность результата после 3-х итераций, для 2-го заданного метода выполнить решение уравнения с точностью 10-4, создав программу, реализующую заданный метод.
Результаты предварительного и программного расчётов, приведены в разделе 2 и 3.
Заполнены необходимые таблицы зависимых величин.
