Standardní skalární součin
Pro standardní skalární součin $\langle \boldsymbol x,\boldsymbol y\rangle=\sum\limits_{i=1}^n x_i \overline{y_i}$ nad $\mathbb C^n$, resp $\mathbb R^n$
určete u následujících vektorů $\boldsymbol x$ a $\boldsymbol y$:
- skalární součin vektorů $\boldsymbol x$ a $\boldsymbol y$,
- euklidovské normy vektorů $\boldsymbol x$ a $\boldsymbol y$,
- vzdálenost vektorů $\boldsymbol x$ a $\boldsymbol y$,
- zdali jsou vektory $\boldsymbol x$ a $\boldsymbol y$ navzájem kolmé.
Nápověda:
Součiny x*y
a x.dot_product(y)
dávají $\sum\limits_{i=1}^n x_i y_i$ - a to i nad komplexními čísly!
Komplexně sdružený vektor je možné získat metodou .conjugate()
.
```python
x = vector([4, 2, 3]); y = vector([1, 5, -2]);
x = vector([3, 1, -2]); y = vector([1, -3, 2]);
x = vector([2, -1, 4]); y = vector([5, 2, -2]);
x = vector([2, 1, 4, -1]); y = vector([4, -1, 0, 2]);
x = vector([2+i, 0, 4-5*i]); y = vector([1+i, 2+i, -1]);
x = vector([1, 2, 1, -2*i]); y = vector([i, 2*i, i-1, 2]);
```
Nestandardní skalární součin
Pro skalární součin na $\mathbb C^3$ daný předpisem
$\langle \boldsymbol x,\boldsymbol y\rangle= x_1\overline{y_1} + x_2\overline{y_2} + 2x_3\overline{y_3} + x_3\overline{y_2} + x_2\overline{y_3}$
určete u následujících vektorů $\boldsymbol x$ a $\boldsymbol y$:
- skalární součin vektorů $\boldsymbol x$ a $\boldsymbol y$,
- normy vektorů $\boldsymbol x$ a $\boldsymbol y$,
- zdali jsou vektory $\boldsymbol x$ a $\boldsymbol y$ navzájem kolmé.
Nápověda:
V sage (pythonu) je možné si nadefinovat vlastní součin pomocí konstrukce:
def soucin(x,y):
return(x[0]* ... )
```python
x = vector([4, 2, 3]); y = vector([1, 5, -2]);
x = vector([3, 1, -2]); y = vector([1, -3, 2]);
x = vector([2, -1, 4]); y = vector([5, 2, -2]);
x = vector([2+i, 0, 4-5*i]); y = vector([1+i, 2+i, -1]);
```
Gramova-Schmidtova ortonormalizace a kolmá projekce
V prostoru $\mathbb R^4$ se standardním skalárním součinem $\langle \boldsymbol x,\boldsymbol y\rangle=\sum\limits_{i=1}^4 x_iy_i$
určete podle Gramova-Schmidtova předpisu ortonormální bázi $Z=\{\boldsymbol z_1,\dots,\boldsymbol z_r\}$ řádkového prostoru následujících matic:
Nápověda:
Projekci vektoru $\boldsymbol u$ na vektor $\boldsymbol v$ jednotkové délky, čili $\langle \boldsymbol u,\boldsymbol v\rangle\boldsymbol v$, lze pro reálné vektory získat výrazem (u*v)*v
.
První řádek matice $\boldsymbol A$ je A[0]
, atd.
```python
matrix([
[0, 3, 4, 0],
[0, 0, 5, 0],
[2, 1, 0, 2]]);
matrix([
[ 2, 0, 1, 2],
[ 4, 3, 2, 4],
[ 6, -5, 3, 6],
[ -4, 2, 4, 2]]);
matrix([
[ 2, 4, 2, 1],
[ -1, -2, -2, -1],
[ 1, 2, 4, 2],
[ 1, 2, 3, 4]]);
```
Rozšiřte ortonormální báze z předchozí úlohy na ortonormální báze $\mathbb R^4$.
Nápověda:
Při výpočtu je možné využít odstupňovaný tvar matice A.rref()
.
```python
```
Pro matice z předchozí úlohy určete ortogonální projekci $\boldsymbol p$ vektoru $\boldsymbol a=(2,2,1,5)^{\mathrm T}$ do řádkového prostoru příslušné matice
a souřadnice této projekce $[\boldsymbol p]_Z$ vzhledem k bázi $Z$.
```python
a = vector([2, 2, 1, 5]);
```
Přibližné řešení soustavy lineárních rovnic
Pomocí projekce najděte nejlepší přibližné řešení soustavy $\boldsymbol A\boldsymbol x=\boldsymbol b$.
Všimněte si, že sloupce matice $\boldsymbol A$ jsou vzájemně kolmé.
```python
A = matrix([
[2 , 1 , 0],
[4 , 2 , 0],
[2 , -4 , -1],
[1 , -2 , 2]]);
b = vector([10, 5, 13, 9]);
```
Báze prostorů souvisejících s maticí
Pro následující matici $\boldsymbol A$ najděte ortonormální bázi $\ker(\boldsymbol A)$ a poté ji rozšiřte na bázi $\mathbb R^5$.
Také najděte ortonormální bázi jejího řádkového prostoru $\boldsymbol A$ a poté ji rozšiřte na bázi $\mathbb R^5$.
Jak spolu nalezené báze souvisejí?
```python
A = matrix([
[ 2, 0, 3, -6, 0],
[-5, 0, 3, 8, 0],
[ 7, 4, 0, -14, 3],
[-1, 1, -12, 10, 7],
[ 5, 7, -3, -8, -1]]);
```
Matice isometrie
Rozhodněte, zdali následující matice jsou matice isometrií vzhledem ke standardnímu skalárnímu součinu na prostoru $\mathbb R^d$ odpovídající dimenze $d$.
```python
1/2*matrix([
[ 1, 1, 1, 1],
[ 1, 1,-1,-1],
[ 1,-1, 0, 0],
[ 0, 0,-1, 1]]);
1/2*matrix([
[ 1, 1, 1, 1],
[ 1, 1,-1,-1],
[ 1,-1,-1, 1],
[ 1,-1, 1,-1]]);
1/sqrt(2)*matrix([
[ 1, 1, 0, 0],
[ 1,-1, 0, 0],
[ 0, 0,-1, 1],
[ 0, 0,-1,-1]]);
1/7*matrix([
[ 3, 2,-6],
[-6, 3, 2],
[ 2,-6, 3]]);
1/7*matrix([
[ 3, 2, 6],
[-6, 3, 2],
[ 2, 6,-3]]);
```