вариант 2
import numpy as np
import matplotlib.pyplot as plt
from typing import Callable
def f1(x: np.ndarray) -> np.ndarray:
result: np.ndarray = 0.6 * np.power(3, x) - 2.3 * x - 3
return result
def f2(x: np.ndarray) -> np.ndarray:
result: np.ndarray = 0.5909 * np.exp(-0.6286 * x) - x
return result
# Построение графиков
# Графики 1 и 2
x = np.linspace(start=0, stop=2.5, num=1000)
plt.plot(x, f1(x), label='f1')
plt.plot(x, f2(x), label='f2')
plt.grid(True)
plt.legend()
plt.show()
def localize(f: Callable, a: float, b:float) -> list[list]:
h: float = 0.5
x_c: float = a
res: list[list] = []
while x_c < b:
if f(x_c) * f(x_c+h) < 0:
res.append([x_c, x_c+h])
x_c += h
return res
def mpd(f: Callable, root_bounds: list[list], e: float = 0.000001) -> list:
res: list = []
for bound in root_bounds:
a: float = bound[0]
b: float = bound[1]
c = (a+b)/2
while np.fabs(f(c)) > e:
if f(a)*f(c) < 0:
b=c
elif f(c)*f(b) < 0:
a=c
c=(a+b)/2
res.append(c)
return res
root_bounds = localize(f1, 0,2.5)
result = mpd(f1, root_bounds)
print(result)
| Гарантия на работу | 1 год |
| Средний балл | 4.54 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |