сложность в понимании поведения массива - PullRequest
1 голос
/ 17 августа 2011

ниже приведен (очень) сокращенный вариант моей программы

вектор normvecs не перезаписывается, вы сможете убедиться сами, только запустив этот фрагмент кода, параметры верны geom функция принимает массив n + 1 X 2 и n в качестве входных данных, я думаю, что я делаю что-то действительно глупое (что я думаю, что я), или я не понимаю это поведение

import numpy as np

#geometry calculations
def geom(pts,n):
    r = np.zeros(n)
    normvecs = np.zeros((n,2))
    tgtvecs  = np.zeros((n,2))
    alphap = np.zeros(n)
    cpts = np.zeros((n,2))
    #collocation points
    cpts[:,0] = (pts[0:n,0]+pts[1:n+1,0])/2  
    cpts[:,1] = (pts[0:n,1]+pts[1:n+1,1])/2
    #length of panels
    r[:] = np.sqrt((pts[0:n,0]-pts[1:n+1,0])**2 + (pts[0:n,1]-pts[1:n+1,1])**2)
    #angle of each panel with the horizantal(chord)/refernce axis
    alphap[:] = np.arctan2(pts[1:n+1,1]-pts[0:n,1],pts[1:n+1,0]-pts[0:n,0])
    #normal vectors
    normvecs[:,0] = -np.sin(alphap[:])
    normvecs[:,1] =  np.cos(alphap[:])
    xx = np.cos(alphap[:])
    print(normvecs[:,0],normvecs[:,1],np.cos(alphap[:]),xx)
    return

geom(np.random.rand(31,2),30)

normvecs [:, 1] показывает только отрицательное значение nomvecs [:, 0], которое я не смог перезаписать, как normvecs [:, 1] = xx (без ошибок ... но просто напечатал одно и то же)

Возможно, я не звучу ясно, если однажды вы побежите, вы увидите, что я пытаюсь сказать.

в чем проблема? (Если это так!)

1 Ответ

2 голосов
/ 17 августа 2011

Я не вижу проблем вообще. Запуск более краткой версии вашего кода:

import numpy as np

#geometry calculations
def geom(pts,n):
    normvecs = np.zeros((n,2))
    alphap = np.zeros(n)
    alphap[:] = np.arctan2(pts[1:n+1,1]-pts[0:n,1],pts[1:n+1,0]-pts[0:n,0])
    normvecs[:,0] = -np.sin(alphap[:])
    normvecs[:,1] =  np.cos(alphap[:])
    print np.abs(normvecs[:,0])-np.abs(normvecs[:,1])
    return

geom(np.random.rand(31,2),30)

производит что-то вроде этого:

[ 0.47500019 -0.03182906 -0.46597523  0.7479451   0.12580804 -0.36311644
  0.06406616 -0.29641905 -0.39982319 -0.98493049 -0.4431009  -0.29506693
 -0.25931983  0.67831564 -0.80676608 -0.53007712  0.63448069  0.67457029
  0.25457744 -0.82095266 -0.27461275 -0.91244341 -0.69530798 -0.69023852
  0.18840807  0.49891863  0.52417747  0.06833423  0.83449866  0.47608894]

Что наводит меня на мысль, что элементы двух строк normvecs, о которых вы говорите, одинаковы по величине, не являются

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...