2013-04-03 2 views
0

Я пытаюсь взять обратную матрицу в Python и продолжать получать синтаксическую ошибку. Я новичок в Python. После интернет-поиска и попыток нескольких вещей, я все еще не получаю его. Может кто-нибудь взглянуть на мой код и указать мне в правильном направлении? Сообщение об ошибке: python2.6 test.py Файл "test.py", строка 39 обратная = mat1.I * MAT2 ^ SyntaxError: неверный синтаксисОбратный матрица 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

При поиске справки об исключении, например 'SyntaxError', обычно лучше разместить хотя бы последнюю часть трекбэка, поскольку это сокращает время, необходимое нам для поиска ошибки. – Perkins

ответ

0

Ваша ошибка синтаксиса более чем вероятно, идет от if заявления в конце кода. Вы получите синтаксисError, когда оператор IF не имеет в конце символа ':'.

Например:

def hello(name): 
    if name 

SyntaxError: invalid syntax 

Надежда, что помогает!

+0

Он не подходит к утверждению «если». У меня на самом деле есть двоеточие, но он каким-то образом удалился, когда я форматировал свой код для публикации. Ошибка, которую я получаю, выглядит следующим образом: Файл «test.py», строка 39 inverse = (LA.inv (mat1)) * mat2 ^ СинтаксисError: недействительный синтаксис – user2238565

+0

lol - Я вижу, вам ответили. Все хорошо, я надеюсь –

3

В дополнение к отсутствующим :, указанному Ником Бернсом, 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

Вам не хватает закрывающего пара.

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

Должно быть

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

Вы получите дополнительные синтаксические ошибки после фиксации, что, хотя. Вы можете посмотреть ответы Рэя и Ника Бернса для большего.

Смежные вопросы