Real Roots of a Polynomial

62 次查看(过去 30 天)
I have used "solve" to factor a fourth order polynomial. It has four roots with three complex numbers. I used:
xf = solve(x^4+7*x^3-8*x^2+5*x+2,x)
if (isreal(xf)==1)
...
end;
to try to pull out the real roots but it did not work.
Is there a better way?
  2 个评论
Matt Kindig
Matt Kindig 2013-9-18
编辑:Matt Kindig 2013-9-18
Are you sure there are real roots to the polynomial? It is not a given that there are.
Azzi Abdelmalek
Azzi Abdelmalek 2013-9-18
Polynomial with real coefficient can not have an odd number of complex roots,

请先登录,再进行评论。

采纳的回答

Roger Stafford
Roger Stafford 2013-9-18
编辑:Roger Stafford 2013-9-18
Use 'roots' to find the roots of polynomials.
r = roots([1,7,-8,5,1]); % Get all the roots
r = r(imag(r)==0); % Save only the real roots
The 'isreal' function is true only if All elements of a vector are real, so it isn't appropriate for sorting out the real roots.
A polynomial with all real coefficients such as yours cannot have an odd number of complex roots. They must occur in conjugate pairs. As you see, in your particular polynomial there are just two complex roots, which are conjugates of one another.
  1 个评论
Philosophaie
Philosophaie 2013-9-18
编辑:Philosophaie 2013-9-18
I get:
acp1 =
[ empty sym ]
There is a real root to the polynomial in question.
It works my mistake.
Is there any way of getting Matlab to complete the addition,subtraction, mult and divide?

请先登录,再进行评论。

更多回答(1 个)

Azzi Abdelmalek
Azzi Abdelmalek 2013-9-18
%P=x^4+7*x^3-8*x^2+5*x+2
p=[1 7 -8 5 2]
result=roots(p)
  2 个评论
Azzi Abdelmalek
Azzi Abdelmalek 2013-9-18
If all your roots are real,
syms x
factor(x^4+7*x^3-8*x^2+5*x+2)
should work
Roger Stafford
Roger Stafford 2013-9-18
Only two of the roots are real. The other two are a complex conjugate pair. However the polynomial can still be factored using these complex values.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Polynomials 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by