text: # Gramova–Schmidtova ortogonalizace
  Gramův-Schmidtův proces neboli Gramova-Schmidtova ortogonalizace (nesprávně Gram-Schmidtova ortogonalizace) je metoda, která v daném unitárním prostoru (neboli vektorovém prostoru se skalárním součinem) umožňuje pro zadanou konečnou množinu vektorů nalézt ortonormální bázi podprostoru jimi generovaného.
  
  ## Algoritmus
  Uvažujme pro jednoduchost {\displaystyle \mathbb {R} ^{m}} reálný lineární vektorový prostor sloupcových vektorů o {\displaystyle m} složkách (se standardním skalárním součinem). Nechť {\displaystyle a_{1},\ldots ,a_{n}\in \mathbb {R} ^{m}} jsou, opět pro jednoduchost, lineárně nezávislé, tedy {\displaystyle n\leq m}. Úkolem je nalézt ortonormální bázi {\displaystyle q_{1},\ldots ,q_{n}} {\displaystyle n}-rozměrného podprostoru {\displaystyle \mathbb {R} ^{m}}, který vektory {\displaystyle a_{i}} generují; má tedy platit
  {\displaystyle \mathrm {span} \{a_{1},\ldots ,a_{n}\}=\mathrm {span} \{q_{1},\ldots ,q_{n}\},\qquad \langle q_{k},q_{j}\rangle =q_{j}^{T}q_{k}=\delta _{k,j}}
  kde {\displaystyle \mathrm {span} } značí lineární obal množiny v závorce.
  Algoritmus danou sadu vektorů prochází postupně přičemž v každém kroku vygeneruje nový vektor hledané báze. Omezíme-li se pouze na první vektor, a protože požadujeme aby {\displaystyle \|q_{1}\|=1}, musí platit
  {\displaystyle a_{1}=q_{1}r_{1,1},\qquad {\text{kde}}\quad r_{1,1}=\|a_{1}\|_{2},}
  a dostáváme vztah pro výpočet prvního vektoru ortonormální báze {\displaystyle q_{1}=a_{1}/\|a_{1}\|_{2}}. Protože {\displaystyle a_{2}} je lineárně nezávislý na {\displaystyle a_{1}} a tedy i na {\displaystyle q_{1}}, můžeme ho vyjádřit jako
  {\displaystyle a_{2}=q_{1}r_{1,2}+q_{2}r_{2,2},}
  kde {\displaystyle q_{2}} je nějaký nový vektor takový, že {\displaystyle q_{1}^{T}q_{2}=0,\;\|q_{2}\|_{2}=1}. Po pronásobení předchozího vztahu {\displaystyle q_{1}^{T}} zleva,
  {\displaystyle q_{1}^{T}a_{2}=q_{1}^{T}q_{1}r_{1,2}+q_{1}^{T}q_{2}r_{2,2}=r_{1,2}}
  (připomeňme, že {\displaystyle q_{1}^{T}q_{1}=\|q_{1}\|_{2}^{2}=1}), dostaneme vztah pro výpočet {\displaystyle r_{1,2}} (ortogonalizační koeficient; tj. velikost projekce {\displaystyle a_{2}} do směru {\displaystyle q_{1}}). Protože známe {\displaystyle a_{2},\,q_{1},\,r_{1,2}} dostáváme
  {\displaystyle a_{2}-q_{1}r_{1,2}=q_{2}r_{2,2},\qquad {\text{kde}}\quad r_{2,2}=\|a_{2}-q_{1}r_{1,2}\|_{2}}
  je norma zbytku vektoru {\displaystyle a_{2}} po ortogonalizaci proti {\displaystyle q_{1}}. Všimněme si, že po dosazení za {\displaystyle r_{1,2}} dostáváme
  {\displaystyle a_{2}-q_{1}q_{1}^{T}a_{2}=(I_{m}-q_{1}q_{1}^{T})a_{2}=q_{2}r_{2,2},\qquad {\text{kde matice}}\quad (I_{m}-q_{1}q_{1}^{T})}
  není nic jiného, než ortogonální projektor do ortogonálního doplňku {\displaystyle \mathrm {span} \{q_{1}\}^{\perp }} lineárního obalu vektoru {\displaystyle q_{1}} v {\displaystyle \mathbb {R} ^{m}}.
  Tento postup lze zřejmě opakovat do vyčerpání všech vektorů {\displaystyle a_{k}}.
  Algoritmicky zapsáno:
  00: vstup {\displaystyle a_{1},\ldots ,a_{n}}
  01: {\displaystyle r_{1,1}:=\|a_{1}\|_{2}}
  02: {\displaystyle q_{1}:=a_{1}/r_{1,1}}
  03: for {\displaystyle k:=2,\ldots ,n}
  04:     {\displaystyle p:=a_{k}}
  05:     for {\displaystyle j:=1,\ldots ,k-1}
  06:        {\displaystyle r_{j,k}:=q_{j}^{T}p=\langle p,q_{j}\rangle }
  07:     end
  08:     for {\displaystyle j:=1,\ldots ,k-1}
  09:        {\displaystyle p:=p-q_{j}r_{j,k}}
  10:     end
  11:     {\displaystyle r_{k,k}:=\|p\|_{2}}
  12:     {\displaystyle q_{k}:=p/r_{k,k}}
  13: end
  Tato varianta algoritmu se nazývá klasický Gramův-Schmidtův algoritmus (CGS) a je novější než varianta původní, dnes zvaná modifikovaný Gramův-Schmidtův algoritmus (MGS). MGS získáme z výše popsaného CGS prostým vypuštěním řádků 07 a 08, tedy, spojením obou vnitřních cyklů.
  
  ## Varianty algoritmu a jejich chování
  Oba algoritmy CGS i MGS jsou matematicky ekvivalentní, jejich reálné implementace mají výrazně odlišné chování.
  CGS algoritmus je výrazně paralelní. Výpočet první vnitřní smyčky (tj. výpočet koeficientů {\displaystyle r_{j,k}}) lze provádět nezávisle pro jednotlivá {\displaystyle j}; tedy, jednotlivá {\displaystyle r_{j,k}} mohu počítat na různých procesorech, jejich výpočet se neovlivňuje, nezávisí na sobe a může probíhat paralelně. Zatímco MGS je z tohoto pohledu sekvenční.
  Na druhou stranu výpočet pomocí MGS je numericky výrazně stabilnější než výpočet pomocí CGS, kde může, vlivem zaokrouhlovacích chyb, dojít k úplné ztrátě ortogonality mezi vektory {\displaystyle q_{1},\ldots ,q_{n}}.
  Označíme-li {\displaystyle Q_{k}=[q_{1},\ldots ,q_{k}]\in \mathbb {R} ^{m\times k},\;Q_{k}^{T}Q_{k}=I_{k}}, lze vztah pro ortogonalizaci vektoru {\displaystyle a_{k+1}} psát pomocí projektorů dvěma matematicky ekvivalentními způsoby
  {\displaystyle p:=(I_{m}-Q_{k}Q_{k}^{T})a_{k+1}=(I_{m}-q_{k}q_{k}^{T})\ldots (I_{m}-q_{2}q_{2}^{T})(I_{m}-q_{1}q_{1}^{T})a_{k+1}.}
  První projekce odpovídá výpočtu pomocí CGS, druhá postupná výpočtu pomocí MGS. Je zřejmé že CGS ortogonalizace (projekce) se počítá paralelně do všech směrů najednou, kdežto sekvenční ortogonalizace (projekce) MGS umožňuje v {\displaystyle j}-tém kroku částečně eliminovat chyby vzniklé zaokrouhlováním v předchozích krocích {\displaystyle (j-1),\ldots ,2,1}.
  Řešením v praxi používaným bývá tzv. klasický Gramův-Schmidtův algoritmus s iteračním zpřesněním (ICGS), který obsahuje dvě vnitřní smyčky jako CGS (je tedy paralelizovatelný), ale obě smyčky se provedou dvakrát (čímž se výrazně zlepší numerické vlastnosti, ztráta ortogonality mezi vektory {\displaystyle q_{i}} je pak dokonce menší než u MGS).
  
  ### Ztráta ortogonality
  Nechť {\displaystyle {\hat {Q}}_{n}} je matice vektorů spočtených pomocí některé varianty Gramova-Schmidtova algoritmu v počítači se standardní konečnou aritmetikou s plovoucí řádovou čárkou, tj. {\displaystyle {\hat {Q}}_{n}=Q_{n}+E_{n}\approx Q_{n}} a {\displaystyle {\hat {Q}}_{n}^{T}{\hat {Q}}_{n}\approx I_{n}}. Veličina
  {\displaystyle \|{\hat {Q}}_{n}^{T}{\hat {Q}}_{n}-I_{n}\|_{2}}
  se nazývá ztráta ortogonality a je jednou z klíčových veličin sloužících k posouzení kvality spočtené ortonormální báze.
  Uvažujme tzv. Lauchliho matici
  {\displaystyle A=\left[{\begin{array}{ccc}1&\ldots &1\\\rho &&0\\&\ddots &\\0&&\rho \end{array}}\right]\in \mathbb {R} ^{(n+1)\times n},\qquad n=20,\;\rho =10^{-7},\;\kappa _{2}(A)\approx 4.47\times 10^{7},}
  kde {\displaystyle \kappa _{2}(A)} je podmíněnost matice {\displaystyle A}.
  Uvažujeme-li standardní aritmetiku se strojovou přesností {\displaystyle \epsilon _{M}\approx 2.22\times 10^{-16}} (double), pak ztráta ortogonality odpovídající jednotlivým výše zmíněným algoritmům aplikovaným na danou Lauchliho matici, je ve druhém sloupci následující tabulky. Ve třetím sloupci je obecný vztah platný pro libovolnou matici {\displaystyle A}
  | Algoritmus | Ztráta ortogonality (Lauchliho matice) | Ztráta ortogonality (obecně)                    |
  | ---------- | -------------------------------------- | ----------------------------------------------- |
  | CGS        | {\displaystyle 2.2\times 10^{-2}}      | {\displaystyle \kappa _{2}^{2}(A)\epsilon _{M}} |
  | MGS        | {\displaystyle 2.2\times 10^{-9}}      | {\displaystyle \kappa _{2}(A)\epsilon _{M}}     |
  | ICGS       | {\displaystyle 2.4\times 10^{-16}}     | {\displaystyle \epsilon _{M}}                   |
  
  
  ## Vztah Gramova-Schmidtova algoritmu a QR rozkladu
  Srovnáním sloupcových vektorů {\displaystyle a_{k},\;q_{j}} a koeficientů {\displaystyle r_{j,k}} do matic,
  {\displaystyle A=[a_{1},\ldots ,a_{n}],\quad Q=[q_{1},\ldots ,q_{n}]\in \mathbb {R} ^{m\times n},\quad R=\left[{\begin{array}{cccc}r_{1,1}&r_{1,2}&\ldots &r_{1,n}\\0&r_{2,2}&\ldots &r_{2,n}\\\vdots &\ddots &\ddots &\vdots \\0&\ldots &0&r_{n,n}\end{array}}\right]\in \mathbb {R} ^{n\times n},}
  kde {\displaystyle Q^{T}Q=I_{n}} a {\displaystyle R} je čtvercová regulární matice dostáváme
  {\displaystyle A=QR}
  tedy QR rozklad matice {\displaystyle A} (pro ověření stačí porovnat {\displaystyle k}-tý sloupec rovnosti, tedy {\displaystyle a_{k}} s {\displaystyle k}-tým sloupcem součinu {\displaystyle QR}).
  
  ## Ortogonální polynomy
  Gramův-Schmidtův algoritmus lze aplikovat na prvky libovolného prostoru se skalárním součinem. Uvažujeme například prostor polynomů {\displaystyle {\mathcal {P}}(a,b)} se skalárním součinem
  {\displaystyle \langle p(x),q(x)\rangle _{w}=\int _{a}^{b}p(x)q(x)w(x)dx},
  kde {\displaystyle w(x)} je nějaká váhová funkce. Aplikací Gramova-Schmidtova algoritmu na sadu vektorů (polynomů) {\displaystyle 1,x,x^{2},\ldots ,x^{n-1}} (v tomto pořadí) dostáváme, pro vhodně volené {\displaystyle a,\,b} a váhovou funkci {\displaystyle w(x)} libovolnou sadu ortogonálních polynomů (normalizovanou vzhledem k normě indukované daným skalárním součinem).
  Pro {\displaystyle a=-1,\,b=1,\,w(x)=1} Gramův-Schmidtův algoritmus generuje Legenderovy polynomy,
  pro {\displaystyle a=-1,\,b=1,\,w(x)=(1-x^{2})^{-1/2}} dostaneme Čebyševovy polynomy prvního druhu,
  atd.
  
title: Gramova–Schmidtova ortogonalizace
wikitext: {{Upravit}}
  '''Gramův-Schmidtův proces''' neboli '''Gramova-Schmidtova ortogonalizace''' (nesprávně<ref>{{Citace elektronické monografie
   | titul = Internetová jazyková příručka
   | url = http://prirucka.ujc.cas.cz/?id=400#nadpis1
   | datum vydání = 
   | datum aktualizace = 
   | datum přístupu = 2011-10-31
   | vydavatel = Ústav pro jazyk český Akademie věd ČR
  }}</ref> ''Gram-Schmidtova ortogonalizace'') je metoda, která v daném [[unitární prostor|unitárním prostoru]] (neboli [[vektorový prostor|vektorovém prostoru]] se [[skalární součin|skalárním součinem]]) umožňuje pro zadanou [[konečná množina|konečnou množinu]] [[vektor]]ů nalézt [[Ortonormální báze|ortonormální bázi]] [[podprostor]]u jimi generovaného.
  
  == Algoritmus ==
  Uvažujme pro jednoduchost <math>\mathbb{R}^m</math> reálný lineární vektorový prostor sloupcových vektorů o <math>m</math> složkách (se standardním skalárním součinem). Nechť <math>a_1,\ldots,a_n\in\mathbb{R}^m</math> jsou, opět pro jednoduchost, [[Lineární nezávislost|lineárně nezávislé]], tedy <math>n\leq m</math>. Úkolem je nalézt ortonormální bázi <math>q_1,\ldots,q_n</math> <math>n</math>-rozměrného podprostoru <math>\mathbb{R}^m</math>, který vektory <math>a_i</math> generují; má tedy platit
  
  :<math>\mathrm{span}\{a_1,\ldots,a_n\}=\mathrm{span}\{q_1,\ldots,q_n\},\qquad \langle q_k,q_j\rangle=q_j^Tq_k = \delta_{k,j}</math>
  
  kde <math>\mathrm{span}</math> značí [[lineární obal]] množiny v závorce.
  
  [[Algoritmus]] danou sadu vektorů prochází postupně přičemž v každém kroku vygeneruje nový vektor hledané báze. Omezíme-li se pouze na první vektor, a protože požadujeme aby <math>\|q_1\|=1</math>, musí platit
  
  :<math>a_1 = q_1r_{1,1},\qquad \text{kde}\quad r_{1,1}=\|a_1\|_2,</math>
  
  a dostáváme vztah pro výpočet prvního vektoru ortonormální báze <math>q_1=a_1/\|a_1\|_2</math>. Protože <math>a_2</math> je lineárně nezávislý na <math>a_1</math> a tedy i na <math>q_1</math>, můžeme ho vyjádřit jako
  
  :<math>a_2 = q_1r_{1,2} + q_2r_{2,2},</math>
  
  kde <math>q_2</math> je nějaký nový vektor takový, že <math>q_1^Tq_2=0,\;\|q_2\|_2=1</math>. Po pronásobení předchozího vztahu <math>q_1^T</math> zleva,
  
  :<math>q_1^Ta_2 = q_1^Tq_1r_{1,2} + q_1^Tq_2r_{2,2}=r_{1,2}</math>
  
  (připomeňme, že <math>q_1^Tq_1=\|q_1\|_2^2=1</math>), dostaneme vztah pro výpočet <math>r_{1,2}</math> (ortogonalizační koeficient; tj. velikost projekce <math>a_2</math> do směru <math>q_1</math>). Protože známe <math>a_2,\,q_1,\,r_{1,2}</math> dostáváme
  
  :<math>a_2-q_1r_{1,2} = q_2r_{2,2}, \qquad\text{kde}\quad r_{2,2}=\|a_2-q_1r_{1,2}\|_2</math>
  
  je norma zbytku vektoru <math>a_2</math> po ortogonalizaci proti <math>q_1</math>. Všimněme si, že po dosazení za <math>r_{1,2}</math> dostáváme
  
  :<math>a_2-q_1q_1^Ta_2 = (I_m-q_1q_1^T)a_2 = q_2r_{2,2},\qquad\text{kde matice}\quad (I_m-q_1q_1^T)</math>
  
  není nic jiného, než [[ortogonální projektor]] do [[ortogonální doplněk|ortogonálního doplňku]] <math>\mathrm{span}\{q_1\}^\perp</math> lineárního obalu vektoru <math>q_1</math> v <math>\mathbb{R}^m</math>.
  
  Tento postup lze zřejmě opakovat do vyčerpání všech vektorů <math>a_k</math>.
  
  Algoritmicky zapsáno:
  
  :00: '''vstup''' <math>a_1,\ldots,a_n</math>
  :01: <math>r_{1,1} := \|a_1\|_2</math>
  :02: <math>q_1 := a_1/r_{1,1}</math>
  :03: '''for''' <math>k := 2,\ldots,n</math>
  :04: &nbsp;&nbsp;&nbsp; <math>p := a_k</math>
  :05: &nbsp;&nbsp;&nbsp; '''for''' <math>j := 1,\ldots,k-1</math>
  :06: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <math>r_{j,k} := q_j^Tp = \langle p,q_j\rangle</math>
  :07: &nbsp;&nbsp;&nbsp; '''end'''
  :08: &nbsp;&nbsp;&nbsp; '''for''' <math>j := 1,\ldots,k-1</math>
  :09: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <math>p := p - q_jr_{j,k}</math>
  :10: &nbsp;&nbsp;&nbsp; '''end'''
  :11: &nbsp;&nbsp;&nbsp; <math>r_{k,k} := \|p\|_2</math>
  :12: &nbsp;&nbsp;&nbsp; <math>q_k := p/r_{k,k}</math>
  :13: '''end'''
  
  Tato varianta algoritmu se nazývá '''klasický Gramův-Schmidtův algoritmus (CGS)''' a je novější než varianta původní, dnes zvaná '''modifikovaný Gramův-Schmidtův algoritmus (MGS)'''. MGS získáme z výše popsaného CGS prostým vypuštěním řádků 07 a 08, tedy, spojením obou vnitřních cyklů.
  
  == Varianty algoritmu a jejich chování ==
  Oba algoritmy CGS i MGS jsou matematicky ekvivalentní, jejich reálné implementace mají výrazně odlišné chování.
  
  CGS algoritmus je výrazně paralelní. Výpočet první vnitřní smyčky (tj. výpočet koeficientů <math>r_{j,k}</math>) lze provádět nezávisle pro jednotlivá <math>j</math>; tedy, jednotlivá <math>r_{j,k}</math> mohu počítat na různých procesorech, jejich výpočet se neovlivňuje, nezávisí na sobe a může probíhat paralelně. Zatímco MGS je z tohoto pohledu sekvenční.
  
  Na druhou stranu výpočet pomocí MGS je numericky výrazně stabilnější než výpočet pomocí CGS, kde může, vlivem zaokrouhlovacích chyb, dojít k úplné ztrátě ortogonality mezi vektory <math>q_1,\ldots,q_n</math>.
  
  Označíme-li <math>Q_{k}=[q_1,\ldots,q_{k}]\in\mathbb{R}^{m\times k},\;Q_{k}^TQ_{k}=I_{k}</math>, lze vztah pro ortogonalizaci vektoru <math>a_{k+1}</math> psát pomocí projektorů dvěma matematicky ekvivalentními způsoby
  
  :<math>p := (I_m-Q_{k}Q_{k}^T)a_{k+1}=(I_m-q_kq_k^T)\ldots(I_m-q_2q_2^T)(I_m-q_1q_1^T)a_{k+1}.</math>
  
  První projekce odpovídá výpočtu pomocí CGS, druhá postupná výpočtu pomocí MGS. Je zřejmé že CGS ortogonalizace (projekce) se počítá paralelně do všech směrů najednou, kdežto sekvenční ortogonalizace (projekce) MGS umožňuje v <math>j</math>-tém kroku částečně eliminovat chyby vzniklé zaokrouhlováním v předchozích krocích <math>(j-1),\ldots,2,1</math>.
  
  Řešením v praxi používaným bývá tzv. '''klasický Gramův-Schmidtův algoritmus s iteračním zpřesněním (ICGS)''', který obsahuje dvě vnitřní smyčky jako CGS (je tedy paralelizovatelný), ale obě smyčky se provedou dvakrát (čímž se výrazně zlepší numerické vlastnosti, ztráta ortogonality mezi vektory <math>q_i</math> je pak dokonce menší než u MGS).
  
  === Ztráta ortogonality ===
  Nechť <math>\hat{Q}_n</math> je matice vektorů spočtených pomocí některé varianty Gramova-Schmidtova algoritmu v počítači se standardní konečnou aritmetikou s plovoucí řádovou čárkou, tj. <math>\hat{Q}_n=Q_n+E_n\approx Q_n</math> a <math>\hat{Q}_n^T\hat{Q}_n\approx I_n</math>. Veličina
  
  :<math>\|\hat{Q}_n^T\hat{Q}_n-I_n\|_2</math>
  
  se nazývá '''ztráta ortogonality''' a je jednou z klíčových veličin sloužících k posouzení kvality spočtené ortonormální báze.
  
  Uvažujme tzv. '''Lauchliho matici'''<ref>{{Citace elektronické monografie
   | titul = Lauchli matrix
   | url = http://math.nist.gov/MatrixMarket/deli/Lauchli/information.html
   | datum vydání = 
   | datum aktualizace = 
   | datum přístupu = 2011-11-03
   | vydavatel = Matrix Market
  }}</ref>
  
  :<math>A=\left[\begin{array}{ccc}1&\ldots&1\\\rho&&0\\&\ddots&\\0&&\rho\end{array}\right]\in\mathbb{R}^{(n+1)\times n}, \qquad n=20,\; \rho=10^{-7},\; \kappa_2(A)\approx 4.47\times10^7,</math>
  
  kde <math>\kappa_2(A)</math> je [[Podmíněnost matice|podmíněnost]] matice <math>A</math>.
  Uvažujeme-li standardní aritmetiku se [[Strojová přesnost|strojovou přesností]] <math>\epsilon_M\approx2.22\times10^{-16}</math> (double), pak ztráta ortogonality odpovídající jednotlivým výše zmíněným algoritmům aplikovaným na danou Lauchliho matici, je ve druhém sloupci následující tabulky. Ve třetím sloupci je obecný vztah platný pro libovolnou matici <math>A</math>
  
  {| class="wikitable"
  |+ 
  ! Algoritmus
  ! Ztráta ortogonality (Lauchliho matice)
  ! Ztráta ortogonality (obecně)
  |-
  |CGS
  |<math>2.2\times10^{-2}</math>
  |<math>\kappa_2^2(A)\epsilon_M</math>
  |-
  |MGS
  |<math>2.2\times10^{-9}</math>
  |<math>\kappa_2(A)\epsilon_M</math>
  |-
  |ICGS
  |<math>2.4\times10^{-16}</math>
  |<math>\epsilon_M</math>
  |-
  |}
  
  == Vztah Gramova-Schmidtova algoritmu a QR rozkladu ==
  Srovnáním sloupcových vektorů <math>a_k,\;q_j</math> a koeficientů <math>r_{j,k}</math> do matic,
  
  :<math>A=[a_1,\ldots,a_n],\quad Q=[q_1,\ldots,q_n]\in\mathbb{R}^{m\times n},\quad R=\left[\begin{array}{cccc}r_{1,1}&r_{1,2}&\ldots&r_{1,n} \\ 0&r_{2,2}&\ldots&r_{2,n}\\\vdots&\ddots&\ddots&\vdots\\0&\ldots&0&r_{n,n}\end{array}\right]\in\mathbb{R}^{n\times n},</math>
  
  kde <math>Q^TQ=I_n</math> a <math>R</math> je čtvercová [[regulární matice]] dostáváme
  
  :<math>A=QR</math>
  
  tedy [[QR rozklad]] matice <math>A</math> (pro ověření stačí porovnat <math>k</math>-tý sloupec rovnosti, tedy <math>a_k</math> s <math>k</math>-tým sloupcem součinu <math>QR</math>).
  
  == Ortogonální polynomy ==
  Gramův-Schmidtův algoritmus lze aplikovat na prvky libovolného prostoru se skalárním součinem. Uvažujeme například prostor polynomů <math>\mathcal{P}(a,b)</math> se skalárním součinem
  
  :<math>\langle p(x),q(x)\rangle_w = \int_a^b p(x)q(x)w(x)dx</math>,
  
  kde <math>w(x)</math> je nějaká [[váhová funkce]]. Aplikací Gramova-Schmidtova algoritmu na sadu vektorů (polynomů) <math>1,x,x^2,\ldots,x^{n-1}</math> (v tomto pořadí) dostáváme, pro vhodně volené <math>a,\,b</math> a váhovou funkci <math>w(x)</math> libovolnou sadu [[Ortogonální polynomy|ortogonálních polynomů]] (normalizovanou vzhledem k normě indukované daným skalárním součinem).
  
  Pro <math>a=-1,\,b=1,\,w(x)=1</math> Gramův-Schmidtův algoritmus generuje [[Legenderovy polynomy]],
  pro <math>a=-1,\,b=1,\,w(x)=(1-x^2)^{-1/2}</math> dostaneme [[Čebyševovy polynomy]] prvního druhu,
  atd.
  
  == Reference ==
  <references/>
  
  == Literatura ==
  * [[Gene H. Golub|Gene Howard Golub]], Charles F. Van Loan: ''Matrix Computations'', Johns Hopkins University Press, 1996 (3rd Ed.). (Zejména kapitoly 5.2.7 CGS, 5.2.8 MGS a 5.2.9 Work and Accuracy.)
  * J. Duintjer Tebbens, I. Hnětynková, M. Plešinger, [[Zdeněk Strakoš|Z. Strakoš]], P. Tichý: ''Analýza metod pro maticové výpočty, základní metody.'' Matfyzpress 2012. {{ISBN|978-80-7378-201-6}}. (Kapitola 3, Ortogonální transformace a QR rozklady, str. 53-88.)
  {{Autoritní data}}
  
  [[Kategorie:Lineární algebra]]
infoboxes: []