用牛顿迭代法求方程的根:2*x*x*x-4*x*x 3*x-6=0
来源:学生作业帮助网 编辑:作业帮 时间:2024/09/21 17:47:29
#include#includeusingnamespacestd;intmain(){doublediedai(doublea,doubleb,doublec,doubled,doublex);
#include#includeintmain(){doublex0,x=1.5;do{x0=x;x=x0-(2*pow(x0,3)-4*pow(x0,2)+3*x0-6)/(6*pow(x0,2)-
f(x)=2x^3-4x^2+3x-6f'(x)=6x^2-8x+3x(n+1)=xn-(2xn^3-4xn^2+3xn-6)/(6xn^2-8xn+3)x1=1.5x2=2.3333x3=2.061
二分法简单,你就先把(-10,10)分成(-10,0)(0,10),然后分别用x=-10x=0x=10代入,看哪2个接近0,肯定是(0,10),那么再分为(0,5)(5,10),重复上面操作牛顿迭代法
程序流程分析:①赋值x0=1.5,即迭代初值;②用初值x0代入方程中计算此时的f(x0)及f’(x0),程序中用变量f描述方程的值,用fd描述方程求导之后的值;③计算增量d=f/fd;④计算下一个x,
先去看看计算方法学习一下“牛顿迭代法”吧,不然就算懂了这个小程序也意义不大,真的
#includevoidmain(){floats,f0,h,x;intn,i;printf("inputn:");scanf("%d",&n);h=1.0/n;f0=4.0;s=0.0;for(i=
#include <stdio.h> #include <math.h>//
#include#includevoidmain(){floatx1,x0,f,f1;inti=0;//i就是当前计算的次数x1=1.5;do{i++;x0=x1;f=((2*x0-4)*x0+3)*
迭代公式错了x0=x-feval(fx,x1)/feval(dfx,x1);%matlab算法x0=x1-(2*x1^3-4*x1^2+3*x-6)/(6*x1^2-8*x+3);该题的迭代公式再问:
#include#includedoubleeps=10E-6;doublef(doublek)//原函数方程{returnlog10(k)+k-2.0;}doubleget(doublek){ret
xn+1=(xn+a/x)/2
首先整出来牛顿迭代法解方程:2x^3-4x^2+3x-6=0F(x0)=2x^3-4x^2+3x-6F(x0)=6x^2-8x+3....Y=0X=3DoX1=x'Z=((2*X1-4)*X1+3)*
#include#includeintmain(){doublex=1,x2;do{x2=x;x-=(2*x*x*x-4*x*x+3*x-6)/(6*x*x-8*x+3);}while(fabs(x-
你没有重新计算你定义的a循环最后加一条语句while(a>10e-6){..a=fabs(x0-x1);}
x^3=x+3x=(x+3)^(1/3)f(x)=x-(x+3)^(1/3)f'(x)=1-1/3*(x+3)^(-2/3)X(n+1)=Xn-f(xn)/f'(xn)x0=0x1=1.7175x2=
symsxf=x^x-10;df=diff(f,x);eps=1e-6;x0=10;cnt=0;MAXCNT=200;%最大循环次数whilecnt
#include#include#include#defineN100#definePS1e-5//定义精度#defineTA1e-5//定义精度floatNewton(float(*f)(float
牛顿迭代法的步骤大概是这样的:首先给定一个初始值x0,用它来进行迭代.迭代的方法就是在点(x0,f(x0))处做曲线的切线,与横轴得到一个交点(x1,0),x1就是第一次迭代的结果,也就是方程解的一个
PROGRAMMAINREAD(*,*)XN=110X1=XF=X1**2-4*X1+1F1=2*X1-4X=X1-F/F1WRITE(*,100)N,X1,XN=N+1IF(ABS(X-X1).GT