gpt4 book ai didi

Matlab求解: Solution not satisfying the equation

转载 作者:行者123 更新时间:2023-12-02 04:54:55 27 4
gpt4 key购买 nike

我正在尝试用这段代码求解方程:

a = [-0.0008333 -0.025 -0.6667 -20];
length_OnePart = 7.3248;
xi = -6.4446;
yi = -16.5187;
syms x y
[sol_x,sol_y] = solve(y == poly2sym(a), ((x-xi)^2+(y-yi)^2) == length_OnePart^2,x,y,'Real',true);

sol_x = sym2poly(sol_x);
sol_y = sym2poly(sol_y);

它给出的解集是 (-23.9067,-8.7301) 和 (11.0333,-24.2209),它们甚至不满足圆方程。我该如何解决这个问题?

最佳答案

如果您尝试求解立方体和圆的交集,即 y==poly2sym(a) 等于 (x-xi)^2+( y-yi)^2==length_OnePart^2 看起来 solve 可能会对某些东西感到困惑,因为圆是参数化表示而不是单值函数。这也可能与 xy 不是独立的解决方案这一事实有关,而是后者依赖于前者。在这种情况下,它还可能取决于对数值求解器的使用。 solve 似乎可以很好地处理与您类似的输入,因此您可以 report this behavior to the MathWorks 看看他们的想法。

无论如何,这里有一个更好、更有效的方法来解决这个问题(而不是联立方程):

a = [-0.0008333 -0.025 -0.6667 -20];
length_OnePart = 7.3248;
xi = -6.4446;
yi = -16.5187;
syms x real
f(x) = poly2sym(a);
sol_x = solve((x-xi)^2+(f(x)-yi)^2==length_OnePart^2,x)
sol_y = f(sol_x)

返回:

sol_x =

0.00002145831413371390464567553686047
-13.182825373861454619370838716408


sol_y =

-20.000014306269544436430325843024
-13.646590348358951818881695033728

请注意,如果您更精确地表示您的系数和参数,那么您可能会得到稍微更准确的结果(一个解决方案显然是 0,-20),而不是只保留四位小数,例如 a = [-1/1200 -0.025 -2/3 -20]。事实上,如果您提供精确表示,solve 可能能够精确地找到一个或多个解决方案。

此外,在您的代码中,调用 sym2poly 只是转换回 float (double 可用于此),因为输入是不是符号多项式方程的形式。

关于Matlab求解: Solution not satisfying the equation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23852621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com