Trójkąt Pascala
Z Wikipedii
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 . . . . . . . . . . . . . . . . . . .
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:
(a+x)3=a3+3a2x+3ax2+x3 w trzecim wierszu trójkąta mamy 1, 3, 3, 1.
(a+b)5=1a5b0+5a4b1+10a3b2+10a2b3+5a1b4+1a0b5
Inaczej: licząc miejsca w wierszu od zera, liczba stojąca na miejscu k w wierszu n jest równa .
W wierszu 5 na miejscu 2 stoi 10 co jest właśnie równe .
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 ChajjamaXI. W XVII w. matematyk francuski B. Pascal połączył studia nad prawdopodobieństwem z tym trójkatem, osiagając tak znakomite wyniki, że trójkąt ten nazwany został trójkątem Pascala.
Spis treści |
[edytuj] Programy obliczające
Przykład prostej (ale nieekonomicznej) funkcji rekurencyjnej obliczającej element trójkąta Pascala w języku Pascal. Wzór wynika z definicji rekurencyjnej elementów trójkata.
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 C++ wypisującego na ekranie trójkąt Pascala dla zadanej liczby rzędów:
#include <iostream> #include <stdlib.h> //---------------------------------------------------------------- using namespace std; // Deklaracja zmiennych int rzedow; int wiersz[ 34]; int main(int argc, char* argv[]) { cout << "Ile rzedow ?" << endl; cin >> rzedow; cout << endl; // jeśli typ int jest 32-bitowy, to wierszy // o numerach większych od 33 już nie policzymy: // max: (33 po 16) = 1166803110 = 0x458C00A6 if( rzedow > 34) rzedow = 34; for (int i = 0; i < rzedow ; i++) { int j; wiersz[ i] = 1; for (j = i-1; j > 0; j--) wiersz[ j] += wiersz[ j-1]; for (j = 0; j <= i; j++) { cout << wiersz[ j] << " "; } cout << endl; } return 0; } //----------------------------------------------------------------
[edytuj] Własności trójkąta
- Na skrajnych bocznych (zerowy) rzędach trójkąta są jedynki.
- W kolejnym (pierwszym) skrajnym bocznym rzędzie są kolejne liczby naturalne (1, 2, 3, 4, ...).
- W drugim rzędzie różnice między sąsiednimi liczbami są kolejnymi liczbami naturalnymi (są to liczby trójkątne). Liczby trójkatne podają liczbę okręgów ułożonych w kształt trójkąta (1, 3, 6, 10, ...).
- W trzecim liczby piramidalne, podają liczbę kulek ułożonych czworościan foremny (1, 4, 10, 20, 35)
- W czwartej liczbę kul w "czworościanie" w przestrzeni czterowymiarowej.
- Wracając do rzędu zerowego i uogólniając możemy policzyć liczbę elementów trójkącie w przestrzeni jedno i zero wymiarowej.
- Suma liczb w poziomym rzędzie to kolejne potęgi liczby 2.
- Po usunięciu z trójkąta wszystkich liczb parzystych pozostałe liczby nieparzyste układają się w geometryczny wzór trójkąta Sierpińskiego:
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 # # # #
[edytuj] Ciekawostka
Jak z pomocą trójkąta Pascala obliczać 11 do dowolnej potęgi:
[edytuj] Obliczanie 11n
- Weź n-ty rząd z trójkąta Pascala.
- Wypisz liczby w słupku tak jak przy mnożeniu pisemnym (z przesunięciem o jedno miejsce w lewo).
- Dodaj kolumnami.
Przykład:
Obliczmy 115 - piąty rząd trójkąta Pascala wygląda następująco: 1, 5, 10, 10, 5, 1, co zapisujemy:
1 5 10 10 5 + 1 = 161051
i po sumowaniu w kolumnach otrzymujemy wynik.