预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共37页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

12345678910111213141516172.1非线性方程求根----二分法①取有根区间[a,b]之中点, 若f(x0)<tol,x0为解;否则若f(x0)*f(a)>0,令a1=x0;b1=b,否则令a1=a,b1=x0.③如此反复下去,若不出现,即可得出一 系列有根区间序列: 上述每个区间都是前一个区间的一半,因此 的长度PROGRAMERFEN REALA,B,EPS,X,Y F(X)=X**2-X-1 !READ*,A,B,EPS A=1 B=2 EPS=10E-6 DOWHILE(ABS(B-A)>EPS) X=(A+B)/2 Y=F(X)*F(A) IF(Y<0)THEN B=X ELSE A=X ENDIF ENDDO PRINT*,X END采用二分法求某区间内的全部单实根方法!求区间内的全部单实根 PROGRAMERFEN REALA,B,EPS,X,Y,H,F,XX(60),X1,P REALA0,B0,X0,X1 F(X)=X**6-5*X**5+3*X**4+X**3-7*X**2+7*X-20 !READ*,A,B,EPS A0=-2;B0=5;EPS=10E-6;H=0.2 P=(B0-A0)/H x0=A0;x1=A0+H;i=1 DOwhile(x0<B0.and.i<=P) IF(F(x0))*F(x1)>0)THEN XX(I)=0;x0=x0+H;x1=x1+H !PRINT*,'NO' ELSEIF(F(x0)*F(x1)==0)THEN IF(F(x0)==0)then XX(I)=x0;x0=x0+H/2;x1=x1+H/2 else XX(I)=x1;x0=x1+H/2;x1=x1+3*H/2 endifPROGRAMNEWTON REALF,DF,EPS,X,D F(X)=X**3-X**2-1 DF(X)=3*X**2-2*X X=1.5 D=1.0 EPS=10E-6 DOWHILE(ABS(D)>EPS) IF(DF(X)/=0)THEN D=F(X)/DF(X) X=X-D ENDIF ENDDO PRINT*,X END 例2.11用牛顿迭代法求x=e-x的根,ε=10-4 解:因f(xk)=xex–1,f´(xk)=ex(x+1) 建立迭代公式PROGRAMNEWTON REALF,DF,EPS,X,D F(X)=X*EXP(X)-1 DF(X)=X*EXP(X)+X X=0.5 D=1.0 EPS=10E-6 DOWHILE(ABS(D)>EPS) IF(DF(X)/=0)THEN D=F(X)/DF(X) X=X-D ENDIF ENDDO PRINT*,X END2.5弦截法 为避免计算函数的导数,使用差商 替代牛顿公式中的导数,便得到迭代公式 称为弦截迭代公式, 相应的迭代法称为弦截法。弦截法算法实现PROGRAMNEWTON REALF,EPS,X0,D,X1,X2 F(X)=X*EXP(X)-1 X0=0.45 X1=0.5 D=1.0 EPS=10E-4 DOWHILE(ABS(D)>EPS) If(F(X0)==0)then x2=x0 elseif(F(X1)==0)then x2=x1 elseIF(F(X1)-F(X0)==0)THEN print*,'err' elseIF(F(X1)-F(X0)/=0)THEN D=(X1-X0)*F(X1)/(F(X1)-F(X0)) X2=X1-D ENDIF x0=x1 x1=x2 PRINT*,X2 ENDDO PRINT*,X2 END2.4.5牛顿下山法下山因子的选择是个逐步探索的过程,设从λ=1开始反复将λ减半进行试算,即逐次取λ为 从中挑选下山因子,直至找到其中某个λ使单调性条件 成立,则称“下山成功”,否则“下山失败”, 这时需另选初值重算。PROGRAMNEWTONxiashang REALF,DF,EPS,X,D,k,T,Q F(X)=X**3-X**2-1 DF(X)=3*X**2-2*X X=1.5 D=1.0 EPS=10E-6 K=0.25 Q=-1.0 DOWHILE(ABS(D)>EPS.AND.Q<0.0) IF(DF(X)/=0)THEN D=F(X)/DF(X) T=F(X) X=X-k*D Q=ABS(F(X))-ABS(T) ENDIF ENDDO PRINT*,X END