Wolna encyklopedia

Trójkąt Pascala jest to trójkątna tablica liczb:

 0                     1
 1                   1   1
 2                 1   2   1
 3               1   3   3   1
 4             1   4   6   4   1
 5           1   5   10  10   5   1
 6         1   6   15  20  15   6   1
 7       1   7   21  35  35   21  7   1
 8     1   8   28  56  70  56   28  8   1
 9   1   9  36   84  126 126  84  36  9   1
      . . . . . . . . . . . . . . . . . . .
Każda liczba w trójkącie jest sumą dwóch liczb znajdujących się bezpośrednio nad nią

Na bokach trójkąta są 1, a każda liczba nowego wiersza powstaje jako suma dwóch bezpośrednio znajdujących się nad nią. Liczby stojące w n-tym wierszu to kolejne współczynniki dwumianu Newtona - rozwinięcia (a+b)^n\,. Na przykład:


Inaczej: licząc miejsca w wierszu od zera, liczba stojąca na miejscu k w wierszu n jest równa {n \choose k}.

W wierszu 5 na miejscu 2 stoi 10 co jest właśnie równe {5 \choose 2}.

Uważa się, że trójkąt ten został odkryty na przełomie XI i XII w. przez Chińczyków i niezależnie przez Omara Chajjama XI. W XVII w. matematyk francuski B. Pascal połączył studia nad prawdopodobieństwem z tym trójkątem, osiągając tak znakomite wyniki, że trójkąt ten nazwany został trójkątem Pascala.

Spis treści

Programy obliczające

Przykład prostej (ale nieekonomicznej) funkcji rekurencyjnej w języku Pascal, obliczającej element trójkąta Pascala. Wzór wynika z definicji rekurencyjnej elementów trójkąta.

 {n \choose 0} = {n \choose n} = 1.
 {n \choose k} = {n-1 \choose k-1} + {n-1 \choose k}
function pascal(n,k:integer):integer;
begin
  if (k=0) or (k=n) then
     pascal := 1
  else
     pascal := pascal(n-1, k-1) + pascal(n-1,k);
end;

A oto przykład programu w Pythonie wypisującego liczby z trójkąta Pascala dla zadanej liczby rzędów:

def wypisz(linijka):
    print ' '.join([str(l) for l in linijka])
 
def pascal(wielkosc):
    linijka = [1]
    wypisz(linijka)
    for i in range(wielkosc - 1):
        kolejna = [1]
	for i in range(len(linijka) - 1):
            kolejna.append(linijka[i] + linijka[i+1])
        kolejna.append(1)
        linijka = kolejna
        wypisz(linijka)
 
if __name__ == '__main__':
    import sys
    if len(sys.argv) == 2:
        pascal(int(sys.argv[1]))
    else:
        print "Uzycie: python "+sys.argv[0]+" <ilosc wierszy>"

Własności trójkąta

 0                     1                                      #
 1                   1   1                                  #   #
 2                 1   2   1                              #       #
 3               1   3   3   1                          #   #   #   #
 4             1   4   6   4   1                      #               #
 5           1   5  10  10   5   1                  #   #           #   #
 6         1   6  15  20  15   6   1              #       #       #       #
 7       1   7  21  35  35  21   7   1          #   #   #   #   #   #   #   #
 8     1   8  28  56  70  56   28  8   1      #                               #
 9   1   9  36  84  126 126 84  36   9   1  #   #                           #   #

Zobacz też

Linki zewnętrzne