⑴ 怎样用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语言怎样输入对数
#include<stdio.h>
#include <math.h>
void main()
{
float x=5,y;
y=log(x);
printf("%f ",y);
}
(2)c语言lm扩展阅读:
C语言中使用对数函数的方法
log()函数:返回以e为底的对数值
头文件:
1#include
log() 函数返回以 e 为底的对数值,其原型为:
1doublelog(doublex);
log()用来计算以e为底的 x 的对数值,然后将结果返回。设返回值为 ret,则
1x = eret
如果 x 为负数或 0,则会发生错误并设置 errno 值。错误代码:
EDOM:参数x 为负数;
ERANGE:参数x
为零值,零的对数值无定义。
注意:使用 GCC 编译时请加入-lm。
⑶ 求用C语言编的LM拟合算法(Levenberg-Marquardt 算法)
http://wenku..com/link?url=__T_FJ94kfzm1wmvsr7MlDifKLT7ZWcG
⑷ c语言的开方函数
(1)函数头文件:math.h;
(2)函数功能: 计算一个非负实数的平方根;
(3)函数原型:double sqrt(double);
(4)参数介绍:()中是double,返回值可能是double 也可能是int;
(5)函数应用:sqrt系Square Root Calculations(平方根计算),通过这种运算可以考验CPU的浮点能力。
⑸ C语言用gedit编程结束用gcc编译时输入-lm是为了什么比如程序是a.c,编译gcc a.c -lm。在线等!
那是因为你的程序里面用到了数学函数吧?
也就是说用到了<math.h>
在gcc里面,需要手动链接数学函数库,所以要加上那句
纯手打
谢谢采纳
⑹ C语言中关于英尺、英寸、厘米的换算
(foot+inch/12)*0.3048 = cm / 100
foot+inch/12 = cm / (100 * 0.3048) = cm / 30.48
因为1foot = 12inch,所以inch / 12 < 1,所以foot = cm/30.48的整数部分 inch / 12 = cm/30.48的小数部分。
六七行就是完成这个功能。
(6)c语言lm扩展阅读:
一、英尺和英寸的知识
1、1码 = 3英寸 ,1英尺 = 12 英寸;
2、码英文字母是 yard
3、英尺英文字母是 foot( 单数 ) feet( 复数 )
4、英寸英文单词是 inch ( 单数 )inches( 复数 )
二、长度单位转换
#include<stdio.h>
#define Mile_to_meter 1609 //1英里 = 1690米
#define Foot_to_centimeter 30.48 //1英里 = 1690米
#define Inch_to_centimeter 2.54 //1英里 = 1690米
int main(){
float mile, foot, inch;
scanf("%f%f%f", &mile, &foot, &inch);
printf("%fmiles = %f meters ", mile, mile * Mile_to_meter);
printf("%ffeet = %f centimeters ", foot, foot * Foot_to_centimeter );
printf("%finches = %f centimeters ", inch, inch * Inch_to_centimeter );
return 0;
}
⑺ 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|
⑻ c语言中的开方
头文件:#include <math.h>
sqrt() 用来求给定值的平方根,其原型为:double sqrt(double x);double sqrt(double x)。
x 为要计算平方根的值。
如果 x < 0,将会导致 domain error 错误,并把全局变量 errno 的值为设置为 EDOM。
返回 x 平方根。注意,使用 GCC 编译时请加入-lm。实例计算200 的平方根值。
例子:
#include <math.h>main(){double root;root = sqrt(200);printf("answer is %f ", root);}
输出结果:answer is 14.142136。
(8)c语言lm扩展阅读:
使用sqrt函数需要注意的事项:
1、sqrt函数运行的是结果是算术平方根,即不能运算处负数值,也不能输出虚数结果。如需要得到算术平方根中的负数值,则应该在sqrt函数前添加负号。
2、sqrt函数的参数必须是非负数值,如果是负数值,则输出会报错,即数值无效;如果参数是未定义的非数字变量,则按回车后也会报错,即变量名有误。
3、sqrt函数的计算精度与C语言设置的精度有关,可以通过设置更改精度。
⑼ 如何用c语言来编写lm629中busy bit 的程序,谢谢。
用作micromouse(电脑鼠),
⑽ 用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];
}
}
}
级数计算就不用我给代码了吧。