/*Ejemplo tomado de: Kalman, D. (s.f.). An Undetermined Linear System for GPS. The Mathematical Association of America.*/ /*Sistema de ecuaciones lineales subdeterminado*/ S(P0,t0):=(P-P0).(P-P0)-(0.047*(t-t0))^2; P:[x,y,z]; ec1:S([1,2,0],19.9); ec2:S([2,0,2],2.4); ec3:S([1,1,1],32.6); ec4:S([2,1,0],19.9); /*SEL determinante resultante al restar ec1 a cada ecuación del sistema*/ Ec1:expand(ec2-ec1); Ec2:expand(ec3-ec1); Ec3:expand(ec4-ec1); /*Solución del SEL con t libre*/ solns:solve([Ec1,Ec2,Ec3],[x,y,z]); val:solns[1]; /*Sustitución de x, y, z en ec1*/ Ec:expand(psubst([x=rhs(val[1]),y=rhs(val[2]),z=rhs(val[3])],ec1)); /*Solución de ec1 (valores de t)*/ t_val:float(solve(Ec,t)); /*Posibles puntos (x,y,z) de ubicación del GPS*/ x1:subst(rhs(t_val[1]),t,rhs(val[1])); y1:subst(rhs(t_val[1]),t,rhs(val[2])); z1:subst(rhs(t_val[1]),t,rhs(val[3])); P1:[x1,y1,z1]; x2:subst(rhs(t_val[2]),t,rhs(val[1])); y2:subst(rhs(t_val[2]),t,rhs(val[2])); z2:subst(rhs(t_val[2]),t,rhs(val[3])); P2:[x2,y2,z2]; /*Identificación del punto correcto*/ L1:sqrt(P1.P1); L2:sqrt(P2.P2); if 1