Clear Filters
Clear Filters

I need some help to solve non-linear equation with three unknowns and three knowns with having 170 different values for one known.

1 view (last 30 days)
Xw, Yw, Zw (170 * 1 matrices) are known with 170 different values.
Xe, Ye, Ze are the unknowns.
Tx, Ty, Tz, Rx, Ry, Rz, and neta are some of other knowns.
I want to find the values for Xe, Ye, and Ze.

Accepted Answer

Torsten
Torsten on 21 Feb 2024
Edited: Torsten on 21 Feb 2024
M = [eta+1,Rz,-Ry;-Rz,eta+1,Rx;Ry,-Rx,eta+1];
M = repmat(M,170,1);
b = [];
for i = 1:170
b = [b;Xw(i)-Tx;Yw(i)-Ty;Zw(i)-Tz];
end
sol = M\b;
Xe = sol(1)
Ye = sol(2)
Ze = sol(3)
  6 Comments
Torsten
Torsten on 23 Feb 2024
:-)
M = [eta+1,Rz,-Ry;-Rz,eta+1,Rx;Ry,-Rx,eta+1];
dM = decomposition(M);
Xe = zeros(170,1);
Ye = zeros(170,1);
Ze = zeros(170,1);
for i = 1:170
b = [Xw(i)-Tx;Yw(i)-Ty;Zw(i)-Tz];
sol = dM\b;
Xe(i) = sol(1);
Ye(i) = sol(2);
Ze(i) = sol(3);
end

Sign in to comment.

More Answers (2)

Prabhath Manuranga
Prabhath Manuranga on 28 Feb 2024
Edited: Prabhath Manuranga on 28 Feb 2024
g_mean = g_i + 0.0424*H_i % Equation 01
H_i = (W_lvd - W_i)/g_mean % Equation 02
Here g_i, H_i, and W_i is known.
W_lvd is unkonwn.
There are 172 row values per g_i and H_i (170 by 1 matrix).
How to solve this?
  1 Comment
Torsten
Torsten on 28 Feb 2024
W_lvd = H_i.*(g_i+0.0424*H_i)+W_i
if you want W_lvd as a 170x1 matrix
W_lvd = 1/170*sum(H_i.*(g_i+0.0424*H_i)+W_i)
if you want W_lvd as the best approximate value for the vector values H_i.*(g_i+0.0424*H_i)+W_i

Sign in to comment.


Prabhath Manuranga
Prabhath Manuranga on 12 Mar 2024
Edited: Walter Roberson on 12 Mar 2024
X_ISMD = 995152.969208341;
Y_ISMD = 996113.117131325;
for i = 1:length(data1)
D1(i) = sqrt((X_ISMD - X_WGS84(i)).^2 + (Y_ISMD - Y_WGS84(i)).^2);
end
D1
length(data1) is 172. X_WGS84(i) and Y_WGS84(i) are 172 by 1 matrix. according to the above matlab code i ma getting following output (1 by 172 matrix). but i want to have 172 by 1 matrix. could you please suggest where should i change in my code? Thanks.
D1 =
Column 1
140911.995295475
Column 2
123232.133401588
Column 3
115208.35805542
Column 4
93127.1628328772
  1 Comment
Walter Roberson
Walter Roberson on 12 Mar 2024
X_ISMD = 995152.969208341;
Y_ISMD = 996113.117131325;
D1 = zeros(length(data1),1);
for i = 1:length(data1)
D1(i) = sqrt((X_ISMD - X_WGS84(i)).^2 + (Y_ISMD - Y_WGS84(i)).^2);
end
D1

Sign in to comment.

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!