/ / Преобразуване на символ в цифрова фигура - MATLAB

Преобразуване на символ в цифрова фигура - MATLAB

Това кодиране е от MATLAB. Така че, имам 3 уравнения и направих три неизвестни, но когато се опитах да реша за неизвестните, те просто излязоха като [1x1 sym], опитах толкова много неща като двойно или 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 за отговор № 1

Наистина не трябва да решавате символично за тези уравнения хомогенни уравнения, така че резултатът е тривиален (всички нула) за 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 матрица по-горе. Както и да е, надявам се, че всичко ще се получи добре.


0 за отговор № 2
  1. На първо място, къде е вашето уравнение наистина? как да се реши (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;

Сега е уравнението.

  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
    

    Прочетете повече за това тук решавам