Wpisany przez Bartosz Bednarczyk,
11 lipca 2011 10:51
Definicja Symbolu Newtona
Symbol Newtona jest to funkcja dwóch argumentów. Definiujemy ją jako:
Zastosowanie Symbolu Newtona
Dzięki Symbolowi Newtona, możemy wyznaczyć liczbę kombinacji, czyli liczbę podzbiorów k-wyrazowych danego zbioru n-elementowego. Może to się wydawać trudne, ale postaram się to zilustrować przykładem:
Wyobraźmy sobie, że posiadamy półkę na której są cztery książki - biała, zielona, niebieska i czerwona. Na ile sposobów możemy z niej zdjąć dwie książki?
Do tego właśnie przydaje się wzór, który podałem powyżej. Oczywiście możemy liczyć to ręcznie, wtedy powinniśmy dostać dokładnie 6 kombinacji. Skąd się wzięła ta liczba? Już tłumaczę.
Zdefiniujmy najpierw sobie naszą półkę, czyli zbiór {b, z, n, c}.
Elementami są pierwsze litery kolorów książek. Wszystkie kombinacje to:
Wyznaczanie wartości Symbolu Newtona
Zanim pokażę, jak szybko obliczać wartość Symbolu Newtona, trzeba przytoczyć kilka istotnych własności tej funkcji. Otóż:
Bardzo interesującą własnością Symbolu Newtona jest to, ze jego wartości układają tzw. Trójkąt Pascala:
Każdy numer kolumny oznacza n, a wiersz k
Na podstawie tych spostrzeżeń, możemy ułożyć wzór iteracyjny oraz rekurencyjny.
Wzór iteracyjny opera się o założenie o występowaniu czynników pierwszych w ciągach kolejnych liczb.
Wartość Symbolu Newtona możemy również policzyć rekurencyjnie ze wzoru:
Sprawdzanie parzystości Symbolu Newtona
Kolejnym problemem związanym z Symbolem Newtona jest sprawdzanie czy jego wartość jest parzysta.
Można oczywiście obliczać całe wyrażenie i ocenić jego podzielność przez dwa, ale jest dużo prostszy sposób:
Twierdzenie Lagrange'a
Jeżeli liczba dwójek w rozkładzie n! jest większa od liczby dwójek w rozkładzie k!(n-k)! to wartość symbolu newtona jest parzysta.
Wytłumaczę to twierdzenie na przykładzie:
Zapiszmy sobie przykładowy symbol i rozbijmy go na czynniki pierwsze.
Następnie zliczamy ilość dwójek i zapisujemy.
Stosunek dwójek: 3/2
Licznik jest większy od mianownika, więc wartość symbolu jest parzysta.
Jest jednak jeszcze szybszy sposób na sprawdzanie tej własności.
Twierdzenie
Jeżeli n|k = n to wartość symbolu newtona jest nieparzysta.
Teraz wystarczy tylko, że użyjemy alternatywy bitowej i od razu wiemy, czy wartość symbolu jest parzysta czy nie.
Czyli jeżeli weźmiemy symbol z przykładu powyżej otrzymamy: 5|3 = 7, zatem wartość symbolu jest parzysta.
Dwumian Newtona i trójkąt Pascala
Dwumian Newtona jest to wzór, dzięki któremu możemy rozwinąć potęgę dwumianu (a + b)n w sumę jednomianów.
Postać takiego jednomianu to axkyl, przy czym zachodzi własność: k + l = n. Oczywiście pamiętamy, ze a jest liczbą naturalną. Taki współczynnik jest nazywany współczynnikiem dwumianowym. Jest on także symbolem Newtona.
Bardzo interesująca własnością jest, ze współczynniki dwumianowe układają tzw. trójkąt Pascala:
Dla (a + b)n sa to współczynniki n+1 wiersza. Przykłady:
1. (a + b)2 = a2 + 2ab + b2
2. (a + b)3 = a3 + 3a2b + 3ab2 + b3
Symbol Newtona jest to funkcja dwóch argumentów. Definiujemy ją jako:
{n\choose k}=\frac{n!}{k!(n-k)!}
Zapis taki czytamy n po k lub n nad k. Warto zapamiętać, że n oraz k są liczbami naturalnymi, oraz n ≥ k.Zastosowanie Symbolu Newtona
Dzięki Symbolowi Newtona, możemy wyznaczyć liczbę kombinacji, czyli liczbę podzbiorów k-wyrazowych danego zbioru n-elementowego. Może to się wydawać trudne, ale postaram się to zilustrować przykładem:
Wyobraźmy sobie, że posiadamy półkę na której są cztery książki - biała, zielona, niebieska i czerwona. Na ile sposobów możemy z niej zdjąć dwie książki?
Do tego właśnie przydaje się wzór, który podałem powyżej. Oczywiście możemy liczyć to ręcznie, wtedy powinniśmy dostać dokładnie 6 kombinacji. Skąd się wzięła ta liczba? Już tłumaczę.
Zdefiniujmy najpierw sobie naszą półkę, czyli zbiór {b, z, n, c}.
Elementami są pierwsze litery kolorów książek. Wszystkie kombinacje to:
- {b, z}
- {b, n}
- {b, c}
- {z, n}
- {z, c}
- {n, c}
{4\choose 2} = \frac{4!}{2!(4-2)!} = \frac{2*3*4}{2*2}=2*3 = 6
Wyznaczanie wartości Symbolu Newtona
Zanim pokażę, jak szybko obliczać wartość Symbolu Newtona, trzeba przytoczyć kilka istotnych własności tej funkcji. Otóż:
{n\choose 0}={n\choose n}=1\\\\\\
{n\choose k}={n\choose n-k}\\\\\\
{n\choose k}+{n\choose k+1}={n+1\choose k+1}
Bardzo interesującą własnością Symbolu Newtona jest to, ze jego wartości układają tzw. Trójkąt Pascala:
\begin{array}{ccccccccccc}
& & & & &1& & & & &\\
& & & &1& &1& & & &\\
& & &1& &2& &1& & &\\
& &1& &3& &3& &1& &\\
&1& &4& &6& &4& &1&\\
1& &5& &10& &10& &5& &1
\end{array}
Każdy numer kolumny oznacza n, a wiersz k
Na podstawie tych spostrzeżeń, możemy ułożyć wzór iteracyjny oraz rekurencyjny.
Wzór iteracyjny opera się o założenie o występowaniu czynników pierwszych w ciągach kolejnych liczb.
{n \choose k} = \frac{1*2*... * n}{1*2* ... * n * (1*2*... * (n-k))} = \frac{n(n-1)...(n-k+1)}{1*2*...*k}
Wartość Symbolu Newtona możemy również policzyć rekurencyjnie ze wzoru:
{n \choose k}=\begin{cases}
1& \text{dla } k=0 \vee n=k\\
{n-1 \choose k-1} + {n-1 \choose k}& \text{dla } 0 < k < n\\
\end{cases}
Sprawdzanie parzystości Symbolu Newtona
Kolejnym problemem związanym z Symbolem Newtona jest sprawdzanie czy jego wartość jest parzysta.
Można oczywiście obliczać całe wyrażenie i ocenić jego podzielność przez dwa, ale jest dużo prostszy sposób:
Twierdzenie Lagrange'a
Jeżeli liczba dwójek w rozkładzie n! jest większa od liczby dwójek w rozkładzie k!(n-k)! to wartość symbolu newtona jest parzysta.
Wytłumaczę to twierdzenie na przykładzie:
Zapiszmy sobie przykładowy symbol i rozbijmy go na czynniki pierwsze.
{5 \choose 3} = \frac{5!}{3!(5-3)!} = \frac{1*2*3*4*5}{1*2*3*1*2} = \frac{2*2*2*3*5}{2*2*3}
Następnie zliczamy ilość dwójek i zapisujemy.
Stosunek dwójek: 3/2
Licznik jest większy od mianownika, więc wartość symbolu jest parzysta.
Jest jednak jeszcze szybszy sposób na sprawdzanie tej własności.
Twierdzenie
Jeżeli n|k = n to wartość symbolu newtona jest nieparzysta.
Teraz wystarczy tylko, że użyjemy alternatywy bitowej i od razu wiemy, czy wartość symbolu jest parzysta czy nie.
Czyli jeżeli weźmiemy symbol z przykładu powyżej otrzymamy: 5|3 = 7, zatem wartość symbolu jest parzysta.
Dwumian Newtona i trójkąt Pascala
Dwumian Newtona jest to wzór, dzięki któremu możemy rozwinąć potęgę dwumianu (a + b)n w sumę jednomianów.
Postać takiego jednomianu to axkyl, przy czym zachodzi własność: k + l = n. Oczywiście pamiętamy, ze a jest liczbą naturalną. Taki współczynnik jest nazywany współczynnikiem dwumianowym. Jest on także symbolem Newtona.
Bardzo interesująca własnością jest, ze współczynniki dwumianowe układają tzw. trójkąt Pascala:
\begin{array}{ccccccccccc}
& & & & &1& & & & &\\
& & & &1& &1& & & &\\
& & &1& &2& &1& & &\\
& &1& &3& &3& &1& &\\
&1& &4& &6& &4& &1&\\
1& &5& &10& &10& &5& &1
\end{array}
Dla (a + b)n sa to współczynniki n+1 wiersza. Przykłady:
1. (a + b)2 = a2 + 2ab + b2
2. (a + b)3 = a3 + 3a2b + 3ab2 + b3
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Bartosz Bednarczyk | C# | obliczanie wartości iteracyjnie | .cs | .cs | ***** / 4 |
Bartosz Bednarczyk | C# | sprawdzanie parzystości (bitowo) | .cs | .cs | ***** / 1 |
Bartosz Bednarczyk | C# | sprawdzanie parzystości (tw. Lagrange'a) | .cs | .cs | ***** / 1 |
Bartosz Bednarczyk | C/C++ | obliczanie wartości iteracyjnie | .cpp | .cpp | ***** / 7 |
Bartosz Bednarczyk | C/C++ | C++ obliczanie wartości iteracyjnie | .cpp | .cpp | ***** / 37 |
Bartosz Bednarczyk | C/C++ | sprawdzanie parzystości (bitowo) | .cpp | .cpp | ***** / 0 |
Bartosz Bednarczyk | C/C++ | C++ sprawdzanie parzystości (bitowo) | .cpp | .cpp | ***** / 1 |
Bartosz Bednarczyk | C/C++ | sprawdzanie parzystości (tw. Lagrange'a) | .cpp | .cpp | ***** / 0 |
Bartosz Bednarczyk | C/C++ | C++ sprawdzanie parzystości (tw. Lagrange'a) | .cpp | .cpp | ***** / 1 |
Bartosz Bednarczyk | Java | obliczanie wartości iteracyjnie | .java | .java | ***** / 7 |
Bartosz Bednarczyk | Java | sprawdzanie parzystości (bitowo) | .java | .java | ***** / 0 |
Bartosz Bednarczyk | Java | sprawdzanie parzystości (tw. Lagrange'a) | .java | .java | ***** / 0 |
Bartosz Bednarczyk | Python | obliczanie wartości iteracyjnie | .py | .py | ***** / 8 |
Bartosz Bednarczyk | Python | sprawdzanie parzystości (bitowo) | .py | .py | ***** / 1 |
Bartosz Bednarczyk | Python | sprawdzanie parzystości (tw. Lagrange'a) | .py | .py | ***** / 0 |
Poprawiony: 30 stycznia 2013 22:46
https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B4sVlTS-6A45YzRhZTVkMTEtZDU3NC00ZDk2LTlhNDktNTQxNDk0YTllOWEy&hl=pl