How to solve a system of equations?
1 回表示 (過去 30 日間)
古いコメントを表示
I try to solve a non=linear equtions system, but it doesn't work. I missed something?
F=@(x)[sqrt((x(1)-5)^2 + x(2)^2 + x(3)^2 )-sqrt( x(1)^2 + (x(2)+10)^2 + x(3)^2) +0.34;
sqrt(x(1)^2 + (x(2)+10)^2 + x(3)^2 )-sqrt( x(1)^2 + (x(2)-10)^2 + x(3)^2);
sqrt( x(1)^2 + (x(2)-10)^2 + x(3)^2 )-sqrt( x(1)^2 + x(2)^2 + x(3)^2)];
x0=[50;0;0];
fsolve(F,x0)
0 件のコメント
回答 (2 件)
Alan Weiss
2018 年 2 月 27 日
You have an errant space just before "+0.34" that is confusing the parser. Try this:
F=@(x)[sqrt((x(1)-5)^2 + x(2)^2 + x(3)^2 )-sqrt( x(1)^2 + (x(2)+10)^2 + x(3)^2)+0.34;
sqrt(x(1)^2 + (x(2)+10)^2 + x(3)^2 )-sqrt( x(1)^2 + (x(2)-10)^2 + x(3)^2);
sqrt( x(1)^2 + (x(2)-10)^2 + x(3)^2 )-sqrt( x(1)^2 + x(2)^2 + x(3)^2)];
x0=[50;0;0];
fsolve(F,x0)
You might need to include some options or a better start point for a good answer.
Alan Weiss
MATLAB mathematical toolbox documentation
2 件のコメント
Walter Roberson
2018 年 3 月 1 日
They are the value of the vector x at the time that fsolve figured out that the system could not be solved.
Roger Stafford
2018 年 2 月 28 日
To solve these you would have to satisfy both
x(1)^2 + (x(2)+10)^2 + x(3)^2 = x(1)^2 + (x(2)-10)^2 + x(3)^2
x(1)^2 + (x(2)-10)^2 + x(3)^2 = x(1)^2 + x(2)^2 + x(3)^2)
and since the x(1) and x(3) terms cancel would require simply
(x(2)+10)^2 = (x(2)-10)^2
(x(2)-10)^2 = x(2)^2
The first of these requires that x(2) = 0 while the second requires that x(2) = 5. These are mutually incompatible and therefore there are no simultaneous solutions to your equations. That is why "it doesn't work".
参考
カテゴリ
Help Center および File Exchange で Systems of Nonlinear Equations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!