Too many solutions using solve function
4 次查看(过去 30 天)
显示 更早的评论
I am trying to use the solve function to find the point where two hyperbolas intersect.
There should only be one solution (also possible to see that when lookin at a plot of the two hyperbolas)
However the slove function gives me 4 solution, one of them is the correct one.
What am I doing wrong that gets me 3 additional unrelated results?
syms x y
EQ1 = sqrt((x-4.5)^2 + (y-19.5)^2 )-sqrt((x-14)^2 + (y-25)^2) == -0.9;
EQ2 = sqrt((x-4.5)^2 + (y-1.5)^2 )-sqrt((x-4.5)^2 + (y-10.5)^2) == 0.999;
%you can see in the figure there should only be one intersect.
figure
ezplot(EQ1,[-100 100])
hold on
ezplot(EQ2,[-100 100])
R = solve(EQ1,EQ2,[x y]);
The results I get:
K>> R.x
ans =
21.9990
19.4080
16.2100
17.6200
K>> R.y
ans =
3.9830
7.7380
7.4000
4.4520
Only (16.2,7.4) is correct.
Thank you for the help
0 个评论
采纳的回答
madhan ravi
2019-1-13
编辑:madhan ravi
2019-1-13
Use vpasolve()
[x y] = vpasolve(EQ1,EQ2,[x y])
Gives:
x =
16.209551693222247107423390740782
y =
7.3999826408579772986633766002805
5 个评论
Walter Roberson
2019-1-13
When you use vpasolve() with a non-polynomial, it chooses a starting point for the search and uses it to find one solution. You have some control over the starting point: you can request a random starting point, or you can provide a range of values to search over.
If you need more than one solution of a non-polynomial then you need to either use solve() or else use vpasolve with different starting points or different constraints on the search range.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Assumptions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!