數值方法求 和 的x次方

2021-09-03 03:12:04 字數 1599 閱讀 5072

學習了數值分析這門課,老師留了乙個作業是設計數值方法求π的x次方(x範圍為1到10)

具體步驟如下(老師要求的,就是想讓你多用用幾種數值方法,讓你多解幾步)

求π利用上一步的π求lnπ

利用上一步的lnπ求π的x次方

求解π的方法有很多,現在只討論用計算機怎麼求π。一般有下面這三種求法

1.泰勒展開

2.bbp公式

3.高斯勒讓德演算法(最好的一種)

這三種方法具體可以參考

這個博文很詳細我就不再廢話了,下面給出泰勒展開求π的c++**,展開40項即可得到很精確的結果

int h1,i,t;

double dsqrt3=2*sqrt(3);//dsqrt為2倍的根號3,是乙個常量

pi=dsqrt3;

h1=1; //h1為正1或負1

for(i=1;i<40;i++)//採用泰勒展開方法求π

cout << "π的值:";

cout << fixed << setprecision(15)<< pi << endl;

可以用數值積分的方式求

注意:上式中的π用的是第一步求出的π

數值積分有很多方法,比如梯形公式,辛普森公式等等

我採用的是復合辛普森公式(可能不是最好的),原理如下

c++**如下

double h=(pi-1)/500;//pi即為上一步求的π

lnpi=1+1/pi;//設定初值

for(i=1;i<500;i++)//採用復合辛普森公式求數值積分

lnpi=lnpi+4/(pi-h/2);

lnpi=lnpi/6*h;

cout << "lnπ的值:";

cout << fixed << setprecision(15)<< lnpi << endl;

要求用到前兩步的結果,我採用求解常微分方程的方法

求解常微分方程也有很多方法,如各種尤拉法,龍格庫塔,等等

我採用的是四階龍格庫塔公式,如下

c++**如下,給了個龍格庫塔的函式,該函式輸入

x:幾次方

n:區間分為幾份,份數越多越精確

輸出:pix,即結果,表示π的x次方

double rungkutta(double x,double n)//四階龍格-庫塔公式

return pix;

}double derivative(double y)//y(x)的導數,用於微分方程求解

數值的整次方

2 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題 如下 5 include6 using namespace std 7 8 bool g invaildinput false 9 10 ...

數字的數值次方

include using namespace std bool g invalid false bool equal zero double base double exe pow double base,int exponent if exponent 0 return exe pow base...

x 的 x 次方等於10,求 x

當 x 的 x 次方為10時,求 x 的值,精確到小數字後9位 過程如下 2 的 2 次方 小於 10 3 的 3 次方 大於 10 因此 x 在 2 到 3 之間。找出整數部分後,需要計算出小數部分,然後把兩部分加到乙個串裡即可 可以以串的形式輸出,也可以轉成浮點數輸出,下面的程式是以串的形式輸出...