1

我有这两个方程,其中x, yz是变量,p1, p2p3是参数。MATLAB 可以找到x y z基于的参数/符号解决方案p1, p2, p3吗?

  • 2(x−p1)+2(xy−p3)y = 0
  • 2(y−p2)+2(xy−p3)x = 0
4

1 回答 1

1

简单地说是的。取所有变量,用于syms定义每个变量,使它们成为符号变量,然后用于solve为您解方程。您将两个方程指定为 中的两个参数solve。输出(我们将存储在 中sol)将返回一个包含一个x字段和一个y字段的结构,因为您的方程是针对两个变量定义的,并且p1,p2,p3是参数。换句话说,这样做:

syms p1 p2 p3;
syms x y;
sol = solve(2*(x-p1)+2*(x*y-p3)*y == 0, 2*(y-p2)+2*(x*y-p3)*x == 0);

您可以通过访问它们各自的每个字段来访问什么x和是什么的解决方案:y

>> sol.x

ans =

(p1^3 + p3*p1^2*z1 + p1*z1^4 - 1.0*p2*p1*z1^3 + p1*z1^2 - 1.0*p2*p1*z1 + p3*z1^3 - 1.0*p2*p3*z1^2 + p3*z1 - 1.0*p2*p3)/(p1^2 + p3^2)

>> sol.y

ans =

z1

不过,您会收到一条警告,说明解决方案是通过符号参数化的,但这是意料之中的。具体来说:

Warning: The solutions are parametrized by the symbols:
z1 = RootOf(z^5 - p2*z^4 + 2*z^3 - z^2*(2*p2 - p1*p3) + z*(p1^2 - p3^2 + 1) - p1*p3 - p2, z)
于 2014-07-29T07:05:05.160 回答