① c語言中怎麼實現反三角函數計算(急,在線等,高手請進!)
#include "math.h"
#include "stdio.h"
void main()
{
char a[10];
double i,j;
printf("請輸入要計算的函數類型!例如:arcsin\n");
scanf("%s",a);
printf("請輸入要計算的值!\n");
scanf("%lf",&i);//注意這里,i被定義成double型,輸出控制符應該是%lf,不是%f
j=atan(i);//是不是應該為atan?
printf("%f",j);
}
② 用C語言實現三角函數及反三角函數怎麼實現
包含頭文件math.h,然後就可以使用sin、asin等這些庫函數了,那些三角函數都有,直接引用即可。注意它們的輸入參數是double型或double型弧度。
③ c語言反正切
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|
④ 請問反正切函數arctanx用c語言怎麼表示
double atan(double x)
x 的反正切函數值tan-1x,傳回的值在 [-pi/2,pi/2] 之間
double atan2(double y, double x)
y/x 的反正切函數值tan-1(y/x),傳回的值在 [-pi, pi] 之間
arctanX的導數是1/(1+X²)這里的X=x/2復合函數求導,需要先求子函數的導數,即X'=1/2再乘上arctanX的導數所以所求導數是1/[2(1+x²/4)]
C語言中之數學函數
C語言提供了以下的數學函數,要使用這些函數時,在程序文件頭必須加入:
#include
編譯時,必須加上參數「-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]
⑤ C語言asin()函數:求反正弦的值(以
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|
⑥ C語言 反三角函數
你仔細看看
e+lab*sin(u1*pi/180)
是117.364807
越界
⑦ 用C語言表示反正弦,反餘弦,反正切函數
計算反正切函數(使用歐拉變換公式,精度很高),反正切函數的級數展開公式:
f(x) = x - x^3/3 + x^5/5 +...+ (-1)^k * x^(2k+1)/(2k + 1)+...
當|x| > 1時,級數絕對值發散,無法直接使用歐拉公式計算。因此可以通過下面的公式
進行等價轉換之後再進行計算。
等價轉換公式:
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,m;
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++)
{
m = wrksp[j+1];
wrksp[j+1] = 0.5 * (wrksp[j] + tmp);
tmp = m;
}
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語言,反三角函數求角度請教
反三角函數 得到的是弧度,除 圓周率乘 180 就得 度數。
如果要算很多個 反三角函數,你可以 建一個系數 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;i<5;i++){
x = i;
y=atan(x) * r2d;
printf("x=%g atan=%lf\n",x,y);
};
printf("==================\n");
for (i=0;i<10;i++){
x = i * 0.1;
y=acos(x) * r2d;
printf("x=%g acos=%lf\n",x,y);
};
return 0;
}