高斯消元法(Fortran)

这篇博客介绍了如何用FORTRAN实现高斯消元法,作者指出算法实现虽然看似简单,但在编程过程中遇到了数值计算误差的问题,初步认为是舍入误差导致。文章重点讨论了编写过程中对消元逻辑顺序的思考,特别是三层循环的运用,包括针对消元列的循环、行循环和列循环。作者提到程序仍有改进空间,鼓励读者参与优化。
摘要由CSDN通过智能技术生成

高斯消元法(FORTRAN)

代码如下

program Guass1
real,dimension(:,:),allocatable::arr
real,dimension(:),allocatable::x
real a
integer i,j,k,n
!输入、输出数列
write(*,*)'请输入需要计算的系数矩阵的大小n='
read*,n
allocate(arr(n,n+1))
allocate(x(n))
write(*,*)'请以列为主次序依次输入增广矩阵(系数矩阵:常系数矩阵)\n'c
read*,arr
do i=1,n
    write(*,*) arr(i,:)
end do
write(*,*)'高斯消元法\n'c
!高斯消元法
do k=1,n-1 !K代表目前消元列数
    do i=k+1,n !i代表行
        a=arr(i,k)/arr(k,k)
        do j=k,n+1 !j代表列
            arr(i,j)=arr(i,j)-a*arr(k,j)
        enddo
    enddo
enddo
!输出消元后矩阵    
do i=1,n
    write(*,*) arr(i,:)
end do

!回带消元
x(n)=arr(n,n+1)/arr(n,n)

do i=n-1,1,-1 !hang
    a=0
    do j=n,i+1,-1 !lie
        a=a+arr(i,j)*x(j)
    enddo
    x(i)=(arr(i,n+1)-a)/arr(i,i)
enddo

write(*,*) x
    
! 100 format(1x,'arr(',i2,',',i2,')=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值