Това кодиране е от 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
- На първо място, къде е вашето уравнение наистина? как да се реши
(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
Прочетете повече за това тук решавам