implemented static solvers

parent 661b2cb5
import typing as tp import typing as tp
# TODO Метод левых прямоугольников
def left_rectangle_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float: def left_rectangle_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float:
pass """Метод левых прямоугольников"""
h = (b - a) / steps
x = a
area = 0.0
for _ in range(steps):
area += h * fx(x)
x += h
# TODO Метод правых прямоугольников return area
def right_rectangle_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float:
pass
def right_rectangle_method(
fx: tp.Callable[[float], float], a: float, b: float, steps: int
) -> float:
"""Метод правых прямоугольников"""
h = (b - a) / steps
x = a + h
area = 0.0
for _ in range(steps):
area += h * fx(x)
x += h
return area
# TODO Метод трапеций
def trapezium_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float: def trapezium_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float:
pass """Метод трапеций"""
h: float = (b - a) / steps
ans: float = 0.0
x: float = a
for _ in range(steps):
ans += h * (fx(x) + fx(x + h)) / 2
x += h
return ans
# TODO Метод парабол
def parabola_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float:
pass
def parabola_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float:
"""Метод парабол"""
if steps % 2 == 1:
steps += 1
# TODO Метод переменного шага: Двойной пересчет h: float = (b - a) / steps
def double_count_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float: summa: float = fx(a) + 4 * fx(a + h) + fx(b)
pass
for i in range(1, int(steps / 2)):
summa += 2 * fx(a + (2 * i) * h) + 4 * fx(a + (2 * i + 1) * h)
# TODO Метод переменного шага: Некий секретный алгоритм return summa * h / 3
def mysterious_method(fx: tp.Callable[[float], float], a: float, b: float, steps: int) -> float:
pass
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment