⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doolittle.f90

📁 Doolittle法求解任意阶的方程
💻 F90
字号:

    program Doolittle

    implicit none
    integer i,j,n,t,k
    real,dimension (:,:),allocatable::a,l,u,w
    real,dimension (:,:),allocatable::b,x,y,v
    print*,"输入方程阶数:n"
    read *,n
    allocate(a(n,n),l(n,n),u(n,n),w(n,n),b(n,1),x(n,1),y(n,1),v(n,1))
    print*,"输入系数矩阵A:n×n阶:"
    read*,((a(i,j),j=1,n),i=1,n)
     print*, "输入矩阵B:n×1阶:"
    read*,b
    do i=2,n
       do j=1,i-1
          u(i,j)=0
       end do
    end do
    do i=1,n-1
      do j=i+1,n
          l(i,j)=0
       end do
    end do
    do i=1,n
      l(i,i)=1
    end do
    do j=1,n
       u(1,j)=a(1,j)
    end do
    do i=2,n
       l(i,1)=a(i,1)/u(1,1)
    end do
    do i=2,n
       do j=i,n
          w=0
          do t=1,i-1
            w(i,j)=w(i,j)+l(i,t)*u(t,j)
          end do
          u(i,j)=a(i,j)-w(i,j)
       end do
       j=i
       if(u(j,j)/=0)then
           do k=j+1,n
              w=0
              do t=1,j-1
                 w=w+l(k,t)*u(t,j)
              end do
              l(k,j)=(a(k,j)-w(i,j))/u(j,j)
           end do
        end if
     end do
     y(1,1)=b(1,1)
     do i=2,n
        v=0
        do j=1,i-1
           v=v+l(i,j)*y(j,1)
        end do
        y(i,1)=b(i,1)-v(i,1)
     end do
     x(n,1)=y(n,1)/u(n,n)
     do i=n-1,1,-1
        v=0
        do j=i+1,n
          v(i,1)=v(i,1)+u(i,j)*x(j,1)
        end do
        x(i,1)=(y(i,1)-v(i,1))/u(i,i)
     end do
     print*,"方程的解为:"
     do i=1,n 
        write (*,*) "x(",i,")=",x(i,1)
     end do
    end program Doolittle

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -