我试图在Python中采用矩阵的逆矩阵并继续得到语法错误。我是Python的新手。在进行互联网搜索并尝试多种方法后,我仍然没有得到它。有人可以看看我的代码并指出我正确的方向吗? 错误信息: python2.6 test.py 文件“test.py”,第39行 inverse = 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)
.
.
.
答案 0 :(得分:3)
除了Nick Burns指出的缺失:
之外,Python不使用&&
。您应该使用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]
为了更容易看到必要的分隔符匹配。
答案 1 :(得分:0)
您的语法错误很可能来自代码末尾的if
语句。当IF语句末尾没有':'时,你会得到一个syntaxError。
例如:
def hello(name):
if name
SyntaxError: invalid syntax
希望有所帮助!
答案 2 :(得分:0)
你错过了一个闭幕式。
mat2 = ([(xp-x3), (yp-y3)]
应该是
mat2 = ([(xp-x3), (yp-y3)])
但是,修复后会出现进一步的语法错误。你可以看看Ray和Nick Burns的答案。