matematykaszkolna.pl
Obrót wektora 3W Q: Mamy dwa wektory jednostkowe v1= [x, y, z] oraz v2 = [0, 0, −1]. Należy wyznaczyć macierz M która spełni równanie: v1 = v2 * M;
21 gru 03:26
Q: Już mam rozwiązanie. Jakby ktoś miał podobny problem to poniżej kod programu matlab / octave: v1 = [x, y, z]; v2 = [0, 0, −1]; sqrtxy = sqrt(x2 + y2); sqrtxyz = sqrt(x2 + y2 + z2); %rotacja wokół osi OZ −> ustawiamy wektor w płaszczyźnie XOZ M1 = [y/sqrtxy, −x/sqrtxy, 0; x/sqrtxy, y/sqrtxy, 0; 0, 0, 1]; %rotacja o wokół osi OX o kąt L+180 st M2 = [1, 0, 0; 0, −z/sqrtxyz, sqrtxy/sqrtxyz; 0, −sqrtxy/sqrtxyz, −z/sqrtxyz]; M = M2 * M1; vrot = M * [x; y; z];
21 gru 05:44
MQ: Kod w MatLabie funkcji, która oblicza macierz przekształcenia wektora v2 w zadany na wejściu vektor v1. function M=macierz(v1) v2=[0,0,−1] M=v2 \ v1 i tyle całego kodu, chociaż moim zdaniem równanie wyjściowe powinno być: v1=M*v2 i wtedy interesująca nas linijka kodu powinna być: M=v1 / v2
21 gru 09:05
Q: Faktycznie, źle zapisałem równanie, powinno być v1=M*v2 (co zresztą poprawiłem w ostatniej linijce rozwiązania). Akurat ten algorytm nie ma być wykorzystany w MatLabie, tylko w procesorze ARM Cortex M3. Tam akurat bardzo dobrze działają wbudowane funkcje liczenia pierwiastka, sinusów i kosinusów. Ale do tego potrzeba mieć rozwiązanie matematyczne, a nie iteracyjne. Dlatego zapytałem na forum rozwiązywania zadań. Jeśli ktoś zna jeszcze inny sposób rozwiązania tego zadania, to z chęcią się zapoznam.
21 gru 14:55