北航数值分析大作业3.docVIP

  • 41
  • 0
  • 约4.58万字
  • 约 21页
  • 2020-10-07 发布于浙江
  • 举报
数值分析第三次作业 设计方案 对Fredholm积分方程,用迭代法进行求解: ,其中 对于公式中的积分部分用数值积分方法。 复化梯形积分法,取2601个节点,取迭代次数上限为50次。实际计算迭代次数为18次,最后算得误差为r= 0.97E-10。 复化Simpson积分法,取迭代次数上限为50次,取2*41+1,即83个节点时能满足精度要求。实际计算迭代次数为17次,最后的误差为 r= 0.97E-10。 Guass积分法选择的Gauss—Legendre法,取迭代次数上限为50次,直接选择8个节点,满足精度要求。实际计算迭代次数为24次,最后算得误差为r= 0.87E-10。 全部源程序 module integral implicit none contains !//////////复化梯形 subroutine trapezoid(m) implicit none integer :: i,j,k,m real*8 :: x(m+1),u(m+1) real*8 :: sum,sum1,g,r,h real*8 :: e=1.0e-10 h=2./m do i=1,m+1 x(i)=-1.+(i-1)*h end do u=0.02 do k=1,50 do i=1,m+1 sum1=0. g=dexp(x(i)*4.)+(dexp(x(i)+4.)-dexp(-4.-x(i)))/(x(i)+4.) do j=2,m sum1=sum1+dexp(x(i)*x(j))*u(j) end do sum=h/2.*(dexp(x(i)*-1.)*u(1)+dexp(x(i)*1.)*u(m+1)+2*sum1) u(i)=g-sum end do r=h/2.*((dexp(x(1)*4)-u(1))**2+(dexp(x(m+1)*4)-u(m+1))**2) do i=2,m r=r+h*(dexp(x(i)*4)-u(i))**2 end do if(dabs(r)=e) exit end do write(*,*) k open(1,file=trapezoid.txt) do i=1,m+1 write(1,(3(f18.12))) x(i),u(i),dexp(x(i)*4.) end do write(1,(4x,a2,e9.2)) r=,r close(1) return end subroutine trapezoid !///////////复化simpson subroutine simpson(m) implicit none integer :: i,j,k,m real*8 :: x(2*m+1),u(2*m+1) real*8 :: sum,sum1,sum2,g,r,h real*8 :: e=1.0e-10 h=2./(2.*m) do i=1,2*m+1 x(i)=-1.+(i-1)*h end do u=0.02 do k=1,50 do i=1,2*m+1 sum1=0. sum2=0. g=dexp(x(i)*4.)+(dexp(x(i)+4.)-dexp(-4.-x(i)))/(x(i)+4.) do j=1,m sum1=sum1+dexp(x(i)*x(2*j))*u(2*j) end do do j=1,m-1 sum2=sum2+dexp(x(i)*x(2*j+1))*u(2*j+1) end do sum=h/3.*(dexp(x(i)*-1.)*u(1)+dexp(x(i)*1.)*u(2*m+1)+4*sum1+2*sum2) u(i)=g-sum end do r=h/3.*((dexp(x(1)*4)-u(1))**2+(dexp(x(2*m+1)*4)-u(2*m+1))**2) do i=1,m r=r+4.*h/3.*(dexp(x(2*i)*4)-u(2*i))**2 end do do i=1,m-1 r=r+2.*h/3.*(dexp(x(2*i+1)*4)-u(2*i+1))**2 end do if(dabs(r)=e) exit end do write(*,*) k open(2,file=simpson.txt) do i=1,2*m+1 write(2,(3(f18.12))) x(i),u(i),dexp(x(i)*4.) end do write(2,(4x,a2,e9.2)) r=,r close

文档评论(0)

1亿VIP精品文档

相关文档