计算材料学考试.docx

上传人:b****0 文档编号:9646712 上传时间:2023-05-20 格式:DOCX 页数:13 大小:15.86KB
下载 相关 举报
计算材料学考试.docx_第1页
第1页 / 共13页
计算材料学考试.docx_第2页
第2页 / 共13页
计算材料学考试.docx_第3页
第3页 / 共13页
计算材料学考试.docx_第4页
第4页 / 共13页
计算材料学考试.docx_第5页
第5页 / 共13页
计算材料学考试.docx_第6页
第6页 / 共13页
计算材料学考试.docx_第7页
第7页 / 共13页
计算材料学考试.docx_第8页
第8页 / 共13页
计算材料学考试.docx_第9页
第9页 / 共13页
计算材料学考试.docx_第10页
第10页 / 共13页
计算材料学考试.docx_第11页
第11页 / 共13页
计算材料学考试.docx_第12页
第12页 / 共13页
计算材料学考试.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算材料学考试.docx

《计算材料学考试.docx》由会员分享,可在线阅读,更多相关《计算材料学考试.docx(13页珍藏版)》请在冰点文库上搜索。

计算材料学考试.docx

计算材料学考试

分别用前向2点后向2点,对称3点对称5点方法计算f(x=lnx在x=2处的一

阶导数和误差,给出不同h值(0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.002,

0.001,0.0005,0.0002,0.000仆各方法的误差

1.1对称三点法

programlx

implicitnone

doubleprecision,parameter:

:

x=2.0d0doubleprecision:

:

exact,h,f_sym3,diff_sym3

h=0.5d0

exact=x**(-1

dowhile(h>0

write(*,*"Entervalueofh(<=0tostop"

read(*,*h

if(h<=0.0then

stop"h<=0"

endif

f_sym3=(dlog(X+h-dlog(x-h/(2*h

diff_sym3=exact-f_sym3

write(*,*

"h=",h,"F_SYM3=",f_sym3,"E_SYM3=",diff_sym3enddo

endprogramlx

1.2前向两点法

programlx

implicitnone

doubleprecision,parameter:

:

x=2.0d0doubleprecision:

:

exact,h,f_sym3,diff_sym3h=0.5d0

exact=x**(-1

dowhile(h>0

write(*,*"Entervalueofh(<=0tostop"

read(*,*h

if(h<=0.0then

stop"h<=0"

endif

f_sym3=(dlog(x+h-dlog(x/(h

diff_sym3=exact-f_sym3

write(*,*

"h=",h,"F_SYM3=",f_sym3,"E_SYM3=",diff_sym3enddo

endprogramlx

1.3后向两点法

programlx

implicitnone

doubleprecision,parameter:

:

x=2.0d0doubleprecision:

:

exact,h,f_sym3,diff_sym3h=0.5d0

exact=x**(-1

dowhile(h>0

write(*,*"Entervalueofh(<=0tostop"

read(*,*h

if(h<=0.0then

stop"h<=0"

endif

f_sym3=(dlog(x-dlog(x-h/(h

diff_sym3=exact-f_sym3

write(*,*

"h=",h,"F_SYM3=",f_sym3,"E_SYM3=",diff_sym3enddo

endprogramlx

1.4对称五点法

programlx

implicitnone

doubleprecision,parameter:

:

x=2.0d0doubleprecision:

:

exact,h,f_sym5,diff_sym5

h=0.5d0

exact=x**(-1

dowhile(h>0

write(*,*"Entervalueofh(<=0tostop"

read(*,*h

if(h<=0.0d0then

stop"h<=0"

endif

f_sym5=(dlog(x-2*h-8*dlog(x-h+8*dlog(x+h-dlog(x+2*h/(12*h

diff_sym5=exact-f_sym5

write(*,"(5(A,F8.6,2X"

"h=",h,"F_SYM5=",f_sym5,"E_SYM5=",diff_sym5enddo

endprogramlx

分别用梯形法,Simpson法,Simpson3/8法,Bode法计算

20cos3d

xx

n

给出8个不同N值下各方法的误差

3.1梯形法

doubleprecisionfunctionfunc(x

implicitnone

doubleprecision:

:

x

func=cos(3*x

endfunctionfunc

programintegral

implicitnone

integer:

:

i,n=1

doubleprecision:

:

pi,limit_down,limit_updoubleprecision:

:

exact,h,integ,summ,diff,xdoubleprecision:

:

func

exact=-1.0/3.0

pi=acos(-1.0d0

limit_down=0.0d0

limit_up=pi/2.0

dowhile(n>0

write(*,*"EntervalueofN(even,>=2"

read(*,*n

if(n<2then

stop"n<2"

endif

h=(limit_up-limit_down/n

summ=func(limit_down

doi=1,n-1

x=i*h

summ=summ+func(x*2

enddo

summ=summ+func(limit_up

integ=h*summ/2

diff=exact-integ

write(*,"(A,l6,2X,5(A,F12.9,2X"

"N=",n,"h=",h,"Integ=",integ,"ERROR=",diffenddo

endprogramintegral

3.2辛普森法

doubleprecisionfunctionfunc(x

implicitnone

doubleprecision:

:

x

func=cos(3*x

endfunctionfunc

programintegral

implicitnone

integer:

:

i,fac,n=1

doubleprecision:

:

pi,limit_down,limit_updoubleprecision:

:

exact,h,integ,summ,diff,xdoubleprecision:

:

func

exact=-1.0/3.0

pi=acos(-1.0d0

limit_down=0.0d0

limit_up=pi/2

dowhile(n>0

write(*,*"EntervalueofN(even,>=2"read(*,*n

if(n<2then

stop"n<2"

endif

h=(limit_up-limit_down/n

summ=func(limit_down

fac=2

doi=1,n-1

if(fac==2then

fac=4

else

fac=2

endif

x=i*h

summ=summ+func(x*fac

enddo

summ=summ+func(limit_up

integ=h*summ/3

diff=exact-integ

write(*,"(A,l6,2X,5(A,F12.9,2X"

"N=",n,"h=",h,"Integ=",integ,"ERROR=",diffenddo

endprogramintegral

3.3辛普森3/8法

doubleprecisionfunctionfunc(x

implicitnone

doubleprecision:

:

x

func=cos(3*x

endfunctionfunc

programintegral

implicitnone

integer:

:

i,n=1

doubleprecision:

:

pi,limit_down,limit_up

doubleprecision:

:

exact,h,integ,summ,diff,x,modireal:

:

fac(3

doubleprecision:

:

func

exact=-1.0/3.0

pi=acos(-1.0d0

limit_down=O.OdO

limit_up=pi/2

dowhile(n>0

write(*,*"EntervalueofN(even,>=2"

read(*,*n

if(n<2then

stop"n<2"

endif

h=(limit_up-limit_down/nsumm=func(limit_downdoi=1,n-1modi=mod(i,3if(modi==0thenfac(1=2

elseif(modi==1then

fac(2=3

elseif(modi==2thenfac(3=3endif

x=i*h

summ=summ+func(x*fac(modi+1enddo

summ=summ+func(limit_up

integ=3*h*summ/8

diff=exact-integ

write(*,"(A,l6,2X,5(A,F12.9,2X"

"N=",n,"h=",h,"lnteg=",integ,"ERROR=",diff

enddo

endprogramintegral

3.4Bode法

doubleprecisionfunctionfunc(x

implicitnone

doubleprecision:

:

x

func=cos(3*x

endfunctionfunc

programintegral

implicitnone

integer:

:

i,n=1

doubleprecision:

:

pi,limit_down,limit_up

doubleprecision:

:

exact,h,integ,summ,diff,x,modireal:

:

fac(4

doubleprecision:

:

func

exact=-1.0/3.0

pi=acos(-1.0d0

limitdown=O.OdO

limit_up=pi/2

dowhile(n>0

write(*,*"EntervalueofN(even,>=2"

read(*,*n

if(n<2then

stop"n<2"

endif

h=(limit_up-limit_down/n

summ=func(limit_down*7

doi=1,n-1

modi=mod(i,4

if(modi==0then

fac(1=14

elseif(modi==1then

fac(2=32

elseif(modi==2then

fac(3=12

elseif(modi==3then

fac(4=32

endif

x=i*h

summ=summ+func(x*fac(modi+1

enddo

summ=summ+func(limit_up*7

integ=2*h*summ/45

diff=exact-integ

write(*,"(A,l6,2X,5(A,F12.9,2X"

"N=",n,"h=",h,"Integ=",integ,"ERROR=",diff

enddo

endprogramintegral

分别用搜索法,牛顿法,弦割法求解

f(x=x2-5

的正根,改变初始猜测值,观察各方法的收敛行为

5.1搜索法

doubleprecisionfunctionfunc(x

implicitnone

doubleprecision:

:

x

func=x**2-5

endfunctionfunc

programroot

implicitnone

integer:

:

iter=0

doubleprecision:

:

x,dx,guess_st,tolx,fold,exact,func

exact=sqrt(5.0d0

guess_st=1.0d0

dx=0.5

tolx=1.0d-8

x=guess_st

fold=func(x

dowhile(abs(dx>tolx

iter=iter+1

x=x+dx

if(fold*func(x>0.0then

cycle

else

x=x-dx

dx=dx/2

endif

write(*,"(l4,6f12.8"iter,x,exact-xenddo

endprogramroot

5.2牛顿法

doubleprecisionfunctionfunc(x

implicitnone

doubleprecision:

:

x

func=x**2-5

endfunctionfunc

doubleprecisionfunctionfunc_prime(x

implicitnone

doubleprecision:

:

x

func_prime=2*x

endfunctionfunc_prime

programroot

implicitnone

integer:

:

iter=0

doubleprecision:

:

x,xO,dx,guess_st,tolx,exact,func,func_prime

exact=sqrt(5.0d0

guess_st=1.OdO

dx=0.5

tolx=1.0d-8x=guess_stdowhile(abs(dx>tolxiter=iter+1

x0=x

x=x0-func(x0/func_prime(x0dx=x-x0

write(*,"(l4,6f12.8"iter,x,exact-xenddo

endprogramroot

5.3弦割法

doubleprecisionfunctionfunc(ximplicitnone

doubleprecision:

:

x

func=x**2-5

endfunctionfunc

programroot

implicitnone

integer:

:

iter=0

doubleprecision:

:

x,x0,dx,guess_st,x3_st,xold,tolx,exact,func

exact=sqrt(5.0d0

guess_st=1.0d0

dx=0.5

tolx=1.0d-8

x=guess_st

dowhile(abs(dx>tolx

iter=iter+1

xold=x0

x0=x

if(iter==1then

x=x3_st

else

x=x0-func(x0*(x0-xold/(func(x0-func(xoldendif

dx=x-x0

write(*,"(l4,6f12.8"iter,x,exact-xenddo

endprogramroot

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2