怎样用C语言编写数学公式

Python09

怎样用C语言编写数学公式,第1张

1、C语言有现场的常用数学函数,所在函数库为math.h、stdlib.h。

函数名及解释:

int abs(int i) 返回整型参数i的绝对值

double cabs(struct complex znum) 返回复数znum的绝对值

double fabs(double x) 返回双精度参数x的绝对值

long labs(long n) 返回长整型参数n的绝对值

double exp(double x) 返回指数函数ex的值

double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中

double ldexp(double value,int exp)返回value*2exp的值

double log(double x) 返回logex的值

double log10(double x) 返回log10x的值

double pow(double x,double y) 返回xy的值

double pow10(int p) 返回10p的值

double sqrt(double x) 返回+√x的值

double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度

double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度

double atan(double x) 返回x的反正切tan-1(x)值,x为弧度

double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度

double cos(double x) 返回x的余弦cos(x)值,x为弧度

double sin(double x) 返回x的正弦sin(x)值,x为弧度

double tan(double x) 返回x的正切tan(x)值,x为弧度

double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度

double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度

double hypot(double x,double y) 返回直角三角形斜边的长度(z),x和y为直角边的长度,z2=x2+y2

2、复杂的数学函数可以用自定义函数的形式实现。

例如:

double ConerVelocity(int A, double x1, double y1, double x2, double y2, double t1, double t2)

{

    double T,V

    T=acos(abs(x1 * x2 + y1 * y2)/ sqrt(x1 * x1 +y1 * y1)/sqrt(x2 * x2 +y2 * y2))

    V= (A * (t2-t1))/(2*sin(T/2))

    return V

}

1

#include <stdio.h>

int main(void)

{

    float sum = 0, i

    for (i = 1.0 i <= 20.0 i++)

        sum += (1 / (i + 1)) * (1 / (i + 2))

    printf("%f\n", sum)

    return 0

}

2

#include <stdio.h>

int main(void)

{

    int sum = 0, tmp = 6, i

    for (i = 0 i < 9 i++) {

        sum += tmp

        tmp = tmp * 10 + 6

    }

    printf("%d\n", sum)

    return 0

}

错误的原因:

a=4/(8*n+1)

4是整型数据,n是整型数据,8*n+1

这个结果还是整型数据,4/(8*n+1)

就变成了整型数据除以整型数据,结果是整型数据,自动舍去了小数部分,然后再把这个整型数据赋值给double型数据,结果就不对了,因为中间舍去了一部分值。

再举个简单的例子:

double

a

a=4/5//这个语句执行后,a的结果是0.0000000

a=4.0/5//这个语句执行后,a的结果是0.80000000

把语句改为:

a=4.0/(8*n+1)

这样就可以了……

这是c语言中的隐式类型转换问题,可以回看一下这部分的知识……