MATLAB Answers

solution of 3d nonlinear equation

51 views (last 30 days)
ali hassan
ali hassan on 29 Sep 2020 at 3:42
Edited: Walter Roberson on 30 Sep 2020 at 17:26
x_p, y_p, z_p=(4, 5, 2)
x_1, y_1, z_1=(8, 9, 5)
x_2, y_2, z_2=(2, 5, 1)
x_3, y_3, z_3=(6, 1, 3)
t_1=5.692820*10^-9
t_2=-2.924173*10^-9
t_3=-12.010097*10^-9
c=3.0*10^8
and my three equations are
eqn1 = sqrt((x(s)-x_p)^2+(y(s)-y_p)^2+(z(s)-z_p)^2)-sqrt((x(s)-x_1)^2+(y(s)-y_1)^2+(z(s)-z_2)^2)-(c*t_1)
eqn2 = sqrt((x(s)-x_p)^2+(y(s)-y_p)^2+(z(s)-z_p)^2)-sqrt((x(s)-x_2)^2+(y(s)-y_2)^2+(z(s)-z_2)^2)-(c*t_1)
eqn3 = sqrt((x(s)-x_p)^2+(y(s)-y_p)^2+(z(s)-z_p)^2)-sqrt((x(s)-x_3)^2+(y(s)-y_3)^2+(z(s)-z_3)^2)-(c*t_1)
where only x(s), y(s), z(s) are unknown are rest all are known
BEST REGARDS

  1 Comment

Walter Roberson
Walter Roberson on 29 Sep 2020 at 3:55
Perhaps the first equation should involve t1 instead of t_1, and second equation should involve t2 instead of t_1, and the third should involve t3 instead of t_1 ? You do not use t1, t2, or t3 after you define them.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 29 Sep 2020 at 4:03
x_p = 4; y_p = 5; z_p = 2;
x_1 = 8; y_1 = 9; z_1 = 5;
x_2 = 2; y_2 = 5; z_2 = 1;
x_3 = 6; y_3 = 1; z_3 = 3;
t1 = 5.692820*10^-9;
t2 = -2.924173*10^-9;
t3 = -12.010097*10^-9;
syms xs ys zs %our unknowns
syms c %constant not given in question
eqn1 = sqrt((xs-x_p)^2+(ys-y_p)^2+(zs-z_p)^2)-sqrt((xs-x_1)^2+(ys-y_1)^2+(zs-z_2)^2)-(c*t1);
eqn2 = sqrt((xs-x_p)^2+(ys-y_p)^2+(zs-z_p)^2)-sqrt((xs-x_2)^2+(ys-y_2)^2+(zs-z_2)^2)-(c*t2);
eqn3 = sqrt((xs-x_p)^2+(ys-y_p)^2+(zs-z_p)^2)-sqrt((xs-x_3)^2+(ys-y_3)^2+(zs-z_3)^2)-(c*t3);
sol = solve([eqn1, eqn2, eqn3], [xs, ys, zs]);
disp(sol.xs)
disp(sol.ys)
disp(sol.zs)
the values will be parameterized in c, which you indicate is a known value, but which you did not provide a value for.
There are two solutions for each variable.
You should probably re-substitute the solutions and verify that the values work, as MATLAB warns that some of the solutions produced might no be true solutions.

  12 Comments

Show 9 older comments
Walter Roberson
Walter Roberson on 30 Sep 2020 at 10:26
Installing R2014a is getting to be a distinct nuisance. R2014a does not work with an operating system as new as mine. I created some virtual machines for operating system versions old enough that they supported R2014a, and I installed two different operating systems and as well a third that I had an existing virtual machine for -- but the MATLAB installer would not run on any of them, due to some kind of Java problems...
I would have to install an old operating system onto a hard drive partition in order to install R2014a.... unless I can manage to get it running on one of my old Windows virtual machines.
ali hassan
ali hassan on 30 Sep 2020 at 16:28
THANKYOU SO MUCH SIR. i ran the code on matlab 2019 and i have done some tweaks and i am getting the solution but i want to filter my solution
this is a set of possible solutions i get from my code.but i only need three values but i get 6 possible solutions.i know that my solution can neither be negative nor it can be complex and it should show only accepted answer after ignoring other solution
there are 6 possible solutions but only three are right. now how to use loop maybe to ignore left entries as it is negative and it should only display right entries as solution
CODE:
x_p = 4; y_p = 5; z_p = 2;
x_1 = 8; y_1 = 9; z_1 = 5;
x_2 = 2; y_2 = 5; z_2 = 1;
x_3 = 6; y_3 = 1; z_3 = 3;
c=3.0*10^8;
t1 = 5.692820*10^-9;
t2 = -2.924173*10^-9;
t3 = -12.010097*10^-9;
syms xs ys zs %our unknowns
eqn1 = sqrt((xs-x_p)^2+(ys-y_p)^2+(zs-z_p)^2)-sqrt((xs-x_1)^2+(ys-y_1)^2+(zs-z_2)^2)-(c*t1);
eqn2 = sqrt((xs-x_p)^2+(ys-y_p)^2+(zs-z_p)^2)-sqrt((xs-x_2)^2+(ys-y_2)^2+(zs-z_2)^2)-(c*t2);
eqn3 = sqrt((xs-x_p)^2+(ys-y_p)^2+(zs-z_p)^2)-sqrt((xs-x_3)^2+(ys-y_3)^2+(zs-z_3)^2)-(c*t3);
sol = solve([eqn1, eqn2, eqn3], [xs ys zs]);
m = 1;
for n = 1:length(sol.xs)
possibleSol(1,m) = double(sol.xs(n));
possibleSol(2,m) = double(sol.ys(n));
possibleSol(3,m) = double(sol.zs(n));
m= m+1;
end
Walter Roberson
Walter Roberson on 30 Sep 2020 at 16:39
That is not 6 possible solutions, that is two solutions with three components each.
possibleSol(:, all(possibleSol>0 & imag(possibleSol)==0, 1))

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!