主题:jstzhurj老师,我又将程序简化了,能否看下?
tianhy2010
[专家分:60] 发布于 2010-08-28 22:18:00
还是上次那代码。我想了下,由于相邻的两个特征值之间可能有好几个p,比如在eigenvalue(4)和eigenvalue(5)之间有8个p,分别是23、24、25、。。。、30,他们的conr值相同,我只要算一个就可以了,然后把这个值赋给其他的conr,比如得到了conr(23),可以把conr(23)直接赋给conr(24、25、26、...、30),这样就不用再重复计算了,我改了下程序,帮忙看下吧?呵呵
q=1
do i=1,4*m*n-1 !每个i找满足的p,先对i循环
conduc=0.0
k=0
do p=q,450000
if((eigenvalue(i)<=Ef(p)).and.(eigenvalue(i+1)>Ef(p))) then !如果p满足条件,就执行下面的操作,再看下满足这个条件的p有几个
q=p+1 !p+1看下还能否满足条件,如果能那就k+1,直到不能满足条件跳出if语句
k=k+1 !计算总的能满足i条件的p的个数
end if
do temp=1,i
do j=i+1,4*m*n
ea=matmul(traneigv(temp,:),hx)
ec=matmul(traneigv(temp,:),hy)
eb=matmul(traneigv(j,:),hx)
ed=matmul(traneigv(j,:),hy)
conduc=conduc+(dot_product(ea,eigenvector(:,j))*dot_product(ed,eigenvector(:,temp))
end do
end do
conr(p)=2*pi*aimag(conduc)/S
!将能满足i条件的所有conr(p)都赋值,如果k>1,那就说明不止一个能满足条件了
if(k>1) then
do ii=1,k
conr(p+ii)=conr(p)
end do
end if
q=p
exit !退到计算下一个i的地方
end do
end do
最后更新于:2010-08-30 22:21:00
回复列表 (共58个回复)
11 楼
tianhy2010 [专家分:60] 发布于 2010-08-30 11:51:00
老师,发给我看下吧。呵呵,多谢啦
12 楼
tianhy2010 [专家分:60] 发布于 2010-08-30 11:53:00
[em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2]
13 楼
tianhy2010 [专家分:60] 发布于 2010-08-30 11:54:00
发到这个邮箱吧。tianhy2010@163.com多谢啦。
14 楼
jstzhurj [专家分:4680] 发布于 2010-08-30 12:08:00
[quote]发到这个邮箱吧。tianhy2010@163.com多谢啦。[/quote]
[em1][em2][em3][em4][em5][em7][em9][em10][em12][em13][em15][em14][em16][em17][em18][em19][em20]
15 楼
tianhy2010 [专家分:60] 发布于 2010-08-30 12:36:00
老师,我感谢您!!祝您身体健康,每天心情愉快,万事顺心!!
感谢上帝,阿门!!
[em1][em2][em3][em4][em5][em6][em7][em8][em9][em10][em11][em12][em13][em13][em14][em16][em17][em18][em19][em20][em35][em35][em35][em35][em35][em35][em35][em35][em35][em35][em35][em35][em35][em32][em32][em32][em32][em32][em32][em32][em60][em60][em60][em60]
16 楼
jstzhurj [专家分:4680] 发布于 2010-08-30 13:11:00
请问你的loop=10循环干啥用?
17 楼
jstzhurj [专家分:4680] 发布于 2010-08-30 13:38:00
我现在对你的程序有严重的怀疑!怀疑你程序实现的东西完全不是你本意想要的东西!!
18 楼
tianhy2010 [专家分:60] 发布于 2010-08-30 14:30:00
老师,我把我的本意贴出来吧,在word里,您看下吧。
19 楼
tianhy2010 [专家分:60] 发布于 2010-08-30 14:34:00
那个附件就是的
20 楼
tianhy2010 [专家分:60] 发布于 2010-08-30 14:35:00
加了10个循环主要是考虑到每次去矩阵特征向量和特征值都有所不同,多次求取平均值吧
我来回复