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

ผลรวมของซีรีส์ 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... ใน C++


ในปัญหานี้ เราได้รับตัวเลข n ซึ่งเป็นเทอมที่ n ของอนุกรม 1/(1*2) + 1/(2*3) +…+ 1/(n*(n+1)) งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมของซีรีส์

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

ป้อนข้อมูล

n = 3

ผลผลิต

0.75

คำอธิบาย ผลรวม =1/(1*2) + 1/(2*3) + 1/(3*4) =½ + ⅙+ 1/12 =(6+2+1)/12 =9/12 =¾ =0.75

วิธีแก้ปัญหาอย่างง่ายคือการใช้ลูป และค่าสัญจรของแต่ละองค์ประกอบของอนุกรม แล้วบวกเข้ากับค่าผลรวม

อัลกอริทึม

Initialize sum = 0
Step 1: Iterate from i = 1 to n. And follow :
   Step 1.1: Update sum, sum += 1/ ( i*(i+1) )
Step 2: Print sum.

ตัวอย่าง

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

#include <iostream>
using namespace std;
double calcSeriesSum(int n) {
   double sum = 0.0;
   for (int i = 1; i <= n; i++)
   sum += ((double)1/(i*(i+1)));
   return sum;
}
int main() {
   int n = 5;
   cout<<"Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is "<<calcSeriesSum(n);
   return 0;
}

ผลลัพธ์

Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is 0.833333

วิธีแก้ปัญหานี้ไม่ได้ผลมากนักเนื่องจากใช้การวนซ้ำ

วิธีที่มีประสิทธิภาพในการแก้ปัญหาคือการใช้สูตรทั่วไปสำหรับผลรวมของอนุกรม

The series is 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + …
n-th terms is 1/n(n+1).
an = 1/n(n+1)
an = ((n+1) - n) /n(n+1)
an = (n+1)/n(n+1) - n/ n(n+1)
an = 1/n - 1/(n+1)
sum of the series is
sum = 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + …
Changing each term as in above formula,
sum = 1/1 - ½ + ½ - ⅓ + ⅓ - ¼ + ¼ -⅕ + …. 1/n - 1/(n+1)
sum = 1 - 1/(n+1)
sum = (n+1 -1) / (n+1) = n/(n+1)

ตัวอย่าง

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

#include <iostream>
using namespace std;
double calcSeriesSum(int n) {
   return ((double)n/ (n+1));
}
int main() {
   int n = 5;
   cout<<"Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is "<<calcSeriesSum(n);
   return 0;
}

ผลลัพธ์

Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is 0.833333