LU矩阵直接三角分解法

program zhijie !
implicit none
real(8),dimension(:,:),allocatable::a
real(8),dimension(:),allocatable::b,x
integer::i,j,n
print,"输入维度n"
read(
,)n
allocate(a(n,n),b(n),x(n))
print
,"输入nn的数组a"
read(
,)((a(i,j),j=1,n),i=1,n)
print
,"n的数组b"
read(,),b
call zhijie_s_j(n,a,b,x)
print,x
end program zhijie
!****************************************************
subroutine zhijie_s_j(n,a,b,x)
implicit none
integer::i,j,k,n
real(8)::sum1,sum2,sum3,sum4,d1,d2,d3,d4
real(8),dimension(n,n)::a,u,l
real(8),dimension(n)::b,c,x,y
do i=1,n
u(1,i)=a(1,i)
end do
do i=2,n
l(i,1)=a(i,1)/u(1,1)
end do
do j=2,n
do i=j,n
sum1=0
do k=1,j-1
d1=l(j,k)
u(k,i)
sum1=sum1+d1
end do
u(j,i)=a(j,i)-sum1
end do
do i=j+1,n
if(j/=n)then
sum2=0
do k=1,j-1
d2=l(i,k)u(k,j)
sum2=sum2+d2
end do
l(i,j)=(a(i,j)-sum2)/u(j,j)
end if
end do
end do ! 计算U和L的数值
!***************************************************
y(1)=b(1)
do i=2,n
sum3=0
do k=1,i-1
d3=l(i,k)
y(k)
sum3=sum3+d3
end do
y(i)=b(i)-sum3
end do !计算y
x(n)=y(n)/u(n,n)
do i=n-1,1,-1
sum4=0
do k=i+1,n
d4=u(i,k)*x(k)
sum4=sum4+d4
end do
x(i)=(y(i)-sum4)/u(i,i)
end do !计算x
end subroutine zhijie_s_j

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,735评论 0 2
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 4,778评论 0 0
  • 50道JAVA基础编程练习题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    清先生阅读 2,607评论 0 2
  • 彩排完,天已黑
    刘凯书法阅读 9,752评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,864评论 2 7