回 帖 发 新 帖 刷新版面

主题:第一个矩阵已知,后面矩阵用到前面矩阵咋办

矩阵t(0)已知,t(00)为t(0)的转置,I为单位矩阵

t(1)=(I-t(0)t(00)-t(00)t(0))t(0)**2
t(11)=(I-t(0)t(00)-t(00)t(0))t(00)**2

t(2)=(I-t(1)t(11)-t(11)t(1))t(1)**2
t(22)=(I-t(1)t(11)-t(11)t(1))t(11)**2

一直重复下去,到第i个t(i)
t(i)=(I-t(i-1)t(ii-1)-t(ii-1)t(i-1))t(i-1)**2
t(ii)=(I-t(i-1)t(ii-1)-t(ii-1)t(i-1))t(ii-1)**2

如果已知第一个t(0)以及其转置矩阵t(00),用什么算法求第i个
t(i),t(ii)呢?[em2][em2][em2][em2][em2][em14][em14][em14][em14][em14]

回复列表 (共8个回复)

沙发

最简单就是根据你描述的这样, 重复出来.
复杂一点就看看能不能推导出一个解析式或者简单的递推关系.

板凳

用do循环有什么问题?不能解决你的问题么?

3 楼

[quote]用do循环有什么问题?不能解决你的问题么?[/quote]

可以这样不?因为t是(8,8)矩阵,让第1个t为t(8,8,0),第二个t(8,8,1),第i个t(8,8,i-1)分别代表t(0),...,t(i).就是不知道如果转置的话会不会出错,因为i只是代表第几个t,前面两个才是存储的它的数值。

能否用一维数组来存储二维矩阵?比如
t(0)代替第一个t(8,8)

4 楼

[quote][quote]用do循环有什么问题?不能解决你的问题么?[/quote]

可以这样不?因为t是(8,8)矩阵,让第1个t为t(8,8,0),第二个t(8,8,1),第i个t(8,8,i-1)分别代表t(0),...,t(i).就是不知道如果转置的话会不会出错,因为i只是代表第几个t,前面两个才是存储的它的数值。

能否用一维数组来存储二维矩阵?比如
t(0)代替第一个t(8,8)[/quote]

定义一个type数组不就行了?type里面包含一个二维数组存放矩阵。

5 楼


[em6][em6][em6]
呵呵,没用过type,这样处理了下不知道效果怎样

  t0=(.i.(energy-h0)).x.h10
  t1=transpose(t0)
  tt=t0
 do i=1,n
  t0=(.i.(energy-t0.x.t1-t1.x.t0)).x.(t0**2)
  t1=t1.x.t0
  tt=tt+t1
 end do

6 楼

[quote]
[em6][em6][em6]
呵呵,没用过type,这样处理了下不知道效果怎样

  t0=(.i.(energy-h0)).x.h10
  t1=transpose(t0)
  tt=t0
 do i=1,n
  t0=(.i.(energy-t0.x.t1-t1.x.t0)).x.(t0**2)
  t1=t1.x.t0
  tt=tt+t1
 end do

[/quote]


t0不定么?

7 楼

t0已知了,是个已知矩阵。公式在上面,好像这样应该可以了
t0=(.i.(energy-h0)).x.h10
  t1=transpose(t0)
  tt=t0
  tt_=t1
 do i=1,n

  t0=(.i.(energy-t0.x.t1-t1.x.t0)).x.(t0**2)
  t2=t1.x.t0
  tt=tt+t2
  t1=t1.x.transpose(t0)

 end do

8 楼


最后一个公式谁写的,文献中的还是自己写的?似乎该写的项没写,看不出有什么规律,很费解!

我来回复

您尚未登录,请登录后再回复。点此登录或注册