How to solve forth order Polynomial (equation) with one independent variable and two constants.

8 views (last 30 days)
Dear MATLAB experts,
I have an forth order polynomial (equation) as follow:
(A^2*y^4) + (4*x*A^2*y^3) + ((4*B-4-2*A^2)*y^2) + ((8-8*x-4*A^2*x)*y) + (8*x-4+A^2-4*x^2*B) = 0;
Where, A and B are constants and y is function of x. The independent variable x varies between 0 and 1 (0<=x<=1).
My questions are:
  1. Is there any way to define A and B as a constants instead of set them as a numbers since the equation is to be used in iterative code and thus A and B change from time to time.
  2. Need to find the function y=f(x).
I have tried
Equation=((A^2*y^4)+(4*x*A^2*y^3)+(((4*B)-4-(2*A^2))*y^2)+((8-(8*x)-(4*A^2*x))*y)+((8*x)-4+(A^2)-(4*x^2*B)));
solve(Equation,y);
The MATLAB version i have is 7.10.0 (R2010a), but not an issue if answers in newer version.
I really appreciate any suggestions
Thank you
Aziz

Answers (1)

Walter Roberson
Walter Roberson on 1 Feb 2016
If you have the Symbolic Toolbox, you can use
syms A B x y
Equation=((A^2*y^4)+(4*x*A^2*y^3)+(((4*B)-4-(2*A^2))*y^2)+((8-(8*x)-(4*A^2*x))*y)+((8*x)-4+(A^2)-(4*x^2*B)));
sol := solve(Equation, y);
The solution you get will be a RootOf() a quartic (polynomial of order 4), so there are 4 solutions, some of which might be imaginary at portions of the range x = 0 to 1. You can convert this to a function by using
Y = matlabFunction(sol, 'vars', [x A B]);
after which Y will be a function handle of a function that takes 3 parameters in the order x, A, B, and which should accept a vector of x values.
  2 Comments
Abdulaziz Abutunis
Abdulaziz Abutunis on 2 Feb 2016
Edited: Abdulaziz Abutunis on 2 Feb 2016
Thank you Walter for the help. If I keep the semicolon after sol then I will have this error ??? Undefined function or method 'sol' for input arguments of type 'char'.
Error in ==> Blocjage_Equations at 13 sol := solve(Equation, y); If i delete the semicolon then I have this Error shown ??? Undefined function or method 'sol' for input arguments of type 'char'.
Error in ==> Blocjage_Equations at 13 sol := solve(Equation, y);
Thanks, Aziz

Sign in to comment.

Categories

Find more on Polynomials in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!