2013-04-03 69 views
0

我想在Python中使用矩陣的反函數,並不斷收到語法錯誤。我是Python的新手。在做了一次互聯網搜索並嘗試了多件事之後,我仍然沒有得到它。有人可以看看我的代碼,並指出我在正確的方向嗎? 錯誤消息: python2.6的test.py 文件 「test.py」,第39行 逆= mat1.I * MAT2 ^ 語法錯誤:無效的語法Matrix的反轉Python

謝謝!

#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) 
. 
. 
. 
+1

在查找有關Exception的幫助時,如'SyntaxError',通常最好至少發佈所涉及的trackback的最後部分,因爲它減少了我們查找錯誤所需的時間。 – Perkins

回答

0

您的語法錯誤很可能來自代碼末尾的if語句。當IF語句末尾沒有':'時,你會得到一個syntaxError。

例如:

def hello(name): 
    if name 

SyntaxError: invalid syntax 

希望幫助!

+0

它沒有得到「if」語句。我實際上有一個冒號,但當我格式化我的代碼發佈後,它不知何故被刪除。我收到的錯誤如下:文件「test.py」,第39行 inverse =(LA.inv(mat1))* mat2 ^ SyntaxError:無效語法 – user2238565

+0

lol - 我看到它已經爲您解答。我希望所有的好 –

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 (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] 

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

0

你錯過了一個關閉paren。

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

應該

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

固定,經過你會得到進一步的語法錯誤,但。你可以看看Ray和Nick Burns的答案。