用牛顿迭代法求x^3-2*x-5=0
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 14:47:04
#include#includeusingnamespacestd;intmain(){doublediedai(doublea,doubleb,doublec,doubled,doublex);
symsxx0=2;f=x^3-3*x-1;eps=1e-6;maxcnt=1000;fx=diff(f,x);x1=x0;cnt=1;whilecnt
#include"stdio.h"#include"math.h"main(){floatx,f,f1;//f代表f(x)=2x^3-4x^2+5x-18,f1代表f‘(x)=2*x^2-4*2x^+
#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),重复上面操作牛顿迭代法
先去看看计算方法学习一下“牛顿迭代法”吧,不然就算懂了这个小程序也意义不大,真的
#includevoidmain(){floats,f0,h,x;intn,i;printf("inputn:");scanf("%d",&n);h=1.0/n;f0=4.0;s=0.0;for(i=
迭代公式错了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);该题的迭代公式再问:
x=0,f(x)=-6,f1(x)=-3,x1=-2,x=-2,f(x)=-46,f1(x)=39,f(x)/f1(x)=-1.179因此,在第一次循环是就会跳出.把fabs(f(x)/f1(x))>
源程序如下:clearclcN=100;x=2;forii=0:Nxl=x;num=ii;x=x-(x^3-3*x+1)/(3*x^2-3);ifabs(x-xl)
#include#includedoubleeps=10E-6;doublef(doublek)//原函数方程{returnlog10(k)+k-2.0;}doubleget(doublek){ret
首先整出来牛顿迭代法解方程: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=
#include#include#include#defineN100#definePS1e-5//定义精度#defineTA1e-5//定义精度floatNewton(float(*f)(float
wkihh,.>=-===236544458kjim=+3.14-------------:[325544]
X1=0.219Dox=X1y=x-2*x*x+2*x*x*Exp(-(1/x))-0.219Y1=1-4*x+4*x*Exp(-(1/x))+2*Exp(-(1/x))X1=x-y/Y1LoopWh
牛顿迭代法的步骤大概是这样的:首先给定一个初始值x0,用它来进行迭代.迭代的方法就是在点(x0,f(x0))处做曲线的切线,与横轴得到一个交点(x1,0),x1就是第一次迭代的结果,也就是方程解的一个