function g = gpsQuadratic(d) format long; % (x-A1)^2 +(y-B1)^2 +(z-C1)^2 =[c(t1-d)]^2 % (x-A2)^2 +(y-B2)^2 +(z-C2)^2 =[c(t2-d)]^2 % (x-A3)^2 +(y-B3)^2 +(z-C3)^2 =[c(t3-d)]^2 % (x-A4)^2 +(y-B4)^2 +(z-C4)^2 =[c(t4-d)]^2 % vector = x={1;2;3;4;5} = verticle vector %Speed of light in km/s c=299792.458; %Given satellite positions A1=15600; B1=7540; C1=20140; t1=0.07074; A2=18760; B2=2750; C2=18610; t2=0.07220; A3=17610; B3=14630; C3=13480; t3=0.07690; A4=19170; B4=610; C4=18390; t4=0.07242; % f1 = (x-A1)^2 +(y-B1)^2 +(z-C1)^2 -(c*t1-c*d)^2 % f2 = (x-A2)^2 +(y-B2)^2 +(z-C2)^2 -(c*t2-c*d)^2 % f3 = (x-A3)^2 +(y-B3)^2 +(z-C3)^2 -(c*t3-c*d)^2 % f4 = (x-A4)^2 +(y-B4)^2 +(z-C4)^2 -(c*t4-c*d)^2 % mf = x*(2*A2-2*A1)+(A1^2 - A2^2) + y*(2*B2-2*B1)+(B1^2 - B2^2) + z*(2*C2-2*C1)+(C1^2 - C2^2) + (c^2*t2^2 - c^2*t1^2) + d(2*c^2*t1-2*c^2*t2); % ms = x*(2*A3-2*A1)+(A1^2 - A3^2) + y*(2*B3-2*B1)+(B1^2 - B3^2) + z*(2*C3-2*C1)+(C1^2 - C3^2) + (c^2*t3^2 - c^2*t1^2) + d(2*c^2*t1-2*c^2*t3); % mt = x*(2*A4-2*A1)+(A1^2 - A4^2) + y*(2*B4-2*B1)+(B1^2 - B4^2) + z*(2*C4-2*C1)+(C1^2 - C4^2) + (c^2*t4^2 - c^2*t1^2) + d(2*c^2*t1-2*c^2*t4); %name each row of the matrix f1, f2 and f3 %making each value as f1x, f1y, f1z and f1d (which is r13) %so r = f1x ; f1y ; f1z ; r13 ; r15 %r15 being the parts of the equation that do not have unknowns %f1 = x*(2*A2 -2*A1) + y*(2*B2 - 2*B1) + z*(2*C2 - 2*C1) + d*(2*c^2(t1-t2)) + A1^2 - A2^2 + B1^2 - B2^2 + C1^2 - C2^2 + c^2*(-t1^2) + c^2*t2^2 f1x = 2*A2-2*A1; f1y = 2*B2-2*B1; f1z = 2*C2-2*C1; f1d = 2*c^2*(t1-t2); %r14 f1r15 = -(A1^2 - A2^2 + B1^2 - B2^2 + C1^2 - C2^2 + c^2*(t2^2-t1^2)); %f2 = x*(2*A3 - 2*A1) + y*(2*B3 - 2*B1) + z*(2*C3 - 2*C1) + d*(2*c^2(t1-t3)) + A1^2 - A3^2 + B1^2 - B3^2 + C1^2 - C3^2 + c^2*(-t1^2) + c^2*t3^2 f2x = 2*A3-2*A1; f2y = 2*B3-2*B1; f2z = 2*C3-2*C1; f2d = 2*c^2*(t1-t3); %r24 f2r25 = -(A1^2 - A3^2 + B1^2 - B3^2 + C1^2 - C3^2 + c^2*(t3^2-t1^2)); %f3 = x*(2*A4 - 2*A1) + y*(2*B4 - 2*B1) + z*(2*C4 - 2*C1) + d*(2*c^2(t1-t4)) + A1^2 - A4^2 + B1^2 - B4^2 + C1^2 - C4^2 + c^2*(-t1^2) + c^2*t4^2 f3x = 2*A4-2*A1; f3y = 2*B4-2*B1; f3z = 2*C4-2*C1; f3d = 2*c^2*(t1-t4); %34 f3r35 = -(A1^2 - A4^2 + B1^2 - B4^2 + C1^2 - C4^2 + c^2*(t4^2-t1^2)); %matrix r initialMatrix = [f1x, f1y, f1z, f1d, f1r15 ; f2x, f2y, f2z, f2d, f2r25 ; f3x, f3y, f3z, f3d, f3r35]; r = rref(initialMatrix); r14 = r(1,4); r15 = r(1,5); r24 = r(2,4); r25 = r(2,5); r34 = r(3,4); r35 = r(3,5); x = @(d) -r14*d + r15; y = @(d) -r24*d + r25; z = @(d) -r34*d + r35; %substitute into the first equation f = (x-A1)^2 +(y-B1)^2 +(z-C1)^2 - (c(t1-d))^2 f = @(d) (x(d) - A1)^2 + (y(d) - B1)^2 + (z(d) - C1)^2 - (c*(t1 - d))^2; %Quadratic formula variables qa = (r14^2 +r24^2 + r34^2 - c^2); qb = (2*A1*r14 - 2*r14*r15 + 2*B1*r24 - 2*r24*r25 + 2*C1*r34 - 2*r34*r35 + 2*c^2*t1); qc = (r15^2 - 2*A1*r15 + A1^2 + r25^2 - 2*B1*r25 + B1^2 + r35^2 - 2*C1*r35 + C1^2 - c^2*t1^2); % Solve part 1 d1 = (-qb + sqrt(qb^2 - 4*qa*qc))/(2*qa) x1 = x(d1) y1 = y(d1) z1 = z(d1) % Solve part 2 d2 = (-qb - sqrt(qb^2 - 4*qa*qc))/(2*qa) x2 = x(d2) y2 = y(d2) z2 = z(d2) end
d1 = -0.003201565829594 x1 = -41.772709570835708 y1 = -16.789194106525994 z1 = 6.370059559223344e+03 d2 = 0.185173047095946 x2 = -39.747837348164673 y2 = -1.342741443606669e+02 z2 = -9.413624553735766e+03