如何編寫指數函式而不使用math h

2022-06-10 07:16:35 字數 1386 閱讀 1955

1樓:匿名使用者

最基本的方法:把b分成整數部分和小數部分。整數部分從右往左數的第n位(二進位制,n從0開始算)對應了a的2 ^ n次方;小數部分從左往右數的的第n位對應了a的2 ^ -(n + 1)次方。

結果初始值為0,如果某一位是1,則結果乘上其所對應a的x次方;否則不乘。

比如b的二進位制表示是101.01 結果就是 a ^ 4 * a ^ 1 * a ^ (1/4)

----

不過開方還是問題,這樣貌似不行+_,+b

----

wangtk1982 的方法玩兒過火了...

硬要弄的話我那個方法配上開方就可以了。遠比那樣繞彎子效率高。而開方最好用牛頓迭代算出倒數,這樣可以避免大量不必要的除法。

不過這樣應該不是合理的實現。vc實現乘方貌似根本沒用開方。

2樓:匿名使用者

#include

const int n=100;

double coef(int n)

//x^n的係數

double horner(double x)double sqrt(double b)return x;

}//開平方

double ln(double x)//ln(1+x)=x-x^2/2+x^3/3-x^4/4……

double log(double m,double base=10)

double exp(double x)

return sum;

}//e^x≈1+x+x^2/2!+x^3/3!+……+x^n/n!

double pow(double m,double n)int main()

3樓:匿名使用者

a^b=exp(blna)

exp和ln函式應該允許用吧.

如果老師bt到任何數學函式都不允許用的話,你就可以用泰勒式,先求出lna,再求冪.

4樓:匿名使用者

double pow(double x,double y)就是求x的y次方,計算x^y的結果;

如果你想求x的y次方(x^y),只需要用乙個for迴圈即可。

列如:求x的16次方

#include

void main()

就你的程式改一改,可以實現你的要求:

#include

int fun(int b,int p)

(改動的)

else

; (改動的)

} return sum; }}

void main()

剛剛執行過,可以實現你的要求

5樓:檀品梁流麗

用基本的數學操作,一項一項算出來

然後累加到一起就可以了。

指數函式的底數為什麼不能小於指數函式的底數為什麼不能小於

1,首先考察函式f x 0 x的特性 定義域 0,值域 2,f x 0 x與g x a x a 0 在很多特性上差異巨大,完全不能和 g x a x a 0 歸為一類。3,為方便討論,在定義指數函式時,乾脆規定a 0。否則的話,每次提到指函式,都必須分兩種情況。這好比 30個人類和乙個猴子在乙個班共...

指數函式中常數a為什麼不能為負,指數函式次數為什麼可以是零,a為什麼不能是負數

如果a小於0的話,函bai 數值無du意義。如果a 0,那麼指數zhix 0的時候,dao函回數值等於1,x 0的時候,函式式無答意義。如果a 0,那麼a的x次方這個冪將不連續,且出現無法確定是否有意義的不定點。因為負數不能開偶數次方,所以當x是最簡分數的時候,分母為偶數的指數將使得a的x次方無意義...

指數函式和對數函式的關係指數函式和對數函式有什麼關係?

指數 4 64 算的是 4 的 3 次方 對數 log 64 3 算的是 4 的 次方 64它們是互為逆運算的 inverse operation 在初等數學中還不能體會出對數化成指數,指數化成對數的靈便。如 y 2 x e ln2 x e xln2 dy dx ln2 e xln2 ln2 2 2...