SOLVE-ONLY one solution
8 次查看(过去 30 天)
显示 更早的评论
I am trying to solve a system of two equations which I know they intersect in three points. I am using this code (which I simplified)
syms x y
[x_sol,y_sol] = solve(Eqn1,Eqn);
Why it displays only the first solution and not the three solutions?
2 个评论
Torsten
2023-2-19
Use
[x_sol, y_sol] = vpasolve([a*exp(-b*x) == y, c*x^3 + d*x^2 + e*x + f == y], [x, y]);
instead of
[x_sol, y_sol] = solve([a*exp(-b*x) == y, c*x^3 + d*x^2 + e*x + f == y], [x, y]);
采纳的回答
Walter Roberson
2023-2-17
solve() will return multiple solutions only if the equations are simultaneous multinomials -- though in some cases it is able to convert trig equations into internal polynomials.
It does not even return multiple solutions to equations involving exp() in terms of the LambertW function when those are available.
In all other cases, it will return a single closed-form solution if it can find one, and otherwise a single numeric solution.
In some cases, especially ones involving trig functions, it is able to compute parameterized additional solutions, if you request 'returnconditions', true
2 个评论
Walter Roberson
2023-2-19
You could try solving iteratively, solve one equation for one variable, substitute the result into the remaining equations, and so on. Depending on what the equations are like, you might find a step for which there are multiple solutions, in which case you can iterate over all of the possibilities, hoping that they will lead to valid solutions.
Unfortunately it does not take all that much before formulas are too complicated to make progress on.
更多回答(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!