c++ 数学函数

公式y=e^x+ln(x)-1y和x都是longdouble型写一个函数能够传入y的值,求出相应的x。... 公式y = e^x+ln(x)-1
y和x都是long double 型

写一个函数能够传入y的值,求出相应的x。
展开
 我来答
百度网友d8a1812
推荐于2016-09-06 · TA获得超过673个赞
知道小有建树答主
回答量:694
采纳率:71%
帮助的人:600万
展开全部
所在函数库为math.h、stdlib.h、string.h、float.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
double ceil(double x) 返回不小于x的最小整数
double floor(double x) 返回不大于x的最大整数
void srand(unsigned seed) 初始化随机数发生器
int rand() 产生一个随机数并返回这个数
double poly(double x,int n,double c[]) 从参数产生一个多项式
double modf(double value,double *iptr) 将双精度数value分解成尾数和阶
double fmod(double x,double y) 返回x/y的余数
double frexp(double value,int *eptr) 将双精度数value分成尾数和阶
double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数
double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数
double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数
char *ecvt(double value,int ndigit,int *decpt,int *sign)
将浮点数value转换成字符串并返回该字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
将浮点数value转换成字符串并返回该字符串
char *gcvt(double value,int ndigit,char *buf)
将数value转换成字符串并存于buf中,并返回buf的指针
char *ultoa(unsigned long value,char *string,int radix)
将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数
char *ltoa(long value,char *string,int radix)
将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数
char *itoa(int value,char *string,int radix)
将整数value转换成字符串存入string,radix为转换时所用基数
double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0
int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0
long atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0
double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,
long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数, 并返回这个数,
int matherr(struct exception *e) 用户修改数学错误返回信息函数(没有必要使用)
double _matherr(_mexcep why,char *fun,double *arg1p, double *arg2p,double retval)
用户修改数学错误返回信息函数(没有必要使用)
unsigned int _clear87() 清除浮点状态字并返回原来的浮点状态
void _fpreset() 重新初使化浮点数学程序包
unsigned int _status87() 返回浮点状态字
百度网友0c7521a
2014-10-31 · TA获得超过207个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:162万
展开全部
首先,你要确定一个精度,比如e=0.001,然后用二分法。

y+1=e^x+ln(x)
先用x1=ln(y-1)求出下限,然后不断加一,用x1求出对应的y1值,
如果y1<y,x1+1
如果y1>y,此时x的下限为x2=x1-1,上限为x1,

然后不断二分,求出mid=(x1+x2)>>1,然后计算y1和y的差,小于精度e时就可以结束了,大概就是这样。。。
追问

请问这样写有bug吗?还是超时了....

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
推荐于2016-02-02 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:8197万
展开全部
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "math.h"
void main(void){
long double x,y,a;
const long double e=2.71828182845904523536;
printf("Type y...\ny = ");
scanf("%lf",&y);
y++;
x=0.0;
while(x+=0.000001,log(x)+pow(e,x)<=y)
a=x;
printf("x = %f\n",(a+x)/2);
}
更多追问追答
追问

精度是1e-6, 输入y为0至1e10

这样写有错吗请问T.T

追答
是有错啊!没有考虑这问题,因为题目没有明确精度,编程时无论取多少精度,当输入超过这个精度时就肯定要出错……
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
二木林工作室
2014-10-31 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:69.2万
展开全部
自己把反函数算出来就行了嘛,又不难。
追问
数学当然不难.. 现在是写程序啊= =
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mafangsan
2014-10-31 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:3142万
展开全部
啊,是反的,根据y求x?
更多追问追答
追问
是的
追答
这个麻烦的,不是程序麻烦,是数学计算公式麻烦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式