웹사이트 검색

Python 스크립트를 사용하는 Scientific Linux 7.1의 벡터 대수학: 파트 1


이 페이지에서

  1. 벡터 대수학\n
    1. 크기
    2. 방향\n
    3. 방향\n
    4. 벡터 대수 합\n
    5. 스칼라에 의한 벡터의 곱\n
    6. 단위 벡터
    7. 선형 조합\n

    1. 벡터의 크기
    2. 벡터의 방향\n
    3. 벡터의 방향\n
    4. 벡터 대수 합\n
    5. 스칼라에 의한 벡터의 곱\n
    6. 단위 벡터
    7. 선형 조합\n

    이 자습서에서는 Scientific Linux에서 벡터 대수 및 해당 계산에 대해 설명합니다. 우리의 목적을 위해 저는 단순성과 계산 능력 때문에 Python을 프로그래밍 언어로 선택했습니다. 모든 Linux 배포에는 기본적으로 터미널 창을 통해 호출되는 Python 편집기/컴파일러가 있습니다. 벡터 대수학의 몇 가지 개념을 살펴보겠습니다.

    참고: 2차원 또는 3차원의 실제 공간에서만 작업할 것입니다.

    벡터 대수학

    수학적 관점에서 벡터 공간의 요소는 해당 벡터 공간에 속하는 여러 요소의 배열로 나타낼 수 있습니다. 보다 구체적으로 수치 컴퓨팅 접근 방식에서는 세 가지 기본 특성을 갖는 실수 목록으로 나타낼 수 있습니다.

    크기

    X, Y 및 Z는 벡터 좌표입니다.

    방향

    벡터의 방향은 감독 각도라고 하는 좌표계의 각 축에 대한 특정 각도를 갖는 준선에 의해 제공됩니다.

    알파, 베타 및 감마가 벡터 방향각이고 코사인이 방향코사인인 경우 각 벡터 좌표를 크기로 나누어 계산할 수도 있습니다.

    정위

    동일한 방향 사이의 두 가지 가능한 방향 중 하나입니다.

    벡터 대수 합

    벡터의 대수적 합을 만들기 위해서는 두 벡터의 상동 좌표를 더해야 하며, 실수의 대수적 합의 동일한 속성에 주의를 기울여야 합니다. 다음과 같이:

    스칼라에 의한 벡터의 곱

    벡터와 스칼라가 주어지면 스칼라에 의한 곱 벡터는 벡터의 각 좌표의 스칼라 곱으로 정의됩니다.

    단위 벡터

    스칼라에 의한 제품 벡터에 대한 직접적인 적용은 단위 벡터인 단위 벡터는 길이가 1인 표준 벡터입니다.

    선형 조합

    과거 연산인 대수 합과 곱 벡터-스칼라를 혼합하면 결과가 동일한 벡터 공간에 속하는 벡터인 선형 조합을 얻습니다.

    여기서 벡터 A는 벡터 B와 C의 선형 결합입니다.

    Scientific Linux 7.1의 Python

    벡터 대수를 구현하기 위해 Python을 미적분 언어로 선택했습니다. 우리가 선택한 텍스트 편집기는 gedit이며 기본적으로 배포판 Scientific Linux 7.1과 함께 제공됩니다.

    벡터의 크기

    터미널을 사용하여 gedit를 호출하거나 응용 프로그램 탭에서 아이콘을 클릭하십시오.

    V=[2, 2, 1]

    크기를 저장하고 값을 제공하기 위해 변수를 선언하고 0을 사용합니다.

    modV=0

    이제 클래스 수학을 사용하여 제곱근을 연산합니다.

    import math

    크기 계산:

    modV=math.sqrt(V[0]**2+V[1]**2+V[2]**2)

    보시다시피 하위 인덱스를 사용하여 0부터 시작하여 목록에서 항목을 표시해야 합니다.

    완전한 스크립트는 다음과 같습니다.

    V=[2, 2, 1]
    modV=0
    import math
    modV=math.sqrt(V[0]**2+V[1]**2+V[2]**2)
    print (modV)

    완료되면 파일을 확장명 .py로 저장하고 파일 경로를 찾아 마우스 오른쪽 버튼을 클릭한 다음 "터미널 창에서 열기"로 터미널 창을 엽니다. 파이썬 인터프리터 타이핑을 호출한 후:

    $ python [path]/yourfilename.py
    for x in range (0,3):
        modV+=V[x]**2
    modV=math.sqrt(modV)

    파이썬 인터프리터가 그런 식으로 작동하기 때문에 여기서 우리는 들여쓰기 기술을 사용해야 합니다.

    벡터의 방향

    수업 수학 사용

    V=[2, 1, 2]
    modV=0
    import math
    for x in range (0,3): #loop for calculating the magnitude
        modV+=V[x]**2
    modV=math.sqrt(modV)
    for y in range (0,3): #loop for calculating the director cosines
        V[y]=V[y]/modV
    print (V)
    V=[2, 1, 2]
    angles=[0,0,0]
    modV=0
    import math
    for y in range (0,3): #loop for calculating the director angles in degrees
        angles[y]=math.degrees(math.acos(V[y]/modV))

    그런 다음 디렉터 코사인을 계산하고 인쇄해 보겠습니다.

    for z in range(0,3):    #loop for calculating the director cosines
        V[z]=math.cos(math.radians(angles[z]))
    print (angles)
    print (V)

    벡터의 방향

    벡터의 모든 좌표의 부호를 변경하면 본질적으로 다음과 같이 벡터의 방향이 변경됩니다.

    V=[-2, -1, -2]
    angles=[0,0,0]
    modV=0
    import math
    for y in range (0,3): #loop for calculating the director angles in degrees
        angles[y]=math.degrees(math.acos(V[y]/modV))for z in range(0,3):    #loop for calculating the director cosines
        V[z]=math.cos(math.radians(angles[z]))
    print (angles)
    print (V)

    벡터 대수 합

    먼저 대수 합과 관련된 모든 벡터를 다음과 같이 선언해야 합니다.

    A=[1,2,4]
    B=[2,1,4]
    S=[0,0,0]

    여기서 A 더하기 B를 합산하고 그 결과는 S에 저장됩니다.

    Python에서 두 개의 벡터(목록)를 추가하는 것은 결과 벡터의 각 좌표에 대해 for 루프를 실행하는 것과 같으므로 다음을 수행해야 합니다.

    for x in range(0,3):
        S[x]=A[x]+B[x]

    여기에 대수 벡터 합계에 대한 완전한 스크립트가 있습니다.

    A=[1,2,4]
    B=[2,1,4]
    S=[0,0,0]

    for x in range(0,3): #For loop for adding the homologue coordinate of each vector
        S[x]=A[x]+B[x]
    print 'S=',A, '+', B, '=', S

    스칼라에 의한 벡터의 곱

    주어진 벡터:

    A=[1,-2,3]

    그리고 스칼라:

    scalar=-2

    스칼라에 의한 곱 벡터는 벡터의 각 좌표의 스칼라 곱으로 정의됩니다.

    for x in range(0,3):
        R[x]=scalar*A[x]

    단위 벡터

    벡터 스크립트의 크기를 사용하여 다음을 얻습니다.

    V=[2, 2, 1]
    U=[0,0,0]
    modV=0
    invmodV=0
    import math
    modV=math.sqrt(V[0]**2+V[1]**2+V[2]**2)
    invmodV=1/modV
    for x in range(0,3):
        U[x]=invmodV*V[x]
    print 'U=',V,'/',modV,'=',U 

    선형 조합

    3개의 벡터 A, B 및 C가 주어지면 B와 C를 각각 곱한 스칼라 값을 계산할 수 있습니다. 즉, 벡터 A를 벡터 B와 C의 선형 조합으로 배치합니다. :

    A=[7, 9, -8]
    B=[1, 3, -2]
    C=[-2, 0, 1]

    선형 결합은 연립방정식, 3개의 벡터 r3인 경우 2개의 변수(스칼라)를 갖는 3개의 방정식 또는 R3의 2개의 벡터인 경우 2개의 변수를 갖는 2개의 방정식으로 이어지며 행렬의 행렬식을 적용하여 풀 수 있습니다. 여기서 우리는 파이썬이 처리하는 데이터 유형 때문에 요점을 밝혀야 합니다. 많은 경우에 선형 조합에 포함된 스칼라를 계산할 때 결과에 소수점 이하 자릿수가 포함되어 부동 소수점 연산이 발생합니다. Python에서 처리하는 숫자 데이터 유형은 Integer, Real, Long입니다. 따라서 벡터의 좌표를 Real 데이터 유형으로 삽입해야 실수(부동 소수점)를 나타냅니다. Python에서 데이터 유형의 몇 가지 특성을 알고 이해해야 합니다.

    • Integer는 Real 유형보다 적은 메모리 공간을 차지합니다.\n
    • Real을 사용한 작업은 Integer보다 느립니다.\n

    여기에는 동일한 벡터가 있지만 Real 유형으로 선언됩니다.

    A=[7.0,9.0,-8.0]
    B=[1.0,3.0,-2.0]
    C=[-2.0,0.0,1.0]

    따라서 이를 통해 벡터를 교환할 수 있으므로 항상 시스템 솔루션을 얻을 수 있습니다.

    우리가 해야 할 첫 번째 확인은 벡터 사이에 동일 평면성이 있는지 여부입니다. 선형 조합. 이를 위해 결정 행렬을 구현할 것입니다.

    det0=A[0]*(B[1]*C[2]-B[2]*C[1])-A[1]*(B[0]*C[2]-B[2]*C[0])+A[2]*(B[0]*C[1]-B[1]*C[0]) #Main Determinant involving all vectors

    이 결정자가 영(0)이면 벡터 간에 선형 종속성이 있고 스칼라 계산을 계속할 수 있습니다. 위에서 언급한 바와 같이 연립방정식에는 2개의 변수가 있는 3개의 방정식이 있어 결정된 호환 시스템을 생성합니다. 이에 대해 3개의 방정식 중 2개를 가져와 스칼라 값을 풀어야 합니다. 스칼라 값으로 해결합니다. 그들이 이것을 해결하지 못한다면, 선형 조합은 존재하지 않습니다.


    여기에 전체 코드가 있습니다.

    A=[7.0,9.0,-8.0]
    B=[1.0,3.0,-2.0]
    C=[-2.0,0.0,1.0]
    det0=A[0]*(B[1]*C[2]-B[2]*C[1])-A[1]*(B[0]*C[2]-B[2]*C[0])+A[2]*(B[0]*C[1]-B[1]*C[0]) #Main Determinant involving all vectors
    if det0==0:
        det1=B[0]*C[1]-B[1]*C[0] #First Determinant involving the first and second lines of the equations system
        if det1==0:
            det2=B[1]*C[2]-B[2]*C[1] #Second Determinant involving the second and third lines of the equations system
            if det2==0:
                print 'Linear Combination Unexistent'
            else:
                det3=A[1]*C[2]-A[2]*C[1]
                det4=B[1]*A[2]-B[2]*A[1]
                sc1=det3/det2
                sc2=det4/det2
                if sc1*B[0]+sc2*C[0]==A[0]:
                    print 'Scalar 1 =', sc1, 'Scalar 2 =', sc2
                    print A,'=',sc1,'*',B,'+',sc2,'*',C
                else:
                    print 'Linear Combination Unexistent'
        else:
            det3=A[0]*C[1]-A[1]*C[0]
            det4=B[0]*A[1]-B[1]*A[0]
            sc1=det3/det1
            sc2=det4/det1
           
            if sc1*B[2]+sc2*C[2]==A[2]:
                print 'Scalar 1 =', sc1, 'Scalar 2 =', sc2
                print A,'=',sc1,'*',B,'+',sc2,'*',C
            else:
                print 'Linear Combination Unexistent'
    else:
        print 'Linear Combination Unexistent'


    결과:

    [ ejemplos python]#

    결론적으로 기본 벡터 대수학은 방정식의 선형 시스템 및/또는 실수를 사용한 간단한 산술을 포함하는 일련의 작업을 초래합니다. 다른 튜토리얼에서는 내적, 외적 또는 혼합 제품과 같은 벡터를 사용하여 제품을 개발하는 방법을 볼 것입니다.