Select one root of an second degree equation

i have solved a second degree equation in matlab using the roots() command and i want only one root to be displayed. How do i do this in MATLAB? Thank you very much

 採用された回答

Roger Stafford
Roger Stafford 2013 年 6 月 1 日

0 投票

You could also use the formula for second degree equations. If the equation is:
a*x^2 + b*x + c = 0
then get the positive root, (if there is just one,) with:
r = (-b + sign(a)*sqrt(b^2-4*a*c))/(2*a);

2 件のコメント

Walter Roberson
Walter Roberson 2013 年 6 月 2 日
There could be multiple positive roots; the above would give the greater of the two.
Roger Stafford
Roger Stafford 2013 年 6 月 2 日
That's why I said "if there is just one [positive root]".

サインインしてコメントする。

その他の回答 (3 件)

Andrei Bobrov
Andrei Bobrov 2013 年 6 月 1 日
編集済み: Andrei Bobrov 2013 年 6 月 1 日

1 投票

p = [3 -6 -7];
r = roots(p);
out = r(r>0);

2 件のコメント

Andrei Bobrov
Andrei Bobrov 2013 年 6 月 1 日
about positive root
Walter Roberson
Walter Roberson 2013 年 6 月 1 日
Caution: if there are imaginary roots, then only real() of the roots will be considered by the ">" operator. You might want to use
out = r(imag(r) == 0 & r > 0)
to select only positive real roots. If none exist then "out" will be empty.

サインインしてコメントする。

Walter Roberson
Walter Roberson 2013 年 6 月 1 日

0 投票

r = roots(...);
r(1)
Did you care which root it displays?

1 件のコメント

Pavel
Pavel 2013 年 6 月 1 日
i want the positive root

サインインしてコメントする。

Pavel
Pavel 2013 年 6 月 1 日

0 投票

thanks all for replaing

カテゴリ

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by