我有两个等式,x, y
和z
是变量,p1, p2
和p3
是参数。 MATLAB可以根据x y z
找到p1, p2, p3
的参数/符号解决方案吗?
2(x−p1)+2(xy−p3)y = 0
2(y−p2)+2(xy−p3)x = 0
答案 0 :(得分:1)
简单地说是。获取所有变量,使用syms
定义每个变量,使它们成为符号变量,然后使用solve
为您求解等式。您将两个方程指定为solve
中的两个参数。输出(我们将存储在sol
中)将返回包含x
字段和y
字段的结构,因为您的等式是针对两个变量定义的,并且{{ 1}}是参数。换句话说,这样做:
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