complex root 如何轉型?

if (d<0) cout<<((-b+sqrt(d))/(2*a));

~~~~~~~~~~~~~~~~~~~~~

怎麼把一個運算式的值轉成 complex 型態?

我嘗試 include <complex>

然後 if (d<0) cout<<(((complex<float>)-b+sqrt(d))/(2*a));

可是卻會有錯誤出現?

在算一元二次方程式時如何處理虛根??

Update:

一樣會出現錯誤,我用 vc 會編譯錯誤,還是你可以直接和我講數學公式應該是怎樣才對?

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    #include <complex>

    #include <iostream>

    using namespace std;

    if (d<0) cout<<(((complex<float>)-b+sqrt(d))/(2*a));

    改成

    if (d<0) cout<< -b+sqrt((complex<float>)d)/(2*a);

    2007-09-09 03:41:22 補充:

    數學公式:

    ax^2+bx+c=0 -> x=(-b+-sqrt(b*b-4*a*c))/(2*a)

    sorry 我寫錯,應該是

    if (d<0) cout<< (-b+sqrt((complex<float>)d))/(2*a);

    2007-09-09 03:41:37 補充:

    範例:

    x^2+1=0 -> x= +- i

    此時 a=1 ,b=0,c=1

    程式

    #include <complex>

    #include <iostream>

    using namespace std;

    int main()

    {

    float a = 1., b = 0., c=1.;

    float d = b*b-4*a*c;

    if (d<0) cout<< (-b+sqrt((complex<float>)d))/(2*a);

    return 0;

    }

    此程式在Dec-C++ 4.9.9.2 compile 是ok

    執行結果

    (0,1)

    也ok

  • 1 decade ago

    <complex> 裡,你還是放 2 個 實數

    它只是會幫你做 complex 該有的運算(處理 i^2 = -1 等)

    你不能給它 實 +/- 虛

    2007-09-09 12:01:45 補充:

    知識+ 真是越來越神奇了!

    已經第二還是第三次了

    寫意見時,沒人回答、沒人給意見

    寫完,N小時前,已經有人回答/給意見了!@.@

    我打字還真慢!

    沒打幾個字,要 N 小時!:S

    該練打字囉!

Still have questions? Get your answers by asking now.