Example #1
0
def mnogokanal_SMO_otkaz():
    potokZav = float(potokZavE.get())  # lambda
    tAverage = float(tAverageE.get())  # Среднее время обслуживания в Часах
    n = int(nE.get())  # Количество каналов
    potokObs = (1 / tAverage)  # Интенсивонсть потока обслуживания U

    p = potokZav / potokObs  # Нагрузка системы
    p_rotv = round(p, 3)
    p0 = 0
    for c in range(n + 1):
        p0 += (p**c / fc(c))
    p0 = round((1 / p0), 3)  # Вероятность простоя системы
    p1 = round(((p**n / fc(n)) * p0), 3)  # Вероятность отказа
    Q = round((1 - p1), 3)  # относительная пропускная способность
    A = round((potokZav * Q), 3)  # абсолютная пропускная способность
    n_z = round((p * Q), 3)  # Число каналов занятый обслуживанием
    k_z = round((n_z / n), 3)  # Коэффициент занятости каналов
    T_smo = round((n_z / potokZav),
                  3)  # Среднее время пребывания заявки в системе
    T_ob = round((1 / potokObs),
                 3)  # Ср. время обслуживанияканалом одной заявки
    potokObs = round(potokObs, 3)
    return (pE.set(p_rotv), P0E.set(p0), P1E.set(p1), QE.set(Q), AE.set(A),
            n_zE.set(n_z), k_zE.set(k_z), T_smoE.set(T_smo), T_obE.set(T_ob),
            potokObsE.set(potokObs))
Example #2
0
def mnogokanal_SMO_bez():
    potokZav = float(potokZavE.get())  # lambda
    tAverage = float(tAverageE.get())  # Среднее время обслуживания в Часах
    n = int(nE.get())  # Количество каналов
    potokObs = (1 / tAverage)  # Интенсивонсть потока обслуживания U
    p = potokZav / potokObs  # Нагрузка системы
    p_rotv = round(p, 3)
    g = 1
    p_start = 0
    for i in range(n):
        p_start += p**n / fc(n)
        g += 1
    p0 = round((1 / (1 + p_start + ((p**(n + 1)) / (fc(n) * (n - p))))), 3)
    p_och = round((((p**(n + 1)) / (fc(n) * (n - p))) * p0), 3)
    L_och = round((n / (n - p)) * p_och, 3)
    T_och = round((L_och / potokZav), 3)
    T_smo = round((T_och + tAverage), 3)
    p1 = '0 %'
    Q = 1
    A = round((potokZav * Q), 3)
    n_z = round(p, 3)
    n_pr = round((n - n_z), 3)
    k_z = round(n_z / n, 3)
    potokObs = round(potokObs, 3)
    return (pE.set(p_rotv), P0E.set(p0), P1E.set(p1), QE.set(Q), AE.set(A),
            n_zE.set(n_z), n_prE.set(n_pr), L_ochE.set(L_och),
            T_ochE.set(T_och), T_smoE.set(T_smo), k_zE.set(k_z),
            potokObsE.set(potokObs))
    def getDiffQuotientTab(self):
        """Generate a matrix which represents the difference quotient table
        of (x_known, y_known).
        """

        equidistant = False  # equidistant is false by defualt

        t = self.x[1] - self.x[0]
        for i in range(1, len(self.x) - 1):
            if round(t, 1) == round(self.x[i + 1] - self.x[i], 1):
                equidistant = True
            else:
                equidistant = False
                break

        if equidistant == False:
            n = len(self.x) - 1

            ans = [[None for i in range(n)] for i in range(n)]
            # initialize it with default setting None.

            for i in range(n):  # column
                for j in range(i, n):  # row
                    if i == 0:
                        ans[j][i] = (self.y[j+1] - self.y[j]) \
                        / (self.x[j+1] - self.x[j])
                    else:
                        ans[j][i] = (ans[j][i-1] - ans[j-1][i-1]) \
                        / (self.x[j+1] - self.x[j-1])
            pass
            return ans

        else:
            from math import factorial as fc
            from math import pow as pow

            n = len(self.x) - 1

            ans = [[None for i in range(n)] for i in range(n)]

            diffTab = self.getDiffTab()

            for i in range(n):
                low = fc(i + 1) * pow(t, i + 1)
                up = diffTab[i][i]
                ans[i][i] = up / low

            return ans
def factorial(n):
    if n < 0 or n > 12:
        raise ValueError
    return fc(n)
Example #5
0
def mnogokanal_SMO_dlina_ocheredi():
    potokZav = float(potokZavE.get())  # lambda
    tAverage = float(tAverageE.get())  # Среднее время обслуживания в Часах
    n = int(nE.get())  # Количество каналов
    potokObs = (1 / tAverage)  # Интенсивонсть потока обслуживания U
    nagruzka_m = int(nagruzka_mE.get())  # Длина очереди
    mid = 0
    p = potokZav / potokObs  # Нагрузка системы
    p_rotv = round(p, 3)

    if p / n == 1:
        # ch = 1
        # while n-1 != ch:
        #     mid += (p ** ch / fc(ch))
        #     ch += 1
        ch = 1
        for ii in range(n):
            mid += (p**ch / fc(ch))
            ch += 1
        last = (nagruzka_m * p**(n + 1)) / (n * fc(n))
        p0 = round((1 + mid + last)**-1, 3)  # Вероятность простоя
        pn = round(
            (p**n / fc(n)) * p0, 3
        )  # Вероятность того, что в СМО находится какое-либо кол-во заявок
        try:
            p_och = round((p**n / (fc(n))) * ((1 - ((p / n)**nagruzka_m)) /
                                              (1 - (p / n))) * p0,
                          3)  # Вероятность образования очереди
            p_ochE.set(p_och)
        except:
            print('Error')
        p1 = round(((p**(n + nagruzka_m)) / (n**nagruzka_m * fc(n))) * p0,
                   3)  # Вероятность отказа
        Q = round((1 - p1), 3)  # Относительная пропускная способность
        A = round((potokZav * Q), 3)  # Абсолютная пропускная способность
        n_z = round((p * Q), 3)  # Ср. Число каналов занятый обслуживанием
        n_pr = round((n - n_z), 3)  # Ср. Число простаивающих каналов
        L_och = round((((p**(n + 1)) / (n * fc(n))) *
                       (nagruzka_m * (nagruzka_m + 1)) / 2 * p0),
                      3)  # Ср. число заявок, стоящий в очереди
        T_och = round((L_och / potokZav),
                      3)  # Среднее время ожидания обслужвания
        T_smo = round((L_och / potokZav) + (Q / potokObs),
                      3)  # Среднее время пребывания заявки в системе
        k_z = round(n_z / n, 3)  # Коэффициент занятости каналов
        k_pr = round(1 - k_z, 3)  # Коэффициент простоя каналов
        L_ob = round(p * Q, 3)  # Ср.число заявок, находящихся на обслуживании
        L_smo = round(L_och + L_ob,
                      3)  # Ср. число завяок, находящихся в системе

        pE.set(p_rotv),
        P0E.set(p0),
        PnE.set(pn),
        P1E.set(p1),
        QE.set(Q),
        AE.set(A),
        n_zE.set(n_z),
        n_prE.set(n_pr),
        L_ochE.set(L_och),
        T_ochE.set(T_och),
        T_smoE.set(T_smo),
        k_zE.set(k_z),
        k_prE.set(k_pr),
        L_obE.set(L_ob),
        L_smoE.set(L_smo),
        potokObsE.set(potokObs)
    else:
        start = 0
        for i in range(n + 1):
            start += (p**i / fc(i))
        p0 = round(
            1 / (start + ((p**(n + 1) / (fc(n) * (n - p))) *
                          (1 - ((p / n)**nagruzka_m)))), 3)
        try:
            p_och = round(((p**n / (fc(n))) * ((1 - ((p / n)**nagruzka_m)) /
                                               (1 - (p / n))) * p0),
                          3)  # Вероятность образования очереди
            p_ochE.set(p_och)
        except:
            print('Error')
        L_och = round(
            (((p**(n + 1)) / (n * fc(n))) *
             (1 - (p / n)**nagruzka_m * (nagruzka_m + 1 - nagruzka_m *
                                         (p / n))) / ((1 - p / n)**2) * p0), 3)
        T_och = round((L_och / potokZav), 3)
        # p1 = (p ** (n + nagruzka_m) / n ** nagruzka_m * fc(n)) * p0
        p1 = round((((p**(n + nagruzka_m)) / (n**nagruzka_m * fc(n))) * p0), 3)
        Q = round((1 - p1), 3)
        A = round((potokZav * Q), 3)
        n_z = round((p * Q), 3)  # Число каналов занятый обслуживанием
        n_pr = round((n - n_z), 3)  # Ср. Число простаивающих каналов
        k_z = round((n_z / n),
                    3)  # Коэффициент занятости каналов обслуживанием
        k_pr = round((1 - k_z), 3)  # Коэффициент простоя каналов
        L_ob = round((p * Q),
                     3)  # Ср.число заявок, находящихся на обслуживании
        L_smo = round((L_och + L_ob),
                      3)  # Ср. число завяок, находящихся в системе
        T_smo = round((L_smo / A), 3)
        print(p)
        print(p0)
        print(nagruzka_m)
        print(n)
        return (pE.set(p_rotv), P0E.set(p0), P1E.set(p1), QE.set(Q), AE.set(A),
                n_zE.set(n_z), n_prE.set(n_pr), L_ochE.set(L_och),
                T_ochE.set(T_och), T_smoE.set(T_smo), k_zE.set(k_z),
                k_prE.set(k_pr), L_obE.set(L_ob), L_smoE.set(L_smo),
                potokObsE.set(potokObs))
Example #6
0
def s6j(a,b,c,d,e,f):
    from math import factorial as fc
    from math import sqrt
    
    trangle = lambda a,b,c : a-b<=c<=a+b
    delta = lambda a,b,c : sqrt(fc(a+b-c)*fc(a-b+c)*fc(-a+b+c)/fc(a+b+c+1))
    if (not trangle(a,b,c)) or (not trangle(c,d,e)) or (not trangle(a,e,f)) or (not trangle(b,c,f)):
        return 0
    
    summ = 0
    n = 0
    while n < a+b+c+d+e+f:
        if      (n-a-b-c) < 0 or\
                (n-c-d-e) < 0 or\
                (n-a-e-f) < 0 or\
                (n-b-d-f) < 0 or\
                (a+b+d+e-n) < 0 or\
                (a+c+d+f-n) < 0 or\
                (b+c+e+f-n) < 0: 
            n+=1
            continue
        summ+=(-1)**n*fc(n+1)/(fc(n-a-b-c)*fc(n-c-d-e)*fc(n-a-e-f)*fc(n-b-d-f)\
                              *fc(a+b+d+e-n)*fc(a+c+d+f-n)*fc(b+c+e+f-n))
        n+=1
        print(n)
    summ*=delta(a,b,c)*delta(c,d,e)*delta(a,e,f)*delta(b,d,f)
    return summ
Example #7
0
def fastest_route(m, n):
    return fc(m + n) / (fc(m) * fc(n))
def choose(n, k):
    if n < k:
        return 0
    else:
        return int(fc(n) // (fc(k) * fc(n - k)))
Example #9
0
def choose(n, k):
    return fc(n) / (fc(k) * fc(n - k))
Example #10
0
 def debye_function_exp(self, x):
     Brillouin = [1./6.,-1./30.,1./42.,-1./30.,5./66.,-691./2730.,7./6.,-3617./510.,43867./798,-174611./330.]
     D2=0.
     for k in range(len(Brillouin)):
         D2 = D2+Brillouin[k]/( (2*(k+1)+3)*fc(2*(k+1)) )*x**(2*(k+1))
     return 1- 3./8.*x + 3*D2
from math import factorial as fc

print(fc(1000))

import sys
from pprint import pprint as pp
pp([
    sys.float_info, sys.int_info, sys.hash_info, sys.thread_info,
    sys.version_info, sys.version, sys.api_version
])

most_negative_float = -sys.float_info.max
greatest_negative_float = -sys.float_info.min

pp((most_negative_float, greatest_negative_float))
pp(float("10"))
pp(2**53)
pp(float(2**53))  # Correct
pp(float(2**53 + 1))  # Incorrect
pp(float(2**53 + 2))  # Correct
pp(float(2**53 + 3))  # Incorrect
pp(float(2**53 + 4))  # Correct

import decimal
pp(decimal.getcontext())
from decimal import Decimal
pp(Decimal(7))
pp(Decimal(0.8))
pp(Decimal(0.8) - Decimal(0.7))
pp(Decimal("0.8") - Decimal("0.7")
   )  # Works like a charm perfect for usage no floating point issue
def cmb(a, b):
    numerator = fc(a)
    denominator = fc((a - b)) * fc(b)
    return int(numerator / denominator)
Example #13
0
from math import factorial as fc
a, b = map(int, input().split())
print((fc(a) // (fc(b) * fc(a - b))))
Example #14
0
#                                                                            ↑  ↑   【k-1:仕切りを置く候補】【i-1:仕切りの数】

# 赤いボールを一列に並べる                                                 =>  R  R
# 赤いボールの左端・間・右端の中からi箇所選び、そこに青いボールのセットを置く   =>  R  R    [n=5]
#                                                                          ↑  ↑  ↑   [n-k+1:Rの間の数] [このうちi個を選ぶ]

from math import factorial as fc

MOD = 10**9 + 7
n, k = map(int, input().split())

for i in range(1, k + 1):
    if n - k + 1 < i:  # <=ここで弾かないとRE
        print(0)
        continue
    b = fc(n - k + 1) // fc(i) // fc(n - k + 1 - i)
    r = fc(k - 1) // fc(i - 1) // fc(k - 1 - (i - 1))
    print(b % MOD * r % MOD)

# 2019/06/29 だめだったやつ
'''
import re
from itertools import permutations

n,k=map(int,input().split())
s=list('1'*k+'0'*(n-k))

pre=0
S=set(permutations(s))
for i in range(1,k+1):
    pat=r'1'*k
Example #15
0
"""
Author:Ashwini Chaudhary
Link:http://projecteuler.net/problem=34
lang:python
"""
from math import factorial as fc
summ=0
for x in xrange(11,999999):
    st=str(x)
    if x==sum(fc(int(i)) for i in st):
        summ+=x
print summ
def solution2():
    from math import factorial as fc
    print(sum(map(int, str(fc(100)))))