Állítsuk elő a 2. feladatban szereplő forgatásmátrixok segítségével egy ferde tengely körüli térbeli forgatás mátrixát! A tengely legyen koordinátarendszerünk origóján átmenő egyenes!
Segítség: Határozzuk meg mátrixunkat a következő transzformációk egymásutánjából! Először forgassuk el két forgatással a tér pontjait úgy, hogy a kiválasztott forgástengely átmenjen az $x$ tengely egyenesébe! Utána forgassunk az $x$ tengely körül $\alpha$ szöggel! Végül csináljuk vissza a kezdeti forgatásokat, hogy a kiválasztott forgástengely az $x$ tengelyből visszakerüljön a helyére! Így a végeredményt tekintve nyilván ennek a tengelynek a pontjai a helyükön maradnak.
Ellenőrzésül számoljuk ki a mátrix sajátértékeit! Azt kaptuk-e, amit kell?
Először meghívjuk a pylab
csomagot.
%pylab inline
Ezután definiálunk függvényeket, amik segítségével megkapjuk a bizonyos tengelyek körül elforgató mátrixokat.
def R_x(alpha):
'''Visszaadja az x tengely körül, alpha szöggel elforgató mátrixot'''
return matrix([[1, 0, 0], [0, cos(alpha), -sin(alpha)], [0, sin(alpha), cos(alpha)]])
def R_y(alpha):
'''Visszaadja az y tengely körül, alpha szöggel elforgató mátrixot'''
return matrix([[cos(alpha), 0, sin(alpha)], [0, 1, 0], [-sin(alpha), 0, cos(alpha)]])
def R_z(alpha):
'''Visszaadja a z tengely körül, alpha szöggel elforgató mátrixot'''
return matrix([[cos(alpha), -sin(alpha), 0], [sin(alpha), cos(alpha), 0], [0, 0, 1]])
A cél, hogy definiáljunk egy olyan függvényt, amely a megadott $\varphi$ és $\theta$ szöggel jellemezhető tengely körüli forgatást elvégző mátrixot állítja elő. Ezt, a feladatban leírt módszerel, oldhatjuk meg: Ha egy $v$ vektort el akarunk forgatni az adott tengely körül, akkor először a $z$ tengely körül forgatjuk el $-\varphi$ szöggel $z$ tengely körül, majd $-\theta$ szöggel $y$ tengely körül. Így a tengelyt bevittük $x$ tengelybe, vagyis, végre kell hajtani a forgatást $x$ körül, és az előző forgatásokat visszacsinálni. Ez alapján tehát: $$R \left(\alpha\right) = R_z \left(\varphi\right) R_y \left(-\theta\right) R_x \left(\alpha\right) R_y \left(\theta\right) R_z \left(-\varphi\right) $$
def R(alpha, phi, theta):
'''Visszaadja azt a mátrixot, amely a phi és theta szöggel jellemezhető tengely körül alpha szöggel fordít'''
return R_z(phi) * R_y(-theta) * R_x(alpha) * R_y(theta) * R_z(-phi)
Így a kérdéses mátrix:
M = R(pi/6, pi/3, pi/4)
M
A sajátértékproblámájának megoldása:
eig(M)
Két komplex, és egy valós, egyértékű sajátértéke van, ami valóban a forgásmátrixokra jellemző, ráadásul az 1 sajátértékhez tartozó sajátvektor komponensei is megfelelőek, úgyhogy tényleg azt a mátrixot kaptuk, amit kellett.