更快的谐波数?

辉光

我是编程的初学者。我正在尝试制作一个给定两个数字的程序,该程序将一个谐波与另一个谐波相减。(输入:n,m /输出:Hn-Hm)

#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;

int main() {
double n1, n2, h1 = 0, h2 = 0, i;       // n = number, h = harmonic
cin >> n1 >> n2;

    if (n1 == 0) {
        h1 = 0;
    }
    else {
        for (i = 1; i <= n1; i++) { 
            h1 += 1 / i;
            if (i <= n2) {
                h2 += 1 / i;
            }
        }
    }
    cout << fixed << setprecision(10) << h1 - h2 << endl;

system("pause");
return 0;
}

该程序给出了正确的结果,但我使用的是我所在大学的网站,它表示该程序运行缓慢。我试图使其更快,但我不知道如何。谢谢。

巴尔玛

您无需计算完整的谐波数。假设n1 < n2,这两个系列将是:

H(n1) = 1 + 1/2 + 1/3 + ... + 1/n1
H(n2) = 1 + 1/2 + 1/3 + ... + 1/n1 + 1/(n1+1) + 1(n1+2) + ... + 1/n2

因此,当您减去时H(n2) - H(n1)n1两个系列中的第一项会相互抵消,因此

H(n2) - H(n1) = 1/(n1+1) + 1(n1+2) + ... + 1/n2

如果n1 > n2结果是否定的。

double result = 0, mult = 1;
if (n1 > n2) {
    double temp = n1;
    n1 = n2;
    n2 = temp;
    mult = -1;
}
for (double denom = n1+1; denom <= n2; denom++) {
    result += 1/denom;
}
result *= mult; // Flip the sign if we swapped n1 and n2
cout << fixed << setprecision(10) << result << endl;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

谐波系列

来自分类Dev

方案谐波功能

来自分类Dev

C中的谐波序列

来自分类Dev

简单递归谐波法

来自分类Dev

Python部分谐波

来自分类Dev

寻找谐波系列的大O

来自分类Dev

谐波产品频谱的MATLAB代码

来自分类Dev

延迟计算谐波函数

来自分类Dev

减少谐波,在Java中产生纯净的音调

来自分类Dev

Scala中Spark DataFrame的谐波均值

来自分类Dev

使用fft查找每个谐波的相位

来自分类Dev

如何使用MATLAB滤除谐波(DSP)?

来自分类Dev

用python阻尼谐波振荡代码

来自分类Dev

求解谐波势阱中粒子的Shrodinger方程

来自分类Dev

如何使用MATLAB滤除谐波(DSP)?

来自分类Dev

如何在python中绘制谐波的总和

来自分类Dev

如何使用谐波积频谱获得基频?

来自分类Dev

设计回波数据

来自分类Dev

设计回波数据

来自分类Dev

如何创建可以直接从外壳执行的程序(谐波和)?

来自分类Dev

R:For循环使用谐波成分执行潮汐分析

来自分类Dev

用curvefit拟合双曲和谐波函数

来自分类Dev

查找跨不同熊猫数据框的谐波均值的高效函数

来自分类Dev

您将如何优化此矢量化的谐波和?

来自分类Dev

R中时间序列的谐波回归模型的拟合和绘制

来自分类Dev

使Matlab在FFT图中查找5个谐波的峰值

来自分类Dev

用curvefit拟合双曲函数和谐波函数

来自分类Dev

存在直流信号时的谐波平均值

来自分类Dev

如何从熊猫数据框中找到谐波平均速度