是的啊,我給你再舉個例子,以下兩行分別打印出tan(45)=1,atan(1)=45。
十余年的榆次網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網營銷推廣的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整榆次建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“榆次網站設計”,“榆次網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
注意:要用double類型,不然會得到錯誤的結果。
#include stdio.h
#include math.h
#define pi 3.1415926
void main()
{
printf("%f\n",tan(double(45)/double(180)*pi));
printf("%f\n",atan(1)*double(180)/pi);
}
計算反正切函數(使用歐拉變換公式,精度很高),反正切函數的級數展開公式:
f(x) = x - x^3/3 + x^5/5 +...+ (-1)^k * x^(2k+1)/(2k + 1)+...
當|x| 1時,級數絕對值發(fā)散,無法直接使用歐拉公式計算。因此可以通過下面的公式
進行等價轉換之后再進行計算。
等價轉換公式:
a) ATan(1/x) = Pi/2 - ATan(x)
b) ATan(-x) = - ATan(x)
特殊情況
0 = ArcTan(0)
Pi/2 = ArcTan(無窮大)
//
// 歐拉公式
//
// sum是和,term是通項值,jterm初始為1,以后按1遞增。wrksp是工作單元,視jterm的
// 最大值而定。
//
void eulsum(int nterm,double *sum,double term,int jterm,double wrksp[])
{
double tmp,dum;
if(jterm == 1)
{
nterm = 1;
wrksp[1] = term;
*sum = 0.5 * term;
}
else
{
tmp = wrksp[1];
wrksp[1] = term;
for(int j=1; j = nterm; j++)
{
dum = wrksp[j+1];
wrksp[j+1] = 0.5 * (wrksp[j] + tmp);
tmp = dum;
}
if(fabs(wrksp[nterm + 1]) = fabs(wrksp[nterm]))
{
*sum = *sum + 0.5 * wrksp[nterm + 1];
nterm = nterm + 1;
}
else
{
*sum = *sum + wrksp[nterm + 1];
}
}
}
級數計算就不用我給代碼了吧。
C語言中之數學函數
C語言提供了以下的數學函數,要使用這些函數時,在程序文件頭必須加入:
#include math.h
編譯時,必須加上參數「-lm」(表示連結至數學函式庫),例如「gcc -lm test.c」。
函數之自變量與傳回之值型別見自變量或函數前之型別宣告。
函數已經在「math.h」或其它標頭檔宣告過了,因此在使用時不必再加型別宣告,例如「y=sin(x);」,不用寫成「y=double sin(double x);」。
函數說明
double sin(double x)
x 的正弦函數值
double cos(double x)
x 的余弦函數值
double tan(double x)
x 的正切函數值
double asin(double x)
x 的反正弦函數值 sin-1x,x的值在 [-1,1] 之間,傳回的值在 [-p/2,p/2] 之間
double acos(double x)
x 的反余弦函數值cos-1x,x的值在 [-1,1] 之間,傳回的值在 [-p/2,p/2] 之間
double atan(double x)
x 的反正切函數值tan-1x,傳回的值在 [-p/2,p/2] 之間
double atan2(double y, double x)
y/x 的反正切函數值tan-1(y/x),傳回的值在 [-p, p] 之間
double sinh(double x)
x 的雙曲正弦函數值
double cosh(double x)
x 的雙曲余弦函數值
double tanh(double x)
x 的雙曲正切函數值
double exp(double x)
x 的指數函數 ex
double log(double x)
x 的自然對數 ln(x),x 0
double log10(double x)
x 底數為 10 的對數,log10x,x 0
double pow(double x, double y)
x 的 y 次方 xy
double sqrt(double x)
x 的根號值 √x
double ceil(double x)
不小于 x 的最小整數(但其型別為 double)
double floor(double x)
不大于 x 的最大整數(但其型別為 double)
int abs(int x)
整數 x 的絕對值 |x|
long labs(long x)
長整數 x 的絕對值 |x|
double fabs(double x)
實數 x 的絕對值 |x|
在math.h頭文件里面。
atan函數是反正切函數,而math.h頭文件包含了全部的數學函數公式。
資料延伸:
math.h 頭文件包含了一系列與數學計算相關的函數和宏。根據函數功能的不同,可以將它們分為以下幾類。
三角函數
cos()是余弦函數,求某個角的余弦值
sin()是正弦函數,求某個角的正弦值
tan()是正切函數,求某個角的正切值
acos()是反余弦函數,求反余弦值
asin()是反正弦函數,求反正弦值
atan()是反正切函數,求反正切值
atan2()是反正切函數,atan()的增強版,能確定具體象限。
謝謝采納!