c语言math库.doc_第1页
c语言math库.doc_第2页
c语言math库.doc_第3页
c语言math库.doc_第4页
c语言math库.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

详细请查看/cpp/u/math_h//cpp/u/biaozhunku/头文件:#include acos() 函数返回一个以弧度表示的反余弦值,其原型为: double acos (double x);【参数】x 为余弦值,范围为 -1 到 1 之间,超出此范围将会导致错误,并设置 errno 的值为 EDOM.【返回值】返回 0 至 之间的计算结果,单位为弧度,在函数库中角度均以弧度来表示。弧度与角度的关系为:弧度 =180 / 角度角度 = / 180 弧度注意:使用 GCC 编译时请加入lm。【实例】求 0.5 的反余弦。复制纯文本新窗口1. #include 2. main() 3. double angle; 4. angle = acos(0.5); 5. printf(angle = %fn, angle); 6. #include main() double angle; angle = acos(0.5); printf(angle = %fn, angle);运行结果:angle = 1.047198又如,由余弦值求对应的角度。 复制纯文本新窗口1. #include 2. #include 3. int main(void) 4. 5. double angl,result; 6. angl = 1; 7. result =acos(cos(angl);/*求反余弦值*/ 8. printf(acos(%lf) is %lfn,cos(angl),result);/*格式化输出*/ 9. angl = 3.1415926; 10. result = acos(cos(angl);/*求反余弦值*/ 11. printf(acos(%lf) is %lfn,cos(angl),result);/*格式化输出*/ 12. return 0; 13. #include#includeint main(void) double angl,result; angl = 1; result =acos(cos(angl);/*求反余弦值*/ printf(acos(%lf) is %lfn,cos(angl),result);/*格式化输出*/ angl = 3.1415926; result = acos(cos(angl);/*求反余弦值*/ printf(acos(%lf) is %lfn,cos(angl),result);/*格式化输出*/ return 0;运行结果:acos(0.540302) is 1.000000acos (-1.000000) is 3.141593这个例子可以对照余弦函数例子学习,示例中都是使用余弦值作为参数,然后再使用 acos() 函数求出该角度以便对比。头文件:#include cos() 函数用来求余弦值,即求角的临边长度除以斜边长度的比值,其原型为: double cos(double x);【参数】x 为一个弧度。【返回值】返回-1 至1 之间的计算结果。弧度与角度的关系为:弧度 = 180 / 角度角度 = / 180 弧度使用 rtod( ) 函数可以将弧度值转换为角度值。注意,使用 GCC 编译时请加入-lm。【实例】求两个角度的余弦值并输出, 复制纯文本新窗口1. #include 2. #include 3. int main(void) 4. 5. double angl,result; 6. angl = 1; 7. result = cos(angl);/*求余弦值*/ 8. printf(cos(%lf) is %lfn,angl,result);/*格式化输出*/ 9. angl = 3.1415926; 10. result = cos(angl);/*求余弦值*/ 11. printf(cos(%lf) is %lfn,angl,result);/*格式化输出*/ 12. return 0; 13. #include#includeint main(void) double angl,result; angl = 1; result = cos(angl);/*求余弦值*/ printf(cos(%lf) is %lfn,angl,result);/*格式化输出*/ angl = 3.1415926; result = cos(angl);/*求余弦值*/ printf(cos(%lf) is %lfn,angl,result);/*格式化输出*/ return 0;运行结果:cos(1.000000) is 0.540302cos(3.141593) is -1.000000程序中的参数都是直接使用的弧度值,如果只知 道角度,可以使用角度乘以 / 180 的方法得到弧度值。头文件:#include cosh()用来计算参数x 的双曲余玄值,然后将结果返回。其原型为: double cosh(double x);双曲余弦的数学定义式为: (exp(x)+exp(x)/2即注意,使用 GCC 编译时请加入-lm。双曲余弦在区间 -5 = x = 5 上的函数图像。【实例】求0.5的双曲余弦值。 复制纯文本新窗口1. #include 2. main() 3. double answer = cosh(0.5); 4. printf(cosh(0.5) = %fn, answer); 5. #include main() double answer = cosh(0.5); printf(cosh(0.5) = %fn, answer);运行结果:cosh(0.5) = 1.127626又如,求双曲余弦上某一点的值。 复制纯文本新窗口1. #include 2. #include 3. int main(void) 4. 5. double resut; 6. double x =1; 7. resut = cosh(x);/*求双曲余弦值*/ 8. printf(cosh(%lf) = %lfn,x,resut);/*格式化输出*/ 9. return 0; 10. #include#includeint main(void) double resut; double x =1; resut = cosh(x);/*求双曲余弦值*/ printf(cosh(%lf) = %lfn,x,resut);/*格式化输出*/ return 0;运行结果:cosh(1.000000) = 1.543081程序先定义两个double型变量,resut保存计算结果,x提供双曲余弦函数点。语句resut = cosh(x);的作用是求该函数上x点对应的数值,然后把结果赋值给resut。头文件:#include exp()用来计算以e 为底的x 次方值,即ex 值,然后将结果返回。其原型为: double exp(double x);【返回值】返回 e 的x 次方计算结果。注意,使用 GCC 编译时请加入-lm。【实例】计算e的10次方的值。复制纯文本新窗口1. #include 2. main() 3. double answer; 4. answer = exp (10); 5. printf(e10 =%fn, answer); 6. #include main() double answer; answer = exp (10); printf(e10 =%fn, answer);运行结果:e10 = 22026.465795头文件:#include frexp()用来把一个数分解为尾数和指数,其原型为: double frexp(double x, int *exp);【参数】x 为待分解的浮点数,exp 为存储指数的指针。设返回值为 ret,则x = ret * 2exp,其中 exp 为整数,ret 的绝对值在 0.5(含) 到 1(不含) 之间。如果 x = 0,则 ret = exp = 0【返回值】将尾数 ret 返回。注意,使用 GCC 编译时请加入-lm。请看下面的代码: 复制纯文本新窗口1. #include /* printf */ 2. #include /* frexp */ 3. 4. int main () 5. 6. double param, result; 7. int n; 8. 9. param = 8.0; 10. result = frexp (param , &n); 11. printf (%f = %f * 2%dn, param, result, n); 12. return 0; 13. #include /* printf */#include /* frexp */int main () double param, result; int n; param = 8.0; result = frexp (param , &n); printf (%f = %f * 2%dn, param, result, n); return 0;输出结果:8.000000 = 0.500000 * 24将第 7 行 param 的值改为242.354,则输出结果为:242.354000 = 0.946695 * 28头文件:#include ldexp()用来求一个数乘上2的exp次方的值,原型为: double ldexp(double x, int exp);【参数】x 为尾数,exp 为幂数。设返回值为 ret,则 ret = x * 2exp【返回值】返回 ret。注意,使用 GCC 编译时请加入-lm。【范例】计算3*(22) 的值。复制纯文本新窗口1. #include 2. main() 3. int exp; 4. double x, answer; 5. answer = ldexp(3, 2); 6. printf(3*2(2) = %fn, answer); 7. #include main() int exp; double x, answer; answer = ldexp(3, 2); printf(3*2(2) = %fn, answer);运算结果:3*2(2) = 12.000000头文件:#include log() 函数返回以 e 为底的对数值,其原型为: double log (double x);log()用来计算以e为底的 x 的对数值,然后将结果返回。设返回值为 ret,则x = eret如果 x 为负数或 0,则会发生错误并设置 errno 值。错误代码: EDOM:参数x 为负数; ERANGE:参数x 为零值,零的对数值无定义。 注意:使用 GCC 编译时请加入-lm。【实例】求5.5的对数。 复制纯文本新窗口1. #include 2. #include 3. 4. int main () 5. 6. double param, result; 7. param = 5.5; 8. result = log (param); 9. printf (log(%f) = %fn, param, result ); 10. return 0; 11. #include #include int main () double param, result; param = 5.5; result = log (param); printf (log(%f) = %fn, param, result ); return 0;输出结果:log(5.500000) = 1.704748头文件:#include log10()返回以10为底的对数值,其原型为: double log10(double x);log10()用来计算以10为底的 x 的对数值,然后将结果返回。设返回值为 ret,则x = 10ret返回值:返回参数x 以10 为底的对数值。如果 x 为负数或 0,则会发生错误并设置 errno 值。错误代码: EDOM:参数x 为负数; ERANGE:参数x 为零值,零的对数值无定义。 注意:使用 GCC 编译时请加入-lm。【实例】复制纯文本新窗口1. #include 2. main() 3. double answer; 4. answer = log10(100); 5. printf(log10(100) = %fn, answer); 6. #include main() double answer; answer = log10(100); printf(log10(100) = %fn, answer);输出结果:log10(100) = 2.000000头文件:#include pow() 函数用来求 x 的 y 次幂(次方),其原型为: double pow(double x, double y);pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则ret = xy。可能导致错误的情况: 如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error错误。 如果底数 x 和指数 y 都是 0,可能会导致 domain error错误,也可能没有;这跟库的实现有关。 如果底数 x 是 0,指数 y 是负数,可能会导致domain error 或pole error 错误,也可能没有;这跟库的实现有关。 如果返回值 ret 太大或者太小,将会导致range error 错误。 错误代码: 如果发生domain error 错误,那么全局变量 errno 将被设置为 EDOM; 如果发生pole error 或range error 错误,那么全局变量 errno 将被设置为 ERANGE。 注意,使用 GCC 编译时请加入-lm。【实例】请看下面的代码。 复制纯文本新窗口1. #include 2. #include 3. 4. int main () 5. 6. printf (7 3 = %fn, pow (7.0, 3.0) ); 7. printf (4.73 12 = %fn, pow (4.73, 12.0) ); 8. printf (32.01 1.54 = %fn, pow (32.01, 1.54) ); 9. return 0; 10. #include #include int main () printf (7 3 = %fn, pow (7.0, 3.0) ); printf (4.73 12 = %fn, pow (4.73, 12.0) ); printf (32.01 1.54 = %fn, pow (32.01, 1.54) ); return 0;输出结果:7 3 = 343.0000004.73 12 = 125410439.21742332.01 1.54 = 208.036691头文件:#include sin() 函数用来求给定值的正弦值,其原型为: double sin(double x);【参数】给定的值(弧度)。【返回值】返回-1 至1 之间的计算结果。弧度与角度的关系为:弧度 = 180 / 角度角度 = / 180 弧度使用 rtod( ) 函数可以将弧度值转换为角度值。注意,使用 GCC 编译时请加入-lm。举例如下: 复制纯文本新窗口1. #include 2. #include 3. 4. int main () 5. 6. printf (7 3 = %fn, pow (7.0, 3.0) ); 7. printf (4.73 12 = %fn, pow (4.73, 12.0) ); 8. printf (32.01 1.54 = %fn, pow (32.01, 1.54) ); 9. return 0; 10. #include #include int main () printf (7 3 = %fn, pow (7.0, 3.0) ); printf (4.73 12 = %fn, pow (4.73, 12.0) ); printf (32.01 1.54 = %fn, pow (32.01, 1.54) ); return 0;输出结果:7 3 = 343.0000004.73 12 = 125410439.21742332.01 1.54 = 208.036691头文件:#include sinh() 用来求双曲正弦值,其原型为: double sinh(double x);【参数】x 为即将被计算的值。双曲正弦的定义为:(exp(x)-exp(-x)/2,即双曲线示意图如下:【返回值】返回参数x 的双曲正玄值。如果返回值过大,将返回 HUGE_VAL、或 HUGE_VALF、或 HUGE_VALL,正负号与 x 相同,并导致一个范围溢出错误,将全局变量 errno 设置为ERANGE。注意,使用 GCC 编译时请加入-lm。请看下面的代码:复制纯文本新窗口1. #include 2. main() 3. double answer = sinh(0.5); 4. printf(sinh(0.5) = %fn, answer); 5. #include main() double answer = sinh(0.5); printf(sinh(0.5) = %fn, answer);输出结果:sinh(0.5) = 0.521095头文件:#include sqrt() 用来求给定值的平方根,其原型为: double sqrt(double x);【参数】x 为要计算平方根的值。如果 x 0,将会导致domain error 错误,并把全局变量 errno 的值为设置为EDOM。【返回值】返回 x 平方根。注意,使用 GCC 编译时请加入-lm。【实例计算200 的平方根值。 复制纯文本新窗口1. #include 2. main() 3. double root; 4. root = sqrt(200); 5. printf(answer is %fn, root); 6. #include main() double root; root = sqrt(200); printf(answer is %fn, root);输出结果:answer is 14.142136头文件:#include tan() 函数用来求给定值的正切值,其原型为: double tan(double x);【参数】x 为给定的弧度值。【返回值】返回 x 的正切值。注意,使用 GCC 编译时请加入-lm。请看下面的代码: 复制纯文本新窗口1. #include 2. main() 3. double answer = tan(0.5); 4. printf(tan(0.5) = %fn, answer); 5. #include main() double answer = tan(0.5); printf(tan(0.5) = %fn, answer);输出结果:tan(0.5) = 0.546302头文件:#include tanh() 用来求一个数的双曲正切值,其原型为: double tanh(double x);【参数】x 为双曲正切上的某点。【返回值】返回 x 的双曲正切值,取值范围为 -1 到 1。双曲正切的定义为sinh(x)/cosh(x),即双曲正切曲线示意图:注意,使用 GCC 编译时请加入-lm。请看下面的代码: 复制纯文本新窗口1. #include 2. main() 3. double answer = tanh(0.5); 4. printf(tanh(0.5) = %fn, answer); 5. #include main() double answer = tanh(0.5); printf(tanh(0.5) = %fn, answer);输出结果:tanh(0.5) = 0.462117头文件:#include fabs() 函数用来求浮点数的绝对值。在TC中原型为: float fabs(float x);在VC6.0中原型为: double fabs( double x );【参数】x 为一个浮点数。【返回值】计算|x|,当x不为负时返回 x,否则返回 -x。【实例】求任意一个双精度数的绝对值。 复制纯文本新窗口1. #include 2. #include 3. #include 4. int main(void) 5. 6. char c; 7. float i=-1; 8. /*提示用户输入数值类型*/ 9. printf(I can get the float numbers absolute value:n); 10. scanf(%f,&i); 11. while(1)/*循环*/ 12. 13. printf(%fn,fabs(i);/*求双精度绝对值并格式化*/ 14. scanf(%f,&i);/*等待输入*/ 15. 16. system(pause); 17. return 0; 18. #include#include#includeint main(void) char c; float i=-1; /*提示用户输入数值类型*/ printf(I can get the float numbers absolute value:n); scanf(%f,&i); while(1)/*循环*/ printf(%fn,fabs(i);/*求双精度绝对值并格式化*/ scanf(%f,&i);/*等待输入*/ system(pause); return 0;运行结果:I can get the float numbers absolute values-2.42.400000程序首先使用 printf 函数输出一句提示信息,然后使用 scanf() 函数等待用户输入双精度数据,while循环会不停地等待用户输入新的数据,最后使用 fabs() 函数求其绝对值并输出。头文件:#include abs()函数用来求一个整数的绝对值,其原型为: int abs (int x);【参数】x 为一个整数。【返回值】计算|x|,当 x 不为负时返回 x,否则返回 -x。【实例】输出 -12 的绝对值。 复制纯文本新窗口1. #ingclude 2. main() 3. int ansert; 4. answer = abs(-12); 5. printf(|-12| = %dn, answer); 6. #ingclude main() int ansert; answer = abs(-12); printf(|-12| = %dn, answer);运行结果:|-12| = 12又如,求任何一个整数的绝对值。 复制纯文本新窗口1. #include 2. #include 3. #include 4. int main(void) 5. 6. char c; 7. int i=-1; 8. /*提示用户输入信息值*/ 9. printf(I can get the numbers absolute value:n); 10. scanf(%d,&i); 11. while(1)/*循环*/ 12. 13. printf(%dn,abs(i);/*求绝对值并格式化*/ 14. scanf(%d,&i); 15. 16. system(pause); 17. return 0; 18. #include#include#includeint main(void) char c; int i=-1; /*提示用户输入信息值*/ printf(I can get the numbers absolute value:n); scanf(%d,&i); while(1)/*循环*/ printf(%dn,abs(i);/*求绝对值并格式化*/ scanf(%d,&i); system(pause); return 0;运行结果:I can get the numbers absolute value:-10010000程序首先使用 printf() 函数输出一句提示信息,然 后使用 scanf() 函数等待用户输入整数,while循环会不停地等待用户输入新的数据 abs() 函数求其绝对值输出,记住这个例子是求整数 的绝对值。头文件:#include atan() 函数用来求反正切的值,其原型为: double atan(double x);参数 x 为任意值,返回值以弧度表示,范围为-/2 到 +/2 (-1.57079 到 1.57079)。返回值显示到小数点后第几位数由 SET DECIMALS 决定。注意,仅仅根据正弦值 x 并不能确定返回值位于哪一个象限,因此 atan() 的返回值不包含象限信息,如果想知道在哪一象限,请参考 atan2() 函数。弧度与角度的关系为:弧度 = 180 / 角度角度 = / 180 弧度使用 rtod( ) 函数可以将弧度值转换为角度值。注意,使用 GCC 编译时请加入-lm。例如,求 1.0 的反正切值。 复制纯文本新窗口1. #include 2. #include 3. 4. #define PI 3.14159265 5. 6. int main () 7. 8. double param, result; 9. param = 1.0; 10. result = atan (param) * 180 / PI; 11. printf (The arc tangent of %f is %f degreesn, param, result ); 12. return 0; 13. #include #include #define PI 3.14159265int main () double param, result; param = 1.0; result = atan (param) * 180 / PI; printf (The arc tangent of %f is %f degreesn, param, result ); return 0;运行结果:The arc tangent of 1.000000 is 45.000000 degrees.又如,知道一个正切值,求其反正切。 复制纯文本新窗口1. #include 2. #include 3. int main(void) 4. 5. double angl,result; 6. angl = 1; 7. result =atan(tan(angl);/*求反正切值*/ 8. printf(atan(%lf) is %lfn,tan(angl),result);/*格式化输出*/ 9. angl = 3.1415926; 10. result = atan(angl);/*求反正切值*/ 11. printf(atan(%lf) is %lfn,tan(angl),result);/*格式化输出*/ 12. return 0; 13. #include#includeint main(void) double angl,result; angl = 1; result =atan(tan(angl);/*求反正切值*/ printf(atan(%lf) is %lfn,tan(angl),result);/*格式化输出*/ angl = 3.1415926; result = atan(angl);/*求反正切值*/ printf(atan(%lf) is %lfn,tan(angl),result);/*格式化输出*/ return 0;运行结果:atan(1.557408) is 1.000000atan(-0.000000) is 1.262627程序先定义double型角度变量angl和结果变量 result,然后把角度变量值赋值为1,语句atan(tan(angl)的作用是先求角度angl的正切值,再将该正切值赋值给result,正确的结果应该是1,紧接着下一句是使用 printf() 函数输出计算结果到计算机屏幕。后面的代码功能一样,只是换个角度值以便对比。头文件:#include atan2() 函数用于求 y / x 的反正切值。其原型为: double atan2(double y, double x);【参数】x为坐标的X轴值,y为坐标的Y轴值。如果 x 和 y 的值都为 0,将会导致错误。atan2() 求坐标 x 和 y 的坐标的反正切值。反正切的角度值等于 X 轴与通过原点和给定坐标点的直线之间的夹角。结果以弧度表示,并介于 - 到 之间。在三角函数中,两个参数的函数 atan2() 是正切函数的一个变种。对于任意不同时等于 0 的实参数x和y,atan2(y,x) 所表达的意思是坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间的角的角度。当 y0 时,射线与 x 轴正方向的所得的角的角度指的是 x 轴正方向绕逆时针方向到达射线旋转的角的角度;而当 y0 时,射线与 x 轴正方向所得的角的角度指的是 x 轴正方向绕顺时针方向达到射线旋转的角的角度。【返回值】返回以弧度表示的反正切值,范围为 -/2 至 /2 之间。弧度与角度的关系为:弧度 = 180 / 角度角度 = / 180 弧度使用 rtod( ) 函数可以将弧度值转换为角度值。注意,使用 GCC 编译时请加入-lm。例如,求x=-10.000000, y=10.000000 的反正切。 复制纯文本新窗口1. #include 2. #include 3. 4. #define PI 3.14159265 5. 6. int main () 7. 8. double x, y, result; 9. x = -10.0; 10. y = 10.0; 11. result = atan2 (y,x) * 180 / PI; 12. printf (The arc tangent for (x=%f, y=%f) is %f degreesn, x, y, result ); 13. return 0; 14. #include #include #define PI 3.14159265int main () double x, y, result; x = -10.0; y = 10.0; result = atan2 (y,x) * 180 / PI; printf (The arc tangent for (x=%f, y=%f) is %f degreesn, x, y, result ); return 0;输出结果:The arc tangent for (x=-10.000000, y=10.000000) is 135.000000 degrees.又如,求两个角度的余弦值并输出。 复制纯文本新窗口1. #include 2. #include 3. int main(void) 4. 5. double result; 6. double p_X = 100.0,p_Y = 50.0; 7. result =atan2(p_Y,p_X); / 求反正切值 8. printf(atan2(%lf,%lf) is %lfn,p_X,p_Y,result); / 格式化输出 9. 10. return 0; 11. #include#includeint main(void) double result; double p_X = 100.0,p_Y = 50.0; result =atan2(p_Y,p_X); / 求反正切值 printf(atan2(%lf,%lf) is %lfn,p_X,p_Y,result); / 格式化输出 return 0;运行结果atan2(100.000000,50.000000) is 0.463648程序先定义3个变量,一个结果变量result,两 个坐标变量p_X和p_Y。语句result=atan2(p_Y,p_X);的作用是求出以p_Y为X轴坐标,p_X为Y轴坐标的反正切值,结果赋值于 result,最后使用printf()函数输出显示。头文件:#include ceil()向上取整,即求不小于某个数的最小整数,其原型为: double ceil (double x);【参数】x 为一个指定的数。【返回值】返回一个不小于 x 的最小整数。【实例】代码如下: 复制纯文本新窗口1. #include /* printf */ 2. #include /* ceil */ 3. 4. int main () 5. 6. printf ( ceil of 2.3 is %.1fn, ceil(2.3) ); 7. printf ( ceil of 3.8 is %.1fn, ceil(3.8) ); 8. printf ( ceil of -2.3 is %.1fn, ceil(-2.3) ); 9. printf ( ceil of -3.8 is %.1fn, ceil(-3.8) ); 10. return 0; 11. #include /* printf */#include /* ceil */int main () printf ( ceil of 2.3 is %.1fn, ceil(2.3) ); printf ( ceil of 3.8 is %.1fn, ceil(3.8) ); printf ( ceil of -2.3 is %.1fn, ceil(-2.3) ); printf ( ceil of -3.8 is %.1fn, ceil(-3.8) ); return 0;输出结果:ceil of 2.3 is 3.0ceil of 3.8 is 4.0ceil of -2.3 is -2.0ceil of -3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论