def __init__(self):
     super().__init__()
     # Корінь знаходиться на проміжку [1, 2], перша похідна функції x = (3-x)^(1/5) на заданому проміжку має максимум 1/5, в якості першого наближення обираємо лівий край проміжку
     self.a = Q(1)
     self.b = Q(2)
     self.x0 = Q(1)
     self.q = Q(1, 5)
     self.name = "Метод простих ітерацій"
 def __init__(self):
     super().__init__()
     # Корінь знаходиться на проміжку [1, 6/5], m[1] = 6, M[2] = 864/25
     self.a = Q(1)
     self.b = Q(6, 5)
     self.x0 = Q(6, 5)
     self.q = Q(72, 125)
     self.name = "Метод Н`ютона"
Пример #3
0
def next_fraction(q: Q) -> Q:
    assert 0 <= q.numerator < q.denominator
    dq = Q(1, q.denominator)

    while True:
        q += dq

        if q >= 1:
            return Q(1, dq.denominator + 1)

        if q.denominator == dq.denominator:
            return q
Пример #4
0
    def new(self, size: int = 0) -> Q:
        if self.pool:
            base = self.pool.pop()
        else:
            base = self.next_base
            self.next_base = next_fraction(self.next_base)

        index = fraction_to_index(base)

        while len(self.stacks) <= index:
            self.stacks.append(None)

        self.stacks[index] = size * [Q(0)]
        return base
Пример #5
0
def load_static(process, operand):
    value = process.memory[Q(operand)]
    process.push_data(value)