เราจะมาดูวิธีหาลูกบาศก์รูทของตัวเลขกัน สมมติว่าตัวเลขคือ 27 แล้วลูกบาศก์รูทของตัวเลขนี้คือ 3 เพื่อแก้ปัญหานี้ เราจะกำหนดตรรกะของเราเองโดยไม่ต้องใช้ฟังก์ชันไลบรารี เราจะใช้วิธีการค้นหาแบบไบนารี เราต้องทำตามขั้นตอนเหล่านี้เพื่อแก้ปัญหานี้
สมมติว่าเรามีค่าธรณีประตู เช่น threshold =0.000001
-
เริ่มต้นค่าด้านซ้ายเป็น 0 และค่าด้านขวาเป็นตัวเลข
-
คำนวณกลาง :=(ซ้าย + ขวา)/2
-
หากค่าสัมบูรณ์ของ (ตัวเลข – กลาง 3) น้อยกว่าเกณฑ์ ให้คืนค่ากลางเป็นคำตอบ
-
ถ้า mid3 มากกว่าตัวเลข ให้ตั้งค่า right :=mid
-
ถ้า mid3 น้อยกว่าตัวเลข ให้ตั้งค่า left :=mid
ตัวอย่าง
#include<iostream> #include<cmath> using namespace std; double cubeRoot(int num) { double threshold = 0.000001; double left = 0, right = num; double mid; while(left <= right){ mid = (left + right)/2; if(abs(num - (mid*mid*mid)) < threshold) return mid; if((mid*mid*mid) > num) right = mid; if((mid*mid*mid) < num) left = mid; } } int main() { int n = 3; cout << "cube root of 3 is: " << cubeRoot(n); }
ผลลัพธ์
cube root of 3 is: 1.44225