此编码来自MATLAB。所以,我有3个方程式,我做了三个未知数,但是当我试图解决未知数时,它们只是作为[1x1 sym]出现,我尝试了很多像double或vpa这样的东西,但它仍然不起作用。请帮帮忙,谢谢你们。这是我的代码,直到现在。
h=3.5; % height in meter
m=20; % mass of traffic light in kg
W=m*9.81; %Weight of the traffic light
Bx=3;
By=4;
Bz=(4-h);
Cx=-6;
Cy=-3;
Cz=(6-h);
Dx=4;
Dy=-3;
Dz=(4-h);
AB=[Bx By Bz]; %Position vector of AB
AC=[Cx Cy Cz]; %Position vector of AC
AD=[Dx Dy Dz]; %Position vector of AD
Mag_AB= sqrt(Bx^2+By^2+Bz^2); %Magnitude of AB
Mag_AC= sqrt(Cx^2+Cy^2+Cz^2); %Magnitude of AC
Mag_AD= sqrt(Dx^2+Dy^2+Dz^2); %Magnitude of AD
u_AB= AB/Mag_AB; %Unit vector of AB
u_AC= AC/Mag_AC; %Unit Vector of AC
u_AD= AD/Mag_AD; %Unit vector of AD
u_W=[0 0 -1];
syms B C D
eq1=(u_AB(1)*B+u_AC(1)*C+u_AD(1)*D);
eq2=(u_AB(2)*B+u_AC(2)*C+u_AD(2)*D);
eq3=(u_AB(3)*B+u_AC(3)*C+u_AD(3)*D)-u_W(1)*W;
sol=solve(eq1,eq2,eq3,B,C,D)
它给我的答案是 sol =
B: [1x1 sym]
C: [1x1 sym]
D: [1x1 sym]
答案 0 :(得分:0)
你真的不应该象征性地解决这些方程式。它看起来像一组homogeneous equations,因此当您使用符号方程求解时,B C和D的结果是微不足道的(全为零)。您可以使用svd
函数来获取特征值并求解一组齐次方程。在你的情况下,这将是
A = [u_AB' u_AC' u_AD'];
[u, s, v] = svd(A);
B = v(1, end);
C = v(2, end);
D = v(3, end);
residuals = A * v(:, end);
但是,我要小心你如何设置方程式。特别是-u_W(1)*W
中的eq3
字词。你是说-u_W(3)*W
吗?如果是这样,您必须将该字词添加到上面的A
矩阵中。无论如何,我希望一切顺利。
答案 1 :(得分:0)
(u_AB(1)*B+u_AC(1)*C+u_AD(1)*D)
?您需要以这种方式使用它,例如:
eq1 = (u_AB(1)*B+u_AC(1)*C+u_AD(1)*D) == 1;
现在是等式。
为什么你看不到结果:
eq1 = (6*101^(1/2)*B)/101 - (12*205^(1/2)*C)/205 + (8*101^(1/2)*D)/101 == 1
s = solve(eq1, B,C,D)
s.B
得到这个:
ans =
101^(1/2)/6
在此处详细了解solve