Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมหาผลรวมของอนุกรมฮาร์โมนิกในภาษา C++


ในปัญหานี้เราได้รับตัวเลขสามตัว a, d และ n งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมของอนุกรมฮาร์มอนิกใน C++

ความก้าวหน้าของฮาร์มอนิก เป็นอนุกรมที่ผกผันจะเป็นความก้าวหน้าทางคณิตศาสตร์ เช่น. ถ้าสำหรับความก้าวหน้าฮาร์มอนิก A1, A2, A3.. มีความก้าวหน้าทางคณิตศาสตร์ 1/A1, 1/A2, 1/A3.

ดังนั้น HP ทั่วไปคือ

1/a, 1/(a+d), 1/(a+2d), … 1/(a + nd)

โดยที่ 1/a คือเทอมแรก และ d คือผลต่างทั่วไปของ reversedAP

คำอธิบายปัญหา − ในที่นี้ เราจะได้รับเทอมแรก a ผลต่างร่วม d และจำนวนเทอม n ของ HP และเราต้องหาผลรวมของมัน

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

a = 3, d = 2, n = 5

ผลลัพธ์

0.878211

คำอธิบาย

HP คือ ⅓, ⅕, 1/7, 1/9, 1/11.

Sum = ⅓ + ⅕ + 1/7 + 1/9 + 1/11 = 0.878211

แนวทางการแก้ปัญหา

เราจะวนซ้ำเทอมที่ n นี้และหาค่าของแต่ละเทอมของ HP และเพิ่มเข้าไปใน sumVar และคืนค่า sumVal ในตอนท้าย

อัลกอริทึม

เริ่มต้น − sumVal =0, เทอม =0;

  • ขั้นตอนที่ 1 − ลูปสำหรับ i -> 1 ถึง n
    • ขั้นตอนที่ 1.1 หาพจน์ พจน์ =1/( a + (i-1)*(d)
  • ขั้นตอนที่ 1.2 − อัปเดต sumVal, sumVal +=เทอม
  • ขั้นตอนที่ 2 − พิมพ์ sumVal

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;
float findSeriesSum(int a, int d, int n){
   float sumVal = 0;
   float term = 0;
   for(float i = 1; i <= n; i++){
      term = (1.0)/(float)(a + (i-1)*d);
      sumVal += term;
   }
   return sumVal;
}
int main(){
   int n = 5, a = 3, d = 2;
   cout<<"The sum of HP is "<<findSeriesSum(a, d, n);
   return 0;
}

ผลลัพธ์

The sum of HP is 0.878211

อีกหนึ่งแนวทาง อาจใช้ฟังก์ชันเรียกซ้ำเพื่อหาผลรวม

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;
float findSeriesSum(int a, int d, int n){
   if(n == 1){
      return (float)(1.0)/a;
   }
   float term = (1.0)/ (float)(a + (n-1)*d);
   return term + findSeriesSum(a, d, n-1);
}
int main(){
   int n = 5, a = 3, d = 2;
   cout<<"The sum of HP is "<<findSeriesSum(a, d, n);
   return 0;
}

ผลลัพธ์

The sum of HP is 0.878211