求一个fortran解决线性方程的代码.

补充:用高斯消元法,要求有例子的.... 补充:用高斯消元法,要求有例子的. 展开
百度网友a57f22783
2012-06-15 · TA获得超过1655个赞
知道大有可为答主
回答量:581
采纳率:100%
帮助的人:400万
展开全部
我运行通过了~~
program main
implicit none
integer :: N = 3

real*8 :: A(3,3) = (/ 2, 3, 1, 1, 1, 2, 1, 2, 2 /)
real*8 :: B(3) = (/ 4, 6, 5/), X(3)

call LinearGauss (A, B, X, N)

write(*,*) X

end

!-------------------------------------------------
! 行尺度高斯消元法
!-------------------------------------------------
subroutine LinearGauss (A, B, X, N)
implicit none
integer :: N
real*8 :: A(N, N), B(N), X(N)

real*8 :: z
integer,allocatable :: p(:), s(:)
integer :: i, j, k, sl

allocate (p(N))
allocate (s(N))

do i=1, N
p(i) = i
s(i) = MaxVal ( Abs(A(i, :)) )
end do

do k=1, N-1

j = k
do i=k+1, N
if ( Abs(A(p(j), k)) / s(p(j)) < Abs(A(p(i), k)) / s(p(i)) ) then
j = i
end if
end do
sl = p(k)
p(k) = p(j)
p(j) = sl

do i=k+1, N
z = A(p(i), k) / A(p(k), k)
A(p(i), k) = z
do j=k+1, N
A(p(i), j) = A(p(i), j) - z * A(p(k), j)
end do
end do

end do

do k=1, N-1
do i=k+1, N
B(p(i)) = B(p(i)) - A(p(i), k) * b(p(k))
end do
end do

do i=N, 1, -1
z = 0
do j=i+1, N
z = z + A(p(i), j) * X(j)
end do
X(i) = (B(p(i)) - z) / A(p(i), i)
end do

end subroutine
舞灼之少
2012-06-15 · TA获得超过270个赞
知道小有建树答主
回答量:365
采纳率:0%
帮助的人:174万
展开全部
real*8 :: A(3,3) = (/ 2, 3, 1, 1, 1, 2, 1, 2, 2 /)
real*8 :: B(3) = (/ 4, 6, 5/), X(3)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式