在pylab错误中使用转置函数

时间:2014-05-13 16:58:20

标签: python matplotlib

所以,我试图在pylab中实现一个简单的共轭梯度程序。

from scipy import *
from numpy import *
import numpy as np
import math

class conGradient:
    def __init__(self,A,b,TOL,x):
        self.a=mat(A)
        self.b=mat(b).T
        self.x=mat(x).T
        self.tol=TOL
    def Algo(self):

        A=self.a
        b=self.b
        x=self.x
        xo=x
        ro=b-A*xo
        po=ro



        while(math.fabs(np.linalg.norm(ro,2))>self.tol):
            print str(ro.transpose())
            print str(ro)
            ak=((ro.transpose())*ro)/((po.transpose())*A*po)
            print str(ak.item(0))
            xn=xo+(ak.item(0)*po)
            rn=ro-(ak.item(0)*A*po)
            temp=rn.transpose()
            print str(temp)
            print str(rn)
            bn=(temp*rn)/((ro.transpose)*ro)
            pn=rn+bn*po
            xo=xn
            ro=rn
            po=pn
        print "Soltuion found within " + str(self.tol)+ "\n" + str(xn)

x=conGradient('[10 15; 4 1]','[45,9]', .001, '[1,1]')
x.Algo()

当我跑的时候,我遇到了转座问题

python conguateGradient.py 
[[20  4]]
[[20]
 [ 4]]
0
[[20  4]]
[[20]
 [ 4]]
Traceback (most recent call last):
  File "conguateGradient.py", line 43, in <module>
    x.Algo()
  File "conguateGradient.py", line 35, in Algo
    bn=(temp*rn)/((ro.transpose)*ro)
TypeError: unsupported operand type(s) for *: 'builtin_function_or_method' and 'matrix'

对我来说非常奇怪,因为在第一行,它会转换并继续,但是我继续尝试用rn再次执行它,然后出现这个问题。对这个问题的一些见解会非常有帮助。谢谢。

0 个答案:

没有答案