真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java冪函數(shù)的代碼 java 冪函數(shù)

Java ME中的Math.pow()方法使用詳解

使用 Java 開發(fā)移動設(shè)備應(yīng)用程序時 可能需要用到特定 Java VM 所沒有的數(shù)學(xué)方法 本文將專門解決 Java ME 沒有 冪 方法 Math pow() 的問題 我們將演示使用三種不同的方法開發(fā)同一個 ME 應(yīng)用程序 并從中選出最佳的編程解決方案

目前成都創(chuàng)新互聯(lián)已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、應(yīng)縣網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

要討論此問題 我們先考察整數(shù)和分?jǐn)?shù)冪參數(shù) 將我們的分析限于正實數(shù) 我們將演示求整數(shù)問題和小數(shù)問題的解集相對而言比較容易(而不考慮指數(shù)的符號) 在大多數(shù)情況下 我們將使用示例問題 n = / 其中我們會求出 n 的良好估計或?qū)嶋H解 如果初始指數(shù)事先不可用 則此問題的其他解(包括牛頓法和割線法)不易編程 雖然二分法是可行的解決方案 但我們將關(guān)注傳統(tǒng)上不為人所探究的三個方法 第一個是簡單的(不過有時效率低下)幾何衰變算法 而第二個方法將利用 Math sqrt() 方法并保證在不超過 次迭代中收斂到一個近似解 第三個方法將使用泰勒級數(shù)逼近法求對數(shù)并對泰勒級數(shù)進(jìn)行歐拉轉(zhuǎn)換

產(chǎn)生整數(shù)解的 ME Math pow() 方法

傳統(tǒng)上 Java Math pow() 方法包含兩個參數(shù) 這兩個參數(shù)包括底數(shù)和指數(shù) 我們假定(最初)這兩個參數(shù)均為整數(shù) 然后求出 ME 中與 Java 方法使用相同參數(shù)的 Math pow() 方法的可編程解 此處 可編程解相當(dāng)簡單 如示例 所示 在本例中 我們僅運行以指數(shù)值為指標(biāo)的倍乘循環(huán)

示例

int?pow(?int?x ?int?y) /*we?define?the?power?method?with ????base?x?and?power?y?(i e ?x^y)*/????{ ????int?z?=?x; ????for(?int?i?=? ;?i??y;?i++?)z?*=?x; ????return????}

當(dāng)然 有人可能會發(fā)現(xiàn)需要求出非整數(shù)冪的值 正實數(shù)的簡單解(無需訪問 Math pow() 方法)可能涉及使用 Math log() 例如 請考慮 / 的情況 利用 / *ln( ) = 中自然對數(shù)的結(jié)果 要得到最終解 需要利用指數(shù) (特別指出 e = ) 在這種情況下 可能不需要使用冪函數(shù) 遺憾的是 Java ME 也不支持 Math log() 方法 沒有 Math pow() 或 Math log() 方法時 我們會考慮使用樸素的 強(qiáng)力 試探性方法 應(yīng)用 Math sqrt() 方法以及自然對數(shù)(和歐拉 e)的泰勒級數(shù)逼近來求得 Java ME 問題的解

使用幾何衰變算法作為強(qiáng)力解的 ME Math pow()

Java ME 的早期實現(xiàn)包括浮點主數(shù)據(jù)類型 float 和 double 最近 已添加了這些類型 現(xiàn)在我們將 Math pow() 聲明中的整型參數(shù)替換為 double 數(shù)據(jù)類型

可能需要在 Java ME Math pow() 冪方法中使用小數(shù)指數(shù) 我們提供的生成 Math pow() 的第一種方法是使用幾何衰變算法的樸素的 強(qiáng)力 試探性方法 簡單而言 衰變算法以一個大于已知解的值開始 然后應(yīng)用某個方法來衰變該值 直到該值非常逼近該解(有關(guān)簡單線性衰變算法的演示 請參見示例 ) 在我們的例子中 將進(jìn)一步演示向上述解收斂的幾何形式

示例

/*?This?example?illustrates?a?simplistic?decay?algorithm?that?we?will?assume ????converges?to?our?desired?solution?(a?positive?integer)?*/????int?n;?//?assume?that?n?is?the?solution?to?the?number?we?are?trying?to?find ????int?varX?=? ; //assume?that?we?know?the?solution?is?less?than?or?equal?to? ????while(?varX?? ?) ????{ ????varX? =? ;?//?decrement?by? ????if(?varX?==?n)return?varX; ????}

在示例 中 我們從 開始遞減 直到找到預(yù)期的數(shù)字 假定預(yù)期數(shù)字是一個正整數(shù) 這種類型的算法構(gòu)成了強(qiáng)力試探性方法的基礎(chǔ)

使用類似的方法 我們可在遇到小數(shù)時應(yīng)用此算法 假定我們需要求出 n 的值 其中 n = / 要使用衰變算法 我們必須首先找到一個合適的起點 該點要等于或大于解本身 這對于帶有正指數(shù)的正實數(shù)很容易做到 對于我們的示例 要對此解進(jìn)行編程 對方法兩邊求立方 得到 n = 當(dāng)然 此方程與 n = 等效 之后 我們的起始值將變?yōu)?我們知道 n 必須小于 (因為 n = ) 注意 如果限于正實數(shù) 則此推導(dǎo)方法同樣適用于任何正指數(shù)值 現(xiàn)在 我們可能需要設(shè)計一個循環(huán)來產(chǎn)生 n 的 充分接近 預(yù)期數(shù)字的解 我們再來看示例 它適合于所有正底數(shù)和正指數(shù)

示例

double?pow(?double?x ?double?y?) //we?define?our?new?power?method?for?fractions ????{ ????int?den?=? ;?//?specify?arbitrary?denominator ????int?num?=?(int)(y*den);?//?find?numerator ????int?s?=?(num/den)+ ; ????/*********************************************************************** ????**?Variable? s ?provides?the?power?for?which?we?multiply?the?base?to?find ????**?our?starting?search?value  For?example ?if?we?seek?a?solution?for ????**?n?=? ^( / ) ?then?we?will?use? ^ ?or? ?as?our?starting?value?(which?is ????**?generated?in?our?next?section?of?code ) Why? The?solution?for?our ????**?problem?(given?that?the?base?is?positive)?will?always?be?less?than?or ????**?equal?to?the?base?times?the?numerator?power ????************************************************************************/????/*********************************************************************** ????**?Because?we?set?the?denominator?to?an?arbitrary?high?value ????**?we?must?attempt?to?reduce?the?fraction ?In?the?example?below ????**?we?find?the?highest?allowable?fraction?that?we?can?use?without ????**?exceeding?the?limitation?of?our?primitive?data?types ????************************************************************************/????double?z?=?Double MAX_VALUE; ????while(?z?=?Double MAX_VALUE?) ????{ ????den? = ;?//?decrement?denominator ????num?=?(int)(y*den);?//?find?numerator ????s?=?(num/den)+ ;?//?adjust?starting?value ????//?find?value?of?our?base?number?to?the?power?of?numerator ????z?=?x; ????for(?int?i?=? ;?i??num;?i++?)z?*=?x; ????} ????/*********************************************************************** ????**?Now?we?are?going?to?implement?the?decay?algorithm?to?find ????**?the?value?of? n ????************************************************************************/????/*********************************************************************** ????**?We?now?find? n ?to?the?power?of? s ?We?will?then?decrement? n ????**?finding?the?value?of? n ?to?the?power?of?the?denominator ?This ????**?value ?variable? a ?will?be?pared?to? z ?If?the? a ?is?nearly ????**?equal?to? z ?then?we?will?return? n ?our?desired?result ????************************************************************************/????double?n?=?x;?//?We?define? n ?as?our?return?value?(estimate)?for? x ????//?find? n ?to?the?power?of? s ????for(?int?i?=? ;?i??s;?i++)n?*=?x; ????//?Begin?decay?loop ????while(?n?? ?) ????{ ????double?a?=?n;?//proxy?for?n ????//?find? a ?the?value?of? n ?to?the?power?of?denominator ????for(?int?i?=? ;?i??den;?i++?)a?*=?n; ????//?pare? a ?to? z ?Is?the?value?within?the?hundred thousandth? ????//?if?so ?return? n ????double?check ?=?a z; ????double?check ?=?z a; ????if(?check ?? ||?check ?? ?)?return?n; ????n?*=? ;//?We?arbitrarily?use?a?decay?of? %?per?iteration ????} ????//?value?could?not?be?found ?return? ????return? ; ????}

本示例演示了衰變算法的使用方法 您會注意到 n 的值(解的估計值)將按 % 強(qiáng)制遞減 您可能需要根據(jù)編程精度要求來改變此值 也可能考慮包括編程邏輯 該邏輯用于將前一迭代解與當(dāng)前迭代進(jìn)行比較 然后 如果有改善繼續(xù)進(jìn)行迭代 但是 如果解已回歸 則返回前一個值

這里講述的解只處理正指數(shù) 如果值為負(fù)會出現(xiàn)什么情況呢?下面我們將解決這種意外情況

處理負(fù)指數(shù)

要再增加一層復(fù)雜度 假定正在向 Math pow() 方法傳遞負(fù)指數(shù) 在這種情況下 指數(shù)為負(fù) 一種簡單的解決方案是將底數(shù)轉(zhuǎn)換為小數(shù) 使指數(shù)為正 例如 可轉(zhuǎn)換為 ( / ) 我們以可編程的方式用底數(shù) x 來除 用 來乘 y(參見示例 )

示例

if(?y?? ?) ????{ ????x?=?( /x);?//?convert?base?number?to?fraction ????y?*=? ;?//?make?exponent?positive ????}

lishixinzhi/Article/program/Java/hx/201311/26818

Java中怎樣怎樣算出求函數(shù)的冪次方?

java中通常進(jìn)行數(shù)學(xué)運算的東西都在Math類中,求函數(shù)的冪次方就是Math類中的pow方法:public static double pow(double?a,?double?b),?返回第一個參數(shù)的第二個參數(shù)次冪的值。

例如求2的3次方,代碼如下:

public class test {

public static void main(String[] args) {

double a= Math.pow(2, 3);

}

}

運行結(jié)果為8

擴(kuò)展資料:

Math 類包含用于執(zhí)行基本數(shù)學(xué)運算的方法,如初等指數(shù)、對數(shù)、平方根和三角函數(shù)。

與 StrictMath 類的某些數(shù)學(xué)方法不同,并非 Math 類所有等價函數(shù)的實現(xiàn)都定義為返回逐位相同的結(jié)果。此類在不需要嚴(yán)格重復(fù)的地方可以得到更好的執(zhí)行。

默認(rèn)情況下,很多 Math 方法僅調(diào)用 StrictMath 中的等價方法來完成它們的實現(xiàn)。建議代碼生成器使用特定于平臺的本機(jī)庫或者微處理器指令(可用時)來提供 Math 方法更高性能的實現(xiàn)。這種更高性能的實現(xiàn)仍然必須遵守 Math 的規(guī)范。

實現(xiàn)規(guī)范的質(zhì)量涉及到兩種屬性,即返回結(jié)果的準(zhǔn)確性和方法的單調(diào)性。浮點 Math 方法的準(zhǔn)確性根據(jù) ulp(units in the last place,最后一位的進(jìn)退位)來衡量。對于給定的浮點格式,特定實數(shù)值的 ulp 是包括該數(shù)值的兩個浮點值的差。

當(dāng)作為一個整體而不是針對具體參數(shù)討論方法的準(zhǔn)確性時,引入的 ulp 數(shù)用于任何參數(shù)最差情況下的誤差。

如果一個方法的誤差總是小于 0.5 ulp,那么該方法始終返回最接近準(zhǔn)確結(jié)果的浮點數(shù);這種方法就是正確舍入。一個正確舍入的方法通常能得到最佳的浮點近似值;然而,對于許多浮點方法,進(jìn)行正確舍入有些不切實際。

相反,對于Math 類,某些方法允許誤差在 1 或 2 ulp 的范圍內(nèi)。非正式地,對于 1 ulp的誤差范圍,當(dāng)準(zhǔn)確結(jié)果是可表示的數(shù)值時,應(yīng)該按照計算結(jié)果返回準(zhǔn)確結(jié)果;否則,返回包括準(zhǔn)確結(jié)果的兩個浮點值中的一個。對于值很大的準(zhǔn)確結(jié)果,括號的一端可以是無窮大。

除了個別參數(shù)的準(zhǔn)確性之外,維護(hù)不同參數(shù)的方法之間的正確關(guān)系也很重要。

因此,大多數(shù)誤差大于 0.5 ulp 的方法都要求是半單調(diào)的:只要數(shù)學(xué)函數(shù)是非遞減的,浮點近似值就是非遞減的;同樣,只要數(shù)學(xué)函數(shù)是非遞增的,浮點近似值就是非遞增的。并非所有準(zhǔn)確性為 1 ulp 的近似值都能自動滿足單調(diào)性要求。

參考資料:

Java 如何擬合冪函數(shù)

package?mainjava;

import?java.util.Scanner;

public?class?mihanshu?{

public?static?void?main(String[]?args)

{

Scanner?sc?=?new?Scanner(System.in);

int?x?=?sc.nextInt();

int?n?=?sc.nextInt();

System.out.println(mihanshu(x,n));

}

public?static?int?mihanshu(int?x,int?n)

{

if(n?==?0)

{

return?1;

}

return?x*mihanshu(x,n-1);

}

}

用遞歸解決,諸如y?=?x^n??每次調(diào)用n都減一,當(dāng)n?=?0時,返回1。即可??如果還有不懂,可追問,我現(xiàn)在給你編寫一下,稍等。

java中怎么輸出冪函數(shù)

java中輸出冪函數(shù)可以:

直接輸出比如?long mi = 2 (n-1)。

也可以跑循環(huán)計算比如 int n = 3;

long mi = 1L;

for(int i = 1; i = n; i++){

mi *= 2;

}

System.out.println(mi)。


當(dāng)前題目:java冪函數(shù)的代碼 java 冪函數(shù)
鏈接分享:http://weahome.cn/article/dosgecd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部