2 jgdpmptjagm jgdpmptjagm 于 2016.09.18 20:59 提问

y=ln(x+3),x0=1,求方程的根,用牛顿法。我的答案总乱码啊,为什么

#include
#include
int main( )
{

int M=1000,k;

double x0,x1=1,eps=0.000001;
k=0;
for(;;) {

x0=x1;
k++;

printf("%.6f\n",x1);

x1=x0-log(x0+3)*(x0+3);
if(k>=M||fabs(x1-x0)<=eps)
break;
}

if(fabs(x1-x0)<=eps)
printf("%.6f\n",x1); }

3个回答

caozhy
caozhy   Ds   Rxr 2016.09.18 23:53
qq_27587417
qq_27587417   2016.09.19 08:43

额,你这个没有对对数的定义域做出限定吧,在进行对数计算前加上一句if(x0>-3),试试看

hijack00
hijack00   Rxr 2016.09.19 12:47

printf("%.6f\n",x1);
改为
printf("%.6lf\n",x1);
x1是double型变量。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
用C语言编写如下程序:牛顿法求方程f(x)=x^3-x-1=0在x0=1.5附近的实根,精确到6位小数。
用C语言编写如下程序:牛顿法求方程f(x)=x^3-x-1=0在x0=1.5附近的实根,精确到6位小数。#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;math.h&amp;gt; float Function(float x){//原函数的值 return (x*x*x-x-1); } float Differential(float x){//一阶导函数的值 ret...
习题 5.14 用牛顿迭代法求下面方程在1.5附近的根:
C程序设计(第四版) 谭浩强 习题5.14 个人设计习题 5.14 用牛顿迭代法求下面方程在1.5附近的根:2x3−4x2+3x−6=02x^3-4x^2+3x-6=0根据牛顿迭代法的公式: xn+1=xn−f(xn)f′(xn)x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)} 得到f(xn)=2x3−4x2+3x−6f(x_n)=2x^3-4x^2+3x-6 f′(xn)
牛顿迭代法求方程根--C语言
1087: 习题5-14 牛顿迭代法求方程的根 时间限制: 1 Sec  内存限制: 12 MB 提交: 35  解决: 32 [提交][状态][讨论版] 题目描述 用牛顿迭代法求下面方程在输入初值点附近的根: 2x3-4x2+3x-6=0 要求前后两次求出的x的差的绝对值小于10-6 牛顿迭代法公式如下: 将给定给定方程写成f(x)=0的形式,在给定初值x0的情况下,按
用牛顿迭代法求下面方程在1.5附近的根:2x^3-4x^2+3X-6=0
【描述】 用牛顿迭代法求下面方程在1.5附近的根:2x^3-4x^2+3X-6=0 【程序流程分析】 ① 赋值x0=1.5,即迭代初值;   ② 用初值x0代入方程中计算此时的f(x0)及f’(x0),程序中用变量f描述方程的值,用fd描述方程求导之后的值;   ③ 计算增量d=f/fd;   ④ 计算下一个x,x=x0-d;   ⑤ 把新产生的x替换x0,为下一次迭代做
matlab牛顿迭代x^3-sinx-12x+1=0
%求方程x^3-sinx-12x+1=0的根。N =1000;  x0=0;  x1=x0^3-sin(x0)-12*x0+1;  E=1.0e-6;%f=x*x*x+4*x*x-10=0,f1为f=x*x*x+4*x*x-10的一阶导  k=1; while(norm(x1-x0)>=E&k<N)   x0=x1;  f=x0^3-sin(x0)-12*x0+1;  f1=3*x
求一元方程的根(牛顿迭代法)
牛顿迭代公式: 那么根据该公式可以按以下步骤求解一元方程的任意次的根 (1) 选一个方程的近似根,赋给变量Xn; (2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0; (3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。 若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。 以下均
用牛顿迭代法求下面方程在1.5附近的根:2x^3-4x^2+3x-6=0
用牛顿迭代法求下面方程在1.5附近的根:2x^3-4x^2+3x-6=0 关于牛顿迭代法,在计算方法课程中讲到,简单解释下,基本公式为: Xn+1=Xn-f(Xn)/f *(Xn) 其中Xn+1为第n+1次迭代结果,Xn为第n次迭代结果,f *(Xn)为f (Xn))的导函数值。 基本步骤: 第一步把方程改写为多项式f(x)=2x^3-4x^2+3x-6,给定初值X0; 第二步将Xn
牛顿法求方程根
牛顿法 维基百科,自由的百科全书 跳转至: 导航、 搜索 本条目没有列出任何参考或来源。(2013年11月23日) 维基百科所有的内容都应该可供查证。 请协助添加来自可靠来源的引用以改善这篇条目。无法查证的内容可能被提出异议而移除。 牛顿法(Newton's method)又称为牛顿-拉弗森方法(Newton-Raphso
牛顿迭代法解非线性方程 x ^ 3 = a, 即求a的开三次方
执行环境:VC6.0//牛顿迭代法解非线性方程 x ^ 3 = a, 即求a的开三次方 //---------------------Include Files------------- #include //#include //-----------------end Include Files------------- #define M 10//迭代次数 double f(doub
用牛顿方法解一元非线性方程的根(Matlab实现)
题目:用牛顿法求方程x-cos(x)=0的实根(精确到1E-6)。 (1)要求用函数调用。 (2)进一步研究和弦截法作比较。 算法分析: (1)       此题是利用牛顿方法解一元非线性方程的根。(牛顿法是把非线性方程局部线性化的一种方法,它在单根附近具有较高的收敛速度。)所以首先我们应先给出估计的根,先对方程x-cos(x)=0变形,令y1=x,y2=cos(x),则两函数