数学函数

函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置

举例如下:

一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标

pos = lower_bound( number, number + 8, 3) - number,pos = 0.即number数组的下标为0的位置。

pos = lower_bound( number, number + 8, 9) - number, pos = 1,即number数组的下标为1的位置(即10所在的位置)。

pos = lower_bound( number, number + 8, 111) - number, pos = 8,即number数组的下标为8的位置(但下标上限为7,所以返回最后一个元素的下一个元素)。

所以,要记住:函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,且last的位置是越界的!!~

返回查找元素的第一个可安插位置,也就是“元素值>=查找值”的第一个元素的位置

 

三角函数:(所有参数必须为弧度)

1.acos

函数申明:acos (double x);

用途:用来返回给定的 X 的反余弦函数。

2.asin

函数申明:asin (double x);

用途:用来返回给定的 X 的反正弦函数。

3.atan

函数申明:atan (double x);

用途:用来返回给定的 X 的反正切函数。

4.sin

函数声明:sin (double x);

用途:用来返回给定的 X 的正弦值。

5.cos

函数声明:cos (double x);

用途:用来返回给定的 X 的余弦值。

6.tan

函数声明:tan (double x);

用途:用来返回给定的 X 的正切值。

7.atan2

函数声明:atan2 (double y, double x);

用途:返回给定的 X 及 Y 坐标值的反正切值

在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x)  他们返回的值是弧度要转化为角度再自己处理下。

前者接受的是一个正切值(直线的斜率)得到夹角,但是由于正切的规律性本可以有两个角度的但它却只返回一个,因为atan的值域是从-90~90 也就是它只处理一四象限,所以一般不用它。

第二个atan2(double y,double x) 其中y代表已知点的Y坐标 同理x ,返回值是此点与远点连线与x轴正方向的夹角,这样它就可以处理四个象限的任意情况了,它的值域相应的也就是-180~180了

例如:

例1:斜率是1的直线的夹角

cout<<atan(1.0)*180/PI;//45°

cout<<atan2(1.0,1.0)*180/PI;//45° 第一象限

cout<<atan2(-1.0,-1.0)*180/PI;//-135°第三象限

后两个斜率都是1 但是atan只能求出一个45°

例2:斜率是-1的直线的角度

cout<<atan(-1.0)*180/PI;//-45°

cout<<atan2(-1.0,1.0)*180/PI;//-45° y为负 在第四象限

cout<<atan2(1.0,-1.0)*180/PI;//135° x为负 在第二象限

常用的不是求过原点的直线的夹角往往是求一个线段的夹角 这对于atan2就更是如鱼得水了

例如求A(1.0,1.0) B(3.0,3.0)这个线段AB与x轴正方向的夹角

用atan2表示为 atan2(y2-y1,x2-x1) 即 atan2(3.0-1.0,3.0-1.0)

它的原理就相当于把A点平移到原点B点相应变成B'(x2-x1,y2-y1)点 这样就又回到先前了

例三:

A(0.0,5.0) B(5.0,10.0)

线段AB的夹角为

cout<<atan2(5.0,5.0)*180/PI;//45°

其他函数:

8.atof

函数名: atof (const char *s);

功 能: 把字符串转换成浮点数

用 法: double atof(const char *nptr);

程序例:

#include <stdlib.h>

#include <stdio.h>

int main(void)

{

    floatarg,*point=&arg;

    float f;

    char *str ="12345.67";

    f = atof(str);

    printf("string =%s float = %f\n", str, f);

    return 0;

}

9. ceil 和 floor

函数名: ceil

floor

功 能: 向上舍入

向下舍入

用 法: double ceil(double x);

double floor(double x);

程序例:

#include<math.h>

int main(void)

{

    double number =123.54;

    double down, up;

    down = floor(number);

    up = ceil(number);

    printf("originalnumber %5.2lf\n", number);

    printf("numberrounded down %5.2lf\n", down);

    printf("numberrounded up %5.2lf\n", up);

    return 0;

}

该程序运行结果:original number 123.54

number rounded down 123.00

number rounded up 124.00

10.fabs

函数名:fabs

功能:求浮点数x的绝对值.

用法:fabs (double x);

11.fmod

函数名: fmod

功 能: 计算x对y的模, 即x/y的余数

用 法: double fmod(double x, double y);

程序例:

#include <stdio.h>

#include <math.h>

int main(void)

{

    double x = 5.0, y =2.0;

    double result;

    result = fmod(x,y);

    printf("Theremainder of (%lf / %lf) is \%lf\n", x, y, result);

    return 0;

}

12.abs

函数名:abs

功能:返回整型数的绝对值.

用法:Abs(number)

number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回Null;如果是未初始化变量,则返回 0.

幂指数:

13.exp

函数名:exp

功能:返回 e 的 n 次幂.

用法:exp (double x);

14.frexp

函数名: frexp

功 能: 把一个双精度数分解为尾数的指数

用 法: double frexp(double value, int *eptr);

程序例:

#include <math.h>

#include <stdio.h>

int main(void)

{

    double mantissa,number;

    int exponent;

    number = 8.0;

    mantissa =frexp(number, &exponent);

    printf("Thenumber %lf is ", number);

    printf("%lf timestwo to the ", mantissa);

    printf("power of%d\n", exponent);

    return 0;

}

15.log

函数名:log

功 能: 自然对数函数ln(x)

用 法: double log(double x);

程序例:

#include <math.h>

#include <stdio.h>

int main(void)

{

    double result;

    double x = 8.6872;

    result = log(x);

    printf("Thenatural log of %lf is %lf\n", x, result);

    return 0;

}

log(x,y)=ln(y)/ln(x)

16.ldexp

函数名: ldexp

功 能: 计算value*(2的exp幂 ).

用 法: double ldexp(double value, int exp);

 

程序例:

#include<stdio.h>

#include<math.h>

int main(void)

{

    double value;

    double x = 2;

    value = ldexp(x,3);

    printf("The ldexpvalue is: %lf\n", value);

    return 0;

}

运行结果为:2*2^3=16.

17.log10

函数名:log10

功能:返回以 10 为底的对数.

用法:log10 (double x);

18.sqrt

函数名:sqrt

功能:返回指定数字的平方根.

用法:sqrt (double x);

19.modf

函数名:modf

功 能: 把数分为指数和尾数

用 法: double modf(double value, double *iptr);

程序例:

#include <math.h>

#include <stdio.h>

int main(void)

{

    double fraction,integer;

    double number =100000.567;

    fraction =modf(number, &integer);

    printf("The wholeand fractional parts of %lf are %lf and %lf\n",number, integer, fraction);

    return 0;

}

20.pow

函数名:pow

功能:返回指定数字的指定次幂.

用法:pow (double x, double y);(将返回x的y次幂)

双曲函数:

21.cosh

函数名:cosh

功能:返回指定角度的双曲余弦值.

用法:Double Cosh(double x(以弧度计量的角度)) ;

22.sinh

函数名:sinh

功能:返回指定角度的双曲正弦值。

用法:sinh (double x);(其中参数x必须为弧度制)

23.tanh

函数名:tanh

功能:回指定角度的双曲正切值.

用法:tanh (double x);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值