fortran中用幂法求主特征值及其特征向量 的程序?在fortran4.0能够运行

希望是源代码... 希望是源代码 展开
 我来答
xmenlab
2013-04-26 · TA获得超过180个赞
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:138万
展开全部
具体幂法的原理可参考书籍,包含一个3x3的矩阵的程序如下:
======
module power

contains
subroutine solve(A,N,namda,u,tol)
implicit real*8 (a-h,o-z)
integer :: n,i,k
real*8 :: A(n,n),u(n),u0(n),v(n),m0,m1,namda

!迭代初始向量
u0(:) = 1.0d0
u = u0

!设置模最大分量初值,进入循环
m0 = 0.0d0
do k = 1,500
v = matmul(A,u)
call max_rou(v,n,m1)
u = v/m1

!判断迭代停止
if(dabs(m1-m0)<tol) exit

!更新m值
m0 = m1
end do

namda = m1

end subroutine

subroutine max_rou(r,n,ma)
implicit real*8 (a-h,o-z)
integer :: n,i,k
real*8 :: r(n),ma

ma = dabs(r(1))

do i = 2,n
if(dabs(r(i))>ma) then
ma = dabs(r(i))
k = i
end if
end do
ma = r(k)

end subroutine
end module

program main
use power
implicit real*8 (a-h,o-z)
real*8 :: A(3,3),u(3),namda

a = reshape((/-1.0d0,2.0d0,1.0d0, &
2.0d0,-4.0d0,1.0d0, &
1.0d0,1.0d0,-6.0d0 /),(/3,3/))
call solve(A,3,namda,u,1.0d-7)
write(*,101) namda,u
101 format(T5,'幂法计算主特征值及特征向量',//,&
T3,'主特征值为: ',F12.7,//,&
T3,'主特征向量为: ',3(/F12.7))

stop
end program
======

运行结果
======
幂法计算主特征值及特征向量

主特征值为: -6.4210663

主特征向量为:
-0.0461457
-0.3749207
1.0000000
======
更多追问追答
追问
你的方法是Fortran科学计算与工程-宋叶志里面的吧  而且那上面的源代码好像有点问题 改完后我在4.0上运行不出来    可能是我水平比较差找不到具体原因.                                       我想找的是一个一般的n*n 阶矩阵的    不需要具体的输出   一个子程序就行    运行环境是4.0   。 
不过还是非常感谢你的回答
追答
(1) 这个代码的确摘抄至《Fortran科学计算与工程》. 这3x3只是一个例子, 经过修改应该可以运行的.
(2) 我测试的环境是Linux(Debian), Intel Fortran Compiler, 完全没有问题.
(3) 如果要做任意n*n的矩阵, 可以用动态数组.
(4) 如果要做成一个子程序, 接收输入, 给出输出, 只需修改program main那段代码即可.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式