Символически / параметрическое решение нелинейного уравнения в Matlab

У меня есть эти два уравнения, где 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

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)
Другие вопросы по тегам