现在时间是:
当前位置:首 页 >> Matlab>> 教学区>> 文章列表

第八组 作业六

作者:朱瑞雪 崔玉 杜若奇 曾天芝   发布时间:2019-06-11 17:39:06   浏览次数:42

1.问题:设 p1=[a1;b1;c1;d1] p2=[a2;b2;c2;d2] 分别表示两个四元数 p1=a1+b1*i+c1*j+d1*k p2=a2+b2*i+c2*j+d2*k ,编写程序求 p=q1*q2

           1)设 p=a+b*i+c*j+d*k 则可用 p=[a; b; c; d] 表示.

           2)令

          A=[a1 -b1 -c1 -d1

            b1 a1 -d1 c1

            c1 d1 a1 -b1

            d1 -c1 b1 a1],

          p=A*p2.

   分析:根据四元数运算法则及矩阵与向量的乘积运算规则,建立函数,即可编成相应程序。

   代码:

%建立四元数乘积运算的函数

function q=sys3(q1,q2)

syms i1 i2 i3;

syms a0 b0 c0 d0 q1 q2;

q1=input('q1=');

q2=input('q2=');

a0=q1(1)*q2(1)-q1(2)*q2(2)-q1(3)*q2(3)-q1(4)*q2(4);

b0=q1(1)*q2(2)+q1(2)*q2(1)+q1(3)*q2(4)-q1(4)*q2(3);

c0=q1(1)*q2(3)+q1(3)*q2(1)+q1(4)*q2(2)-q1(2)*q2(4);

d0=q1(1)*q2(4)+q1(4)*q2(1)+q1(2)*q2(3)-q1(3)*q2(2);

q=a0+b0*i1+c0*i2+d0*i3;

 

   实验结果:

>> sys3

q1=[1 2 3 4]

q2=[1 2 3 4]

 

ans =

 

4*i1 + 6*i2 + 8*i3 - 28

  

2.问题:设 q1= 2+1*i+3*j+4*k q2=0+1*i+1*j-1*k,利用习题1中编写的程序计算 p=p1*p2, 并且利用 Bj Bi Bk 画图解释四元数乘积与旋转之间的关系。

   分析:运行习题一程序直接输入向量q1,q2,进行运算即可。而解释四元数乘积与旋转之间的关系,则以单位化的四元数用来描述旋转。以原点为旋转中心,旋转的轴是(a,b,c)a^2 + b^2 + c^2 = 1),转θ角的旋转,用四元数表示就是,Q = (cos(θ/2),a*sin(θ/2), b*sin(θ/2), c*sin(θ/2))

   代码:

syms q1 q2 q t x y z a b c;

q=sys3(q1,q2)

t=[0:0.1:20];%t为旋转角度

a=input('a=');b=input('b=');c=input('c=');%其中(a,b,c)为旋转轴

x=a*sin(t/2);y=b*cos(t/2);z=c*sin(t/2);

plot3(x,y,z,'.')

   实验结果:

>> Untitled

q1=[2 1 3 4]

q2=[0 1 1 -1]

 

q =

 

7*i2 - 5*i1 - 4*i3

 

a=1

b=2

c=6








上一篇:没有了    下一篇:没有了

Copyright ©2019    计算数学达人 All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 |燕窝 版权所有 © 2005-2019 lingw.net.粤ICP备16125321号 -5