Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision | ||
inner_product [2008/12/12 21:26] joanna |
inner_product [2008/12/12 21:42] (aktualna) joanna poprawka listy |
||
---|---|---|---|
Linia 19: | Linia 19: | ||
\\ | \\ | ||
- | =====Wariant pierwszy, loczyn skalarny euklidesowy===== | + | =====Wariant pierwszy - iloczyn skalarny euklidesowy===== |
Prostsza z deklaracji ''inner_product'' udostępnia inerfejs do obliczenia zwykłego iloczynu skalarnego, znanego z geometrii euklidesowej. | Prostsza z deklaracji ''inner_product'' udostępnia inerfejs do obliczenia zwykłego iloczynu skalarnego, znanego z geometrii euklidesowej. | ||
===Parametery=== | ===Parametery=== | ||
- | * //first1// iterator, który wskazuje na początek kolekcji pierwszej\\ | + | * //first1// iterator, który wskazuje na początek kolekcji pierwszej\\ |
- | * //last1// iterator, który wskazuje na koniec kolekcji pierwszej\\ | + | * //last1// iterator, który wskazuje na koniec kolekcji pierwszej\\ |
- | * //first2// iterator, który wskazuje na początek kolekcji drugiej\\ | + | * //first2// iterator, który wskazuje na początek kolekcji drugiej\\ |
- | * //init// wartość początkowa wyniku\\ | + | * //init// wartość początkowa wyniku\\ |
===Działanie=== | ===Działanie=== | ||
Linia 55: | Linia 55: | ||
=====Wariant drugi - iloczyn skalarny zdefinowany przez użytkownika===== | =====Wariant drugi - iloczyn skalarny zdefinowany przez użytkownika===== | ||
Druga z deklaracji ''inner_product'' jest poszerzona o dwa parametry:\\ | Druga z deklaracji ''inner_product'' jest poszerzona o dwa parametry:\\ | ||
- | * //binary_op1// operacja dwuargumentowa, która zastąpi dodawanie\\ | + | * //binary_op1// operacja dwuargumentowa, która zastąpi dodawanie\\ |
- | * //binary_op2// operacja dwuargumentowa, która zastąpi mnożenie\\ | + | * //binary_op2// operacja dwuargumentowa, która zastąpi mnożenie\\ |
===Działanie=== | ===Działanie=== | ||
Linia 97: | Linia 97: | ||
plus<ComplexInt>(), multiplies_conj<ComplexInt>()); //zamiast zwykłego mnożenia - mnożenie przez liczbę sprzężoną | plus<ComplexInt>(), multiplies_conj<ComplexInt>()); //zamiast zwykłego mnożenia - mnożenie przez liczbę sprzężoną | ||
- | cout<<"Iloczyn skalarny = "<<complexInner<<endl; //Iloczyn skalarny = (11,4) | + | cout<<"Iloczyn skalarny = "<<complexInner<<endl; //Iloczyn skalarny = (11,4) |
</code> | </code> | ||
====Zastosowanie inner_product==== | ====Zastosowanie inner_product==== | ||
Możliwych zastosowań ''inner_product'' można wymyśleć tyle, ile jest różnych przestrzeni z działaniem iloczynu skalarnego. Wiele problemów, niekoniecznie matematycznych, można wyrazić w postaci obliczania iloczynu skalarnego. Łatwo na przykład zastosować ten sposób obliczeń do porównywania ciągów znaków, do obliczania dopasowania do wzorca. Operacja iloczynu skalarnego jest dość prosta i szybka, dlatego warto z niej skorzystać w swoich projektach. | Możliwych zastosowań ''inner_product'' można wymyśleć tyle, ile jest różnych przestrzeni z działaniem iloczynu skalarnego. Wiele problemów, niekoniecznie matematycznych, można wyrazić w postaci obliczania iloczynu skalarnego. Łatwo na przykład zastosować ten sposób obliczeń do porównywania ciągów znaków, do obliczania dopasowania do wzorca. Operacja iloczynu skalarnego jest dość prosta i szybka, dlatego warto z niej skorzystać w swoich projektach. | ||
+ | |||
+ | ====Przykładowy kod==== | ||
+ | Fragmenty kodu użyte w artykule znajdują się w pliku {{stl_algorytmy:inner_product.cpp | inner_product.cpp}}. Tam też można znaleźć przykład, jak policzyć kąt pomiędzy wektorami przy pomocy funkcji ''inner_product''. | ||