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

การประมาณค่ารากที่สองด้วยวิธี Bakhshali ในโปรแกรม C

การประมาณค่า Bakhshali เป็นวิธีการคำนวณรากที่สองของตัวเลขที่ไม่ใช่กำลังสองสมบูรณ์ มาทบทวนคำศัพท์ที่เกี่ยวข้องเพื่อเข้าใจง่ายขึ้น

รากที่สองของตัวเลข x คือตัวเลขที่ทำให้เงื่อนไขต่อไปนี้เป็นจริง y2 = x

กำลังสองสมบูรณ์ (Perfect Square) คือตัวเลขที่รากที่สองเป็นจำนวนเต็ม เช่น 16 เป็นกำลังสองสมบูรณ์เพราะรากคือ 4 และ 4

มีหลายวิธีทางคณิตศาสตร์ที่กำหนดไว้เพื่อหารากที่สองของตัวเลข ในบทช่วยสอนนี้เราจะเรียนรู้การประมาณค่า Bakhshali เพื่อหารากที่สองของตัวเลข

เป็นวิธีหาค่ารากประมาณของตัวเลข เทียบเท่ากับสองขั้นตอนแรกของวิธี Babylonian

การทำงาน −

การประมาณค่า Bakhshali ทำงานดังนี้

เราต้องการหารากที่สองของตัวเลข s ขั้นตอนและคำนวณที่ต้องทำด้านล่างนี้

  • หากำลังสองสมบูรณ์ที่ใกล้ที่สุดของตัวเลข s คือ n2
  • หาความต่างของตัวเลขและกำลังสองสมบูรณ์ที่ใกล้ที่สุด คือ d = s - n2
  • คำนวณ P = d/(2n)
  • คำนวณ A = n + P
  • ค่าประมาณของรากที่สองของ s จะเป็น (A - P2 / 2A)

ตัวอย่าง

#include <iostream> 
using namespace std; 

int main(){ 
    float s = 12.3412; 
    int perfectSqaure = 0; 
    int n = 0; 
    for (int i = static_cast<int>(s); i > 0; i--) { 
        for (int j = 1; j < i; j++){ 
            if (j*j == i){ 
                perfectSqaure = i; 
                n = j; 
                break; 
            } 
        } 
        if (perfectSqaure > 0) 
            break; 
    } 
    float d = s - perfectSqaure; 
    float P = d/(2.0*n); 
    float A = n+P; 
    float rootOfs = A-((P*P)/(2.0*A)); 
    cout<<"The square root of "<<s<<" = "<<rootOfs; 
    return 0; 
}

ผลลัพธ์

The square root of 12.3412 = 3.51327

ค่ารากที่สองประมาณนี้ใกล้เคียงกับค่าจริงที่คือ 3.51300441 ดังนั้นวิธีนี้ดีพอสำหรับการหารากที่สองประมาณของตัวเลขที่กำหนด ถูกต้องถึงหลายตำแหน่ง จึงสามารถใช้หาค่ารากของค่าทศนิยมได้