给出正交矩阵A的第一行,怎么用matlab求出这个矩阵
答案:1 悬赏:40 手机版
解决时间 2021-01-13 12:14
- 提问者网友:寂寞撕碎了回忆
- 2021-01-12 12:18
给出正交矩阵A的第一行,怎么用matlab求出这个矩阵
最佳答案
- 五星知识达人网友:往事埋风中
- 2021-01-12 12:29
一个很明显的n阶正交矩阵就是坐标系!
因此,我们可以对坐标系进行旋转,让旋转后的x轴与该向量重合。这样新的坐标系就是所要的正交矩阵。程序如下:
n = 4; % 这里以n=4为例
a = ones(1,n)/sqrt(n); % 第一行元素全为1/sqrt(n)
angle = zeros(size(a));
A = eye(n);
for i = n:-1:3 % 计算要旋转的各轴向角度
angle(i) = -atan2(a(i), norm(a(1:i-1)));
end
angle(2) = -atan2(a(2), a(1));
for i = 2:n % 旋转坐标系
R = eye(n);
R([1 i], [1 i]) = [cos(angle(i)) -sin(angle(i)); sin(angle(i)) cos(angle(i))];
A = R*A;
end
A % A为所求正交矩阵。
A'*A
因此,我们可以对坐标系进行旋转,让旋转后的x轴与该向量重合。这样新的坐标系就是所要的正交矩阵。程序如下:
n = 4; % 这里以n=4为例
a = ones(1,n)/sqrt(n); % 第一行元素全为1/sqrt(n)
angle = zeros(size(a));
A = eye(n);
for i = n:-1:3 % 计算要旋转的各轴向角度
angle(i) = -atan2(a(i), norm(a(1:i-1)));
end
angle(2) = -atan2(a(2), a(1));
for i = 2:n % 旋转坐标系
R = eye(n);
R([1 i], [1 i]) = [cos(angle(i)) -sin(angle(i)); sin(angle(i)) cos(angle(i))];
A = R*A;
end
A % A为所求正交矩阵。
A'*A
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯