解线性方程组,写程序实现,要求用LU分解的办法,给出代码.
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/07 14:43:28
解线性方程组,写程序实现,要求用LU分解的办法,给出代码.
用LU分解解方程的程序.
用LU分解解方程的程序.
给出程序如下:
subroutine LinearLU (A,B,X,N)
implicit none
integer ::N
real*8 ::A(N,N),B(N),X(N)
real*8,allocatable ::U(:,:),L(:,:),Y(:)
real*8 ::sum
integer ::i,j,k,s
allocate (U(N,N))
allocate (L(N,N))
allocate (Y(N))
U = 0
L = 0
do k = 1,N !LU的 Doolittle 分解
L(k,k) = 1
do j = k,N
sum = 0
do s = 1,k-1
sum = sum + L(k,s) * U(s,j)
end do
U(k,j) = A(k,j) - sum
end do
do i = k+1,N
sum = 0
do s = 1,k-1
sum = sum + L(i,s) * U(s,k)
end do
L(i,k) = (A(i,k) - sum) / U(k,k)
end do
end do
Y = 0
do i=1,N
sum = 0
do j=1,i-1
sum = sum + L(i,j) * Y(j)
end do
Y(i) = (B(i) - sum) / L(i,i)
end do
X = 0
do i=N,1,-1
sum = 0
do j=i+1,N
sum = sum + U(i,j) * X(j)
end do
X(i) = (Y(i) - sum) / U(i,i)
end do
!do i=1,N
!if (X(i) > 1.79E308) then
!write(*,*) "Some errors happend when solving linear equations!"
!stop
!end if
!end do
end subroutine
subroutine LinearLU (A,B,X,N)
implicit none
integer ::N
real*8 ::A(N,N),B(N),X(N)
real*8,allocatable ::U(:,:),L(:,:),Y(:)
real*8 ::sum
integer ::i,j,k,s
allocate (U(N,N))
allocate (L(N,N))
allocate (Y(N))
U = 0
L = 0
do k = 1,N !LU的 Doolittle 分解
L(k,k) = 1
do j = k,N
sum = 0
do s = 1,k-1
sum = sum + L(k,s) * U(s,j)
end do
U(k,j) = A(k,j) - sum
end do
do i = k+1,N
sum = 0
do s = 1,k-1
sum = sum + L(i,s) * U(s,k)
end do
L(i,k) = (A(i,k) - sum) / U(k,k)
end do
end do
Y = 0
do i=1,N
sum = 0
do j=1,i-1
sum = sum + L(i,j) * Y(j)
end do
Y(i) = (B(i) - sum) / L(i,i)
end do
X = 0
do i=N,1,-1
sum = 0
do j=i+1,N
sum = sum + U(i,j) * X(j)
end do
X(i) = (Y(i) - sum) / U(i,i)
end do
end subroutine
subroutine LinearLU (A,B,X,N)
implicit none
integer ::N
real*8 ::A(N,N),B(N),X(N)
real*8,allocatable ::U(:,:),L(:,:),Y(:)
real*8 ::sum
integer ::i,j,k,s
allocate (U(N,N))
allocate (L(N,N))
allocate (Y(N))
U = 0
L = 0
do k = 1,N !LU的 Doolittle 分解
L(k,k) = 1
do j = k,N
sum = 0
do s = 1,k-1
sum = sum + L(k,s) * U(s,j)
end do
U(k,j) = A(k,j) - sum
end do
do i = k+1,N
sum = 0
do s = 1,k-1
sum = sum + L(i,s) * U(s,k)
end do
L(i,k) = (A(i,k) - sum) / U(k,k)
end do
end do
Y = 0
do i=1,N
sum = 0
do j=1,i-1
sum = sum + L(i,j) * Y(j)
end do
Y(i) = (B(i) - sum) / L(i,i)
end do
X = 0
do i=N,1,-1
sum = 0
do j=i+1,N
sum = sum + U(i,j) * X(j)
end do
X(i) = (Y(i) - sum) / U(i,i)
end do
!do i=1,N
!if (X(i) > 1.79E308) then
!write(*,*) "Some errors happend when solving linear equations!"
!stop
!end if
!end do
end subroutine
subroutine LinearLU (A,B,X,N)
implicit none
integer ::N
real*8 ::A(N,N),B(N),X(N)
real*8,allocatable ::U(:,:),L(:,:),Y(:)
real*8 ::sum
integer ::i,j,k,s
allocate (U(N,N))
allocate (L(N,N))
allocate (Y(N))
U = 0
L = 0
do k = 1,N !LU的 Doolittle 分解
L(k,k) = 1
do j = k,N
sum = 0
do s = 1,k-1
sum = sum + L(k,s) * U(s,j)
end do
U(k,j) = A(k,j) - sum
end do
do i = k+1,N
sum = 0
do s = 1,k-1
sum = sum + L(i,s) * U(s,k)
end do
L(i,k) = (A(i,k) - sum) / U(k,k)
end do
end do
Y = 0
do i=1,N
sum = 0
do j=1,i-1
sum = sum + L(i,j) * Y(j)
end do
Y(i) = (B(i) - sum) / L(i,i)
end do
X = 0
do i=N,1,-1
sum = 0
do j=i+1,N
sum = sum + U(i,j) * X(j)
end do
X(i) = (Y(i) - sum) / U(i,i)
end do
end subroutine
解线性方程组,写程序实现,要求用LU分解的办法,给出代码.
求矩阵LU分解的matlab代码
用MATLAB编写矩阵A的LU分解程序.
求matlab LU 分解程序
编一个程序,用C++实现矩阵的cholesky分解
matlab解线性方程组代码
求一个用C#制作的简易计算器程序的代码 只需要实现加减乘除
用C++编写一个判断素数合数的程序,要求输入素数时显示出“此数是素数”,输入合数时给出该合数的分解式
求最小二乘法解线性方程组的matlab程序
下面程序定义了立方体类.现给出了主函数和类定义的部分代码,请按要求把它补充完整.
有没有大神用过刘国华那篇用matlab实现遗传算法程序的论文中的代码的?
用verilog代码编写下面的程序