2 jgdpmptjagm jgdpmptjagm 于 2016.09.16 22:24 提问

牛顿法求方程的根,y=ln(x+3),初始值为x0=1,值不对,但不知道错哪里了

include

include

include

define e 2.714

int main ()
{
double a,b;
b=1;
a=b-(log(4)*4);
while (fabs(b-a)>1*e-6)
{
b=a;
a=b-log(b+3)/(1/(b+3));
}
printf("a=%ld");

2个回答

devmiao
devmiao   Ds   Rxr 2016.09.16 23:52
lm_whales
lm_whales   Rxr 2016.09.17 00:06

1*e-6 这似乎不是C的浮点数表示方法
1e-6 这样写,应该没问题的
这个1 就不要省略了

你这样写
再加上
#
define e 2.72

这就变成 1*2.72-6 =-3.28了
这个比较明显有问题 所有数的绝对值,都比它大
另外,只有

%he,%e,%le,%Le //e格式 //有指数的时候,小写 e 输出小写 e,大写E输出大写E
%hf,%f,%lf,%Lf //f格式 //有指数的时候,小写 f 输出小写 e,大写F输出大写E
%hg,%g,%lg,%Lg //g格式 //有指数的时候,小写 g 输出小写 e,大写G输出大写E
三种 浮点数十进制输出格式,e,f,g 可大写(f本来是不可以的,后来可以了,hf是新加的,lf 曾经被删除,后来又补上了 )
后来补充了一种输出十六进制 浮点数的方法 p格式。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!