2013-04-03 4 views
0

파이썬에서 행렬의 역함을 취하고 구문 오류가 계속 발생하려고합니다. 나는 Python을 처음 사용한다. 인터넷 검색을하고 여러 가지를 시도한 후에도 나는 아직 이해하지 못하고 있습니다. 누군가 내 코드를보고 올바른 방향으로 나를 가리킬 수 있습니까? 오류 메시지 : 파일 "test.py" python2.6의 test.py, 라인 (39) 역 = mat1.I * mat2 ^ 구문 에러 : 유효하지 않은 구문매트릭스 파이썬의 역함수

감사합니다!

#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

"SyntaxError"와 같이 Exception에 대한 도움을 얻으려면 일반적으로 적어도 관련된 트랙백의 마지막 부분을 게시하는 것이 가장 좋습니다. 그러면 우리가 오류를 찾는 데 걸리는 시간이 단축됩니다. – 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)가 지적한 : 누락과 더불어 파이썬에서는 &&을 사용하지 않습니다. 대신 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) 

을, 파이썬은 귀하의 경우 조건을 조금 단순화 다음 구문을 허용 :

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

닫는 괄호가 없습니다.

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

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

당신은 그래도 것을 해결 한 후 추가 구문 오류를 얻을 것이다이어야한다. Ray와 Nick Burns의 답변을 더 많이 볼 수 있습니다.