【问题标题】:Inverse of a Matrix Python矩阵 Python 的逆
【发布时间】:2013-04-03 02:46:23
【问题描述】:

我正在尝试在 Python 中取矩阵的逆并不断收到语法错误。我是 Python 新手。在进行了互联网搜索并尝试了多种方法之后,我仍然没有得到它。有人可以看看我的代码并指出我正确的方向吗? 错误信息: python2.6 test.py 文件“test.py”,第 39 行 逆 = mat1.I*mat2 ^ SyntaxError: 无效语法

谢谢!

#import all of the needed libraries
import math
import matplotlib.pyplot as plt
import numpy
import array
import itertools
from numpy import linalg as LA

#variables and defs
x = []
y = []
h1 = 1
h2 = 5
h3 = 10
x1 = .5
x2 = 9.5
x3 = 4.5
y1 = .5
y2 = 2.5
y3 = 9.5


#create a 10x10 grid
for i in range(10):
    for j in range(10):
        x.append(i)
        y.append(j)
    j=0

#Triangle Interpolation Method 3
for i in range(100):
    xp = x(i)
    yp = y(i)

    mat1 = ([[(x1-x3),(x2-x3)],[(y1-y3), (y2-y3)]])  
    mat2 = ([(xp-x3), (yp-y3)]
    inverse = (LA.inv(mat1))*mat2

    w1 = inverse(1)
    w2 = inverse(2)
    w3 = 1-w1-w2

#check to see if the points fall within the triangle
if((w1 <=1 && w1 >=0) && (w2 <=1 && w2 >=0) && (w3 <=1 && w3>=0))
    z = (h1*w1)+(h2*w2)+(h3*w3)
.
.
.

【问题讨论】:

  • 在寻求异常帮助时,例如SyntaxError,通常最好至少发布所涉及的引用的最后一部分,因为这样可以减少我们发现错误所需的时间.

标签: python geometry interpolation matrix-inverse


【解决方案1】:

除了 Nick Burns 指出的 : 缺失之外,Python 不使用 &amp;&amp;。你应该改用and

if((w1 <=1 and w1 >=0) and (w2 <=1 and w2 >=0) and (w3 <=1 and w3>=0)):
    z = (h1*w1)+(h2*w2)+(h3*w3)

此外,Python 允许使用以下语法来稍微简化您的 if 条件:

if (0 <= w1 <= 1) and (0 <= w2 <= 1) and (0 <= w3 <=1):
    z = (h1*w1)+(h2*w2)+(h3*w3)

编辑:

根据您的评论指出的实际错误是这一行中不平衡的括号:

mat2 = ([(xp-x3), (yp-y3)]

应该是:

mat2 = [(xp-x3), (yp-y3)]

你可以进一步写成这样

mat2 = [xp-x3, yp-y3]

为了更容易看到必要的分隔符匹配。

【讨论】:

    【解决方案2】:

    您的语法错误很可能来自代码末尾的if 语句。当 IF 语句末尾没有 ':' 时,您将收到 syntaxError。

    例如:

    def hello(name):
        if name
    
    SyntaxError: invalid syntax
    

    希望有帮助!

    【讨论】:

    • 它没有进入“if”语句。我实际上有一个冒号,但是当我格式化要发布的代码时它以某种方式被删除了。我收到的错误如下: File "test.py", line 39 inverse = (LA.inv(mat1))*mat2 ^ SyntaxError: invalid syntax
    【解决方案3】:

    你缺少一个结束括号。

    mat2 = ([(xp-x3), (yp-y3)]
    

    应该是

    mat2 = ([(xp-x3), (yp-y3)])
    

    不过,在修复该问题后,您会遇到更多语法错误。您可以查看 Ray 和 Nick Burns 的答案以了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      相关资源
      最近更新 更多