Borrar filtros
Borrar filtros

Solve for y in function z = f(x, y)

4 visualizaciones (últimos 30 días)
Tim Fulcher
Tim Fulcher el 7 de Oct. de 2023
Comentada: Sam Chak el 9 de Oct. de 2023
Hi All,
I have a polynomial which is a function of x (2nd order) and y (fifth order) and I wish to solve for y. My equation is:
p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y + p12*x*y^2 + p03*y^3 + p22*x^2*y^2 + p13*x*y^3 + p04*y^4 + p23*x^2*y^3 + p14*x*y^4 + p05*y^5
I have tried:
syms x y z p00 p10 p01 p20 p11 p02 p21 p12 p03 p22 p13 p04 p23 p14 p05
eqn = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y + p12*x*y^2 + p03*y^3 + p22*x^2*y^2 + p13*x*y^3 + p04*y^4 + p23*x^2*y^3 + p14*x*y^4 + p05*y^5 == z
soly = solve(eqn,y)
and this has returned:
soly = root(p05*z1^5 + p14*x*z1^4 + p04*z1^4 + p23*x^2*z1^3 + p13*x*z1^3 + p03*z1^3 + p22*x^2*z1^2 + p12*x*z1^2 + p02*z1^2 + p11*x*z1 + p21*x^2*z1 + p01*z1 - z + p20*x^2 + p10*x + p00, z1, 1)
I'm afraid i don't recognize this format. Where did z1 come from and I assume the the 1 (before the closing parenthisis) implies that it is the first and only solution? Nor am I sure about the root.
I have tried something similar in the past:
syms x y z p00 p10 p01 p20 p11 p02 p30 p21 p12
eqn = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p30*x^3 + p21*x^2*y + p12*x*y^2 == z
soly = solve(eqn,y)
and this yielded a more familiar format:
-(p01 + p11*x + p21*x^2 + (p11^2*x^2 + p21^2*x^4 - 4*p00*p02 + 4*p02*z + p01^2 + 2*p01*p21*x^2 - 4*p02*p20*x^2 - 4*p10*p12*x^2 - 4*p02*p30*x^3 + 2*p11*p21*x^3 - 4*p12*p20*x^3 - 4*p12*p30*x^4 - 4*p00*p12*x + 2*p01*p11*x - 4*p02*p10*x + 4*p12*x*z)^(1/2))/(2*(p02 + p12*x))
-(p01 + p11*x + p21*x^2 - (p11^2*x^2 + p21^2*x^4 - 4*p00*p02 + 4*p02*z + p01^2 + 2*p01*p21*x^2 - 4*p02*p20*x^2 - 4*p10*p12*x^2 - 4*p02*p30*x^3 + 2*p11*p21*x^3 - 4*p12*p20*x^3 - 4*p12*p30*x^4 - 4*p00*p12*x + 2*p01*p11*x - 4*p02*p10*x + 4*p12*x*z)^(1/2))/(2*(p02 + p12*x))
Regards and thanks in advance.
Tim
  1 comentario
Walter Roberson
Walter Roberson el 7 de Oct. de 2023
syms x y z p00 p10 p01 p20 p11 p02 p30 p21 p12
eqn = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p30*x^3 + p21*x^2*y + p12*x*y^2 == z
soly = solve(eqn,y)
In eqn, the maximum power that y apears is y^2 so that eqn can be rephrased as a quadratic,
(p02 + p12*x)*y^2 + (p01 + p11*x + p21*x^2)*y + (p00 + p10*x + p20*x^2 + p30*x^3 - z) == 0
which can easily be solved.
But your original equation has y^5 and that gives you problems.

Iniciar sesión para comentar.

Respuesta aceptada

Sam Chak
Sam Chak el 7 de Oct. de 2023
If the values for x and z are known, then you can numerically solve for y.
syms y
x = 1;
z = 0;
p00 = 1;
p10 = 1;
p01 = 1;
p20 = 1;
p11 = 1;
p02 = 1;
p21 = 1;
p12 = 1;
p03 = 1;
p22 = 1;
p13 = 1;
p04 = 1;
p23 = 1;
p14 = 1;
p05 = 1;
eqn = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y + p12*x*y^2 + p03*y^3 + p22*x^2*y^2 + p13*x*y^3 + p04*y^4 + p23*x^2*y^3 + p14*x*y^4 + p05*y^5 == z
eqn = 
soly = vpasolve(eqn, y)
soly = 
  8 comentarios
Tim Fulcher
Tim Fulcher el 9 de Oct. de 2023
Movida: Sam Chak el 9 de Oct. de 2023
Many thanks guys. That worked really well.
Regards
Tim
Sam Chak
Sam Chak el 9 de Oct. de 2023
Good to hear that, @Tim Fulcher. If you find the guidance helpful, please consider clicking 'Accept' ✔ on the answer to close the issue when the problem is solved.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Applications en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by