program main!主程序
implicit none
integer,parameter::n=4
integer i
real:: a(n,n),b(n),x(n),js(n)
data a / 2.4,-4.0,0.5,0.6,-1.7,2.3,-1.0,8.0,9.0,-1.9,2.0,-1.6,0.9,0.70,1.40,2.50 /
b=(/1.5,0.0,5.0,9.0/)
call Guass(a,b,n,x,js)
write(*,*) 'written by chenke'
do i=1,4
write(*,"(1X,'x(',I1,')=',F10.5)") i, x(i)
enddo
end
subroutine Guass(a,b,n,x,js)
implicit none
integer n,k,i,j,is
real:: a(n,n),b(n),x(n),js(n)
real :: T,D
loop:do k=1,n-1
!全选主元法,从右下角n-k+1阶子阵中选取绝对值最大的元素
D=0.0
do i=k,n
do j=k,n
if (abs(a(i,j)) > D) then
D=abs(a(i,j))
js(k)=j ! 记下最大数值的列数
is=i ! 记下最大数值的行数
endif
enddo
enddo
if (D == 0.0) then
write(*,*) 'fail'
stop
else
!对行做出调整
if (is /= k) then
do j=k,n
T=a(k,j)
a(k,j)=a(is,j)
a(is,j)=T
enddo
!对b数组做出对应的调整
T=b(k)
b(k)=b(is)
b(is)=T
endif
!对行进行变换
if (js(k) /= k) then
do i=1,n
T=a(i,k)
a(i,k)=a(i,js(k))
a(i,js(k))=T
end do
end if
end if
!高斯消元法的核心变换
do i=k+1,n
a(i,k)=a(i,k)/a(k,k)
end do
do i=k+1,n
do j=k+1,n
a(i,j)=a(i,j)-a(i,k)*a(k,j)
end do
b(i)=b(i)-a(i,k)*b(k)
end do
end do loop ! 结束最外层循环
! 回代
x(n)=b(n)/a(n,n)
do i=n-1,1,-1
T=0
do j=i+1,n
T=T+a(i,j)*x(j)
enddo
x(i)=(b(i)-T)/a(i,i)
enddo
! 由于在全主元法中进行了列变换,所以最后应对x(i)进行对应的调整
do k=n-1,1,-1
if (js(k) /= k) then
T=x(k)
x(k)=x(js(k))
x(js(k))=T
endif
enddo
end
gaosi.rar_method gauss pivot
版权申诉
172 浏览量
2022-09-21
06:09:16
上传
评论
收藏 945B RAR 举报
JonSco
- 粉丝: 72
- 资源: 1万+
最新资源
- 前端-html+css+js实现爱心特效
- c40539bc-071a-486c-9d52-9d0c18d62dac 4.html
- 基于物理的非视域成像(NLOS)算法,利用了nerf+python源码+文档说明
- yuluer知更鸟.7z(1).001
- 基于Qt实现医院信息管理系统c++源码+文档说明+数据库(期末大作业)
- 基于python实现的医院信息管理系统完整源码+sql数据库+详细注释(高分课程设计)
- 基于python的眼底图像视杯视盘分割项目源码+文档说明+截图演示+详细注释(高分课程设计)
- ImageBasedModellingEdu-贰壹贰叁零
- DFFmeasurement-数据预处理
- ImageBasedModellingEdu-回文素数c语言
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0