簡體   English   中英

C++ 積分復數表達式

[英]C++ Complex number expression for integrating

我正在嘗試實施蒙特卡洛方法來求解積分,但無法計算出我的 function 的近似值。

double function(double x)
{
    std::complex<double> fz = (pow(-7 * pow(x, 4) - 3 * x + 11, 1.0/3.0) / pow(-2 * pow(x, 6) - 14 * x - 8, 1.0/4.0));
    cout << fz << endl;
    double f = fabs(fz);
    return f;
}

當我替換 0.25 時,近似結果必須是 0.83 - 0.83i(使用在線計算器)但是在我的 C++ 代碼中,它的結果是 1。我做錯了什么?

近似代碼:

double integral(unsigned int N)
{
    double sum{}, randomNumber;
    for (unsigned int i = 0; i < N; i++)
    {
        randomNumber = static_cast<double>(rand()) / static_cast<double>(RAND_MAX) / 3;
        sum += function(randomNumber); // estimate function with random value [0; 3]
    }
    return (3 * sum / N);
}

問題出在std::pow function 上 要將它應用於復數,它的第一個參數必須是復數類型:

std::complex<double> numerator(-7 * pow(x, 4) - (3 * x) + 11);
std::complex<double> denumerator(-2 * pow(x, 6) - (14 * x) - 8);
std::complex<double> fz = pow(numerator, third) / pow(denumerator, quarter);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM