主要是利用利用數(shù)學(xué)函數(shù)中的反三角函數(shù)。

創(chuàng)新互聯(lián)公司專注于日土企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),購物商城網(wǎng)站建設(shè)。日土網(wǎng)站建設(shè)公司,為日土等地區(qū)提供建站服務(wù)。全流程按需定制開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
1、頭文件math.h中宏定義的是M_PI
#define M_PI 3.14159265358979323846
2、這是一個(gè)在庫文件頭文件math.h中的定義的宏,實(shí)際上就是圓周率π的一個(gè)近似值,約等于3.1415
下面是一個(gè)求三角函數(shù)sin(a)值的一個(gè)程序,這里就用到了M_PI這個(gè)宏。由于這里的a要求是弧度,所以對(duì)于輸入的角的度數(shù)做了相應(yīng)的轉(zhuǎn)換。
#include?stdio.h
#include?math.h
int?main()
{
int?degree;
printf("Please?input?angle?degree:\n");fflush(NULL);
scanf("%d",°ree);
printf("sin(%d)=%f\n",degree,sin(M_PI*degree/180));
return?0;
}
因?yàn)椋侯^文件math.h中宏定義的是M_PI
擴(kuò)展資料:
關(guān)于上述提到的M_PI
.M_PI 是一個(gè)宏定義,圓周率的定義
#define M_PI 3.14159265358979323846
此宏定義和編譯器有關(guān),TC中M_PI宏就定義在math.h里面。
但vc的math.h中沒有了M_PI的宏定義。
常見宏定義:
#includebits/stdc++.h
#define _USE_MATH_DEFINES
using namespace std;
int main()
{
coutM_PIendl;
coutM_Eendl;
return 0;
}?
#if defined(_USE_MATH_DEFINES) !defined(_MATH_DEFINES_DEFINED)
#define _MATH_DEFINES_DEFINED
#define M_E? ? ? ? 2.71828182845904523536
#define M_LOG2E? ? 1.44269504088896340736
#define M_LOG10E? ?0.434294481903251827651
#define M_LN2? ? ? 0.693147180559945309417
#define M_LN10? ? ?2.30258509299404568402
#define M_PI? ? ? ?3.14159265358979323846
#define M_PI_2? ? ?1.57079632679489661923
#define M_PI_4? ? ?0.785398163397448309616
#define M_1_PI? ? ?0.318309886183790671538
#define M_2_PI? ? ?0.636619772367581343076
#define M_2_SQRTPI 1.12837916709551257390
#define M_SQRT2? ? 1.41421356237309504880
#define M_SQRT1_2? 0.707106781186547524401
#endif? /* _USE_MATH_DEFINES */
輸入:要在C語言中使用圓周率π值,一般使用宏定義或者常變量的方式實(shí)現(xiàn)。并根據(jù)精度要求,定義實(shí)際值。用三角函數(shù)可以打印出pi。cos(pi)=-1的,用反三角函數(shù)acos(-1.0)=pi。
標(biāo)準(zhǔn)的C語言中沒有π這個(gè)符號(hào)及常量,一般在開發(fā)過程中是通過開發(fā)人員自己定義這個(gè)常量的,最常見的方式是使用宏定義:#definePI3.141592。
可以直接普通變量定義,如:doublepi=3.141592;C語言中,并不支持希臘字符π,而且,也不存在系統(tǒng)自帶的π(圓周率值)。
C語言
一門面向過程的、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C語言是僅產(chǎn)生少量的機(jī)器語言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語言。
盡管C語言提供了許多低級(jí)處理的功能,但仍然保持著跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在包括類似嵌入式處理器以及超級(jí)計(jì)算機(jī)等作業(yè)平臺(tái)的許多計(jì)算機(jī)平臺(tái)上進(jìn)行編譯。
計(jì)算反正切函數(shù)(使用歐拉變換公式,精度很高),反正切函數(shù)的級(jí)數(shù)展開公式:
f(x) = x - x^3/3 + x^5/5 +...+ (-1)^k * x^(2k+1)/(2k + 1)+...
當(dāng)|x| 1時(shí),級(jí)數(shù)絕對(duì)值發(fā)散,無法直接使用歐拉公式計(jì)算。因此可以通過下面的公式
進(jìn)行等價(jià)轉(zhuǎn)換之后再進(jìn)行計(jì)算。
等價(jià)轉(zhuǎn)換公式:
a) ATan(1/x) = Pi/2 - ATan(x)
b) ATan(-x) = - ATan(x)
特殊情況
0 = ArcTan(0)
Pi/2 = ArcTan(無窮大)
//
// 歐拉公式
//
// sum是和,term是通項(xiàng)值,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];
}
}
}
級(jí)數(shù)計(jì)算就不用我給代碼了吧。
反三角函數(shù) 得到的是弧度,除 圓周率乘 180 就得 度數(shù)。
如果要算很多個(gè) 反三角函數(shù),你可以 建一個(gè)系數(shù) r2d.
弧度 乘 r2d 得角度。
例如:
#include stdio.h
#include math.h
int main()
{
double x,y;
double pi=asin(1.0)*2.0;
double r2d=180.0/pi;
int i;
for (i=0;i5;i++){
x = i;
y=atan(x) * r2d;
printf("x=%g atan=%lf\n",x,y);
};
printf("==================\n");
for (i=0;i10;i++){
x = i * 0.1;
y=acos(x) * r2d;
printf("x=%g acos=%lf\n",x,y);
};
return 0;
}
網(wǎng)頁標(biāo)題:c語言如何用pi反函數(shù) c語言的pi怎么寫
分享鏈接:http://chinadenli.net/article48/hpjgep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站制作、網(wǎng)站改版、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)