将符号转换为数字形象

时间:2016-02-11 02:44:29

标签: matlab

此编码来自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]

2 个答案:

答案 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)

  1. 首先,你的等式在哪里? 如何解决(u_AB(1)*B+u_AC(1)*C+u_AD(1)*D)
  2. 您需要以这种方式使用它,例如:

    eq1 = (u_AB(1)*B+u_AC(1)*C+u_AD(1)*D) == 1;
    

    现在是等式。

    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