化非奇异矩阵为对角矩阵的程序任意
请尝试下面的程序,希望对你有所帮助。
program main
implicit none
integer,parameter::n=3 !变量x的个数
integer:: i,s
real(8):: a(n-1),b(n),c(n-1),f(n)
a=(/6,3/)
b=(/5,2,3/)
c=(/6,3/)
f=(/4,5,3/)
call sdj(n,a,b,c,f)
contains
!追赶法
subroutine sdj(n,a,b,c,f)
implicit none
integer:: n,i
real(8):: a(n-1),b(n),c(n-1),d(n-1),...全部
请尝试下面的程序,希望对你有所帮助。
program main
implicit none
integer,parameter::n=3 !变量x的个数
integer:: i,s
real(8):: a(n-1),b(n),c(n-1),f(n)
a=(/6,3/)
b=(/5,2,3/)
c=(/6,3/)
f=(/4,5,3/)
call sdj(n,a,b,c,f)
contains
!追赶法
subroutine sdj(n,a,b,c,f)
implicit none
integer:: n,i
real(8):: a(n-1),b(n),c(n-1),d(n-1),e(n-1),f(n)
real(8):: x(n)
!追赶法的核心
d(1)=f(1)/b(1)
e(1)=c(1)/b(1)
do i=2,n-1
e(i)=c(i)/(b(i)-a(i-1)*e(i-1))
d(i)=(f(i)-a(i-1)*d(i-1))/(b(i)-a(i-1)*e(i-1))
enddo
x(n)=(f(n)-a(n-1)*d(n-1))/(b(n)-a(n-1)*e(n-1))
do i=n-1,1,-1
x(i)=d(i)-e(i)*x(i+1)
end do
write(*,*) 'The roots is:'
write(*,*) x
return
end subroutine
end program。收起