数值分析第三次作业 1. 设计方案 对Fredholm 积分方程,用迭代法进行求解: ( ) '( ( ))u xA u x,其中11( ( ))( )( ,)( )A u xg xK x yu y dy 对于公式中的积分部分用数值积分方法。 复化梯形积分法,取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。 2. 全部源程序 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 ...