0

Python で行列の逆数を取得しようとしていますが、構文エラーが発生し続けます。私はPythonが初めてです。インターネットで検索したり、いろいろ試してみましたが、まだわかりません。誰かが私のコードを見て、正しい方向に向けることはできますか? エラー メッセージ: python2.6 test.py File "test.py", line 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)
.
.
.
4

3 に答える 3

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]

必要な区切り文字が一致していることを確認しやすくするため。

于 2013-04-03T03:09:04.663 に答える
0

閉じ括弧がありません。

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

する必要があります

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

ただし、それを修正した後、さらに構文エラーが発生します。詳しくは、Ray と Nick Burns の回答をご覧ください。

于 2013-04-03T03:11:18.023 に答える