十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
方法一:使用C語言提供的函數(shù)庫,原型定義在math.h中;
我們提供的服務(wù)有:成都網(wǎng)站制作、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、河池ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的河池網(wǎng)站制作公司
方法二:使用泰勒級數(shù)展開。
一些數(shù)學(xué)計(jì)算的公式的具體實(shí)現(xiàn)是放在math.h里,具體有:
double sin (double x); x的正弦值
double cos (double x); x的余弦值
double tan (double x); x的正切值
double asin (double x); 結(jié)果介于[-PI/2, PI/2],x值域?yàn)閇-1,1]
double acos (double x); 結(jié)果介于[0, PI],x值域?yàn)閇-1,1]
double atan (double x); 反正切(主值), 結(jié)果介于[-PI/2, PI/2]
double atan2 (double y, double x); 反正切(整圓值), 結(jié)果介于[-PI, PI]
double sinh (double x); x的雙曲正弦值
double cosh (double x); x的雙曲余弦值
double tanh (double x); x的雙曲正切值
double exp (double x); 冪函數(shù)e^x
double pow (double x, double y); x^y,如果x=0且y=0,或者x0且y不是整型數(shù),將產(chǎn)生定義域錯誤
double sqrt (double x); x的平方根,其中x=0
double log (double x); 以e為底的對數(shù),自然對數(shù),x0
double log10 (double x); 以10為底的對數(shù),x0
double ceil (double x); 取上整
double floor (double x); 取下整
double fabs (double x); x的絕對值
double frexp (double x, int *exp); 標(biāo)準(zhǔn)化浮點(diǎn)數(shù), x = f * 2^exp, 已知x求f, exp ( x介于[0.5, 1] )并返回f值
double ldexp (double x, int exp); 與frexp相反, 已知x, exp求x*2^exp
double modf (double x, double *ip); 將參數(shù)的整數(shù)部分通過指針回傳, 返回小數(shù)部分,整數(shù)部分保存在*ip中
double fmod (double x, double y); 返回兩參數(shù)相除x/y的余數(shù),符號與x相同。如果y為0,則結(jié)果與具體的額實(shí)現(xiàn)有關(guān)
在C語言中,Pow函數(shù)這的是求一個(gè)數(shù)的多少此方,做個(gè)簡單的例子吧
#include math.h
#include stdio.h
void main( void )
{
double x = 2.0, y = 3.0, z;
z = pow( x, y );
printf( "%.1f to the power of %.1f is %.1f\n", x, y, z );
}
LZ這樣可以了嗎??
#includestdio.h
#includemath.h
double?sin(double);
double?nResult(double,double);
int?main()
{
double?x=0;
scanf("%lf",x);
printf("sin(%lf)=%lf\n",x,sin(x));
return?0;
}
double?sin(double?x)
{
//sin(x)=x-x^3/3!+x^5/5!-x^7/7!+……+(-1)(n^2n+1)/(2n+1)!+……
int?i=0;
double?result=0,n=0;
while(?fabs(?n=nResult(x,2*++i-1)?)??0e-5?)//絕對值大于10^-5次方就循環(huán)
result+=(i%2==1)?n:-n;
return?result;
}
double?nResult(double?x,double?n)
{
//(n^2n+1)/(2n+1)!也就是n/1*n/2*n/3*n/4*.....n/(2n+1)
return?n==1?x:nResult(x,n-1)*x/n;
}