首頁 > web前端 > js教程 > 主體

在 JavaScript 中計算 (m)1/n 的值

WBOY
發布: 2023-08-25 09:25:10
轉載
895 人瀏覽過

在 JavaScript 中计算 (m)1/n 的值

在 JavaScript 程式設計領域,計算 (m) 的 1/n 次方值的能力非常重要,因為它使開發人員能夠精確且有效率地執行複雜的數學運算。本文運用 JavaScript 的運算能力,深入探討計算此類指數值的複雜度。透過探索底層演算法並採用很少使用的數學函數,我們將為開發人員提供在 JavaScript 程式中無縫執行這些計算所需的知識和工具。與我們一起踏上這段啟發性的旅程,我們將揭開 1/n 次方計算 (m) 的秘密,使開發人員能夠以新的信心應對數學挑戰。

Math.pow() 函數

Math.pow() 函數是 JavaScript Math 物件內建的函數,可讓您計算基數乘以指數的冪。它需要兩個參數:基數和指數。

使用 Math.pow() 的語法如下 -

Math.pow(base, exponent);
登入後複製

這裡,基數代表您想要的數的冪,指數代表您想要基數的冪。

問題陳述

給定兩個正整數,一個基底整數 m 和一個指數整數 n,確定 m 的 n 次方根的值,表示為 m^(1/n)。傳回四捨五入到最接近的整數的結果。

範例輸入 -

#
m = 64, n = 3
登入後複製

範例輸出 -

#
4
登入後複製

方法

在本文中,我們將看到多種不同的方法來解決 JavaScript 中的上述問題 -

  • Math.pow 和 Math.exp

  • 牛頓法

  • #二分查找

#方法1:Math.pow和Math.exp

此方法使用 Math.pow() 函數來計算數字的 n 次方根。它涉及一行程式碼:root = Math.pow(m, 1/n)。透過將 m 提高到 1/n 次方,它可以直接計算所需的根。此方法方便、直接,提供快速解決方案,無需自訂尋根演算法。

範例

在此程式碼片段中,Math.pow() 函數用於計算給定數字的 n 次方根。使用公式 Math.pow(m, 1/n),其中 m 表示求根的數,n 表示根的階數。結果值儲存在根變數中,隨後顯示在控制台上。

let m = 27;
let n = 3;
let root = Math.pow(m, 1/n);
console.log(root);
登入後複製

輸出

以下是控制台輸出 -

3
登入後複製

方法2:牛頓法

牛頓法是一種迭代演算法,用來逼近函數的根。當求數字 m 的 n 次方根時,我們從 m/n 的初始猜測開始,採用牛頓法。然後,演算法使用公式 x = ((n - 1) * x m / Math.pow(x, n - 1)) / n 迭代優化猜測。迭代繼續,直到 Math.pow(x, n) 和 m 之間的差值小於指定的容差。所得的 x 值表示 m 的近似 n 次方根。

範例

nthRoot 函數以可選精度(容差)計算給定數字 (m) 的 n 次方根。根的初始猜測設定為 m 除以 n。透過 while 循環,迭代地細化猜測,直到 Math.pow(x, n) 和 m 之間的差異變得小於容差。每次迭代中都採用牛頓法公式以獲得更好的近似值:x = ((n - 1) * x m / Math.pow(x, n - 1)) / n。最終傳回根的最終近似值。

function nthRoot(m, n, tolerance = 0.0001) {
   let x = m / n; // Initial guess

   while (Math.abs(Math.pow(x, n) - m) > tolerance) {
      x = ((n - 1) * x + m / Math.pow(x, n - 1)) / n;
   }
   return x;
}
let m = 27;
let n = 3;
let root = nthRoot(m, n);
console.log(root);
登入後複製

輸出

以下是控制台輸出 -

3.000000068671529
登入後複製

方法3:二分查找

二分查找方法用來找出數字 m 的 n 次方根。它使用 low = 0 和 high = max(1, m) 初始化搜尋範圍。透過將中點計算為mid,將mid的n次方確定為猜測值。根據猜測值是大於還是小於 m,更新低值或高值,從而將搜尋範圍減半。迭代繼續,直到高點和低點之間的差異小於指定的容差。 mid的最終值近似於m的n次方根。

範例

nthRoot 函數採用 m、n 和可選容差作為參數。 low 和 high 變數分別初始化為 0 和 max(1, m)。 while 迴圈持續進行,直到高點和低點之間的差值大於容差。在每次迭代中,計算中點(mid)。猜測變數儲存 mid 的 n 次方。根據猜測是大於還是小於 m,更新低值或高值以縮小搜尋範圍。當循環結束時,最終的 mid 值會作為 m 的近似 n 次方根返回。

function nthRoot(m, n, tolerance = 0.0001) {
   let low = 0;
   let high = Math.max(1, m);
   let mid;

   while (high - low > tolerance) {
      mid = (low + high) / 2;
      let guess = Math.pow(mid, n);

      if (guess < m) {
         low = mid;
      } else if (guess > m) {
         high = mid;
      } else {
         break;
      }
   }
   return mid;
}
let m = 27;
let n = 3;
let root = nthRoot(m, n);
console.log(root);
登入後複製

輸出

以下是控制台輸出 -

3.000040054321289
登入後複製

結論

最終,在 JavaScript 中計算 (m) 的 1/n 次方值的過程提出了一個有趣的計算挑戰,可以透過實作適當的演算法來優雅地解決這個挑戰。這種數學運算雖然不太常見,但在密碼學、科學建模和數據分析等各個領域都具有重要意義。透過利用 JavaScript 的強大功能並採用精確的方法,程式設計師可以有效地計算該表達式,從而釋放新的可能性並支援複雜應用程式的開發。總之,掌握 JavaScript 中 (m) 1/n 次方的計算可以擴展程式設計師可以使用的數學運算能力,促進創新並能夠在 Web 開發領域實現複雜的數學概念。

以上是在 JavaScript 中計算 (m)1/n 的值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!