gpt4 book ai didi

c++ - 在 C++ 中使用梯形规则进行复杂函数集成

转载 作者:行者123 更新时间:2023-12-04 15:06:20 25 4
gpt4 key购买 nike

#include <complex>  
complex<double> integral(complex<double> (*f)(complex<double> x), complex<double> l, complex<double> u, size_t n) {
complex<double> step = (u - l) / (double)n;
complex<double> area(0, 0);
for (size_t i = 0; i < n; i++) {
complex<double> inner = l + (i + 0.5) * step;
area = area + f(inner) / inner * step;
}
return area;
}
int main() {
cout << integral(cos, 0, 2, 100);
return 0;
}

错误

main.cpp:35:13: error: no matching function for call to 'integral'
main.cpp:24:17: note: candidate function not viable: no overload of 'cos' matching 'complex<double> (*)(complex<double>)' for 1st argument

我想用梯形法对复杂函数进行积分。

上下界也是复数。

如果我只使用 double (我将每个 complex<double> 替换为 double )它正在工作我得到了正确的解决方案,但如果我使用 complex<double>我收到前面提到的错误代码。

也许我的算法有问题,如果你能高亮我,我将不胜感激。

最佳答案

integral的第一个参数类型

complex<double> (*f)(complex<double> x)

错了。

std::cos 的复数形式 takes its parameter by constant reference .

将您的第一个参数更改为此,std::cos 将匹配。

complex<double> (*f)(complex<double> const & x)
// ^^^^^^^

关于c++ - 在 C++ 中使用梯形规则进行复杂函数集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66014487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com