eigvec02.gms : 고유벡터/고유값 유틸리티 테스트

설명

고유값/벡터 테스트.
알려진 고유값/벡터를 갖도록 A를 구성합니다. A X = X lam

A = 2 1 X = 1 1 램 = 1
    1 2 -1 1 3

기고자: Steve Dirkse, 2008년 10월

소형 모델 유형 :메가 슬롯


카테고리 : 메가 슬롯 테스트 라이브러리


메인 파일 : eigvec02.gms

$title 고유벡터/고유값 유틸리티 테스트(EIGVEC02,SEQ=413)

$onText
고유값/벡터 테스트.
알려진 고유값/벡터를 갖도록 A를 구성합니다. A X = X lam

A = 2 1 X = 1 1 램 = 1
    1 2 -1 1 3

기고자: Steve Dirkse, 2008년 10월
$offText

I / i1 * i2 / 설정;
별칭(I,J,K);

매개변수
  A(I,J) '알려진 고유벡터/값을 갖도록 구성됨'
  X0(I,J) '알려진 고유벡터'
  X(I,J)
  lam0(I) '알려진 고유값' /
    나는1 1
    i2 3
  /,
  램(나)
  s(J) '고유벡터 비교를 위한 척도'
  ;

테이블 A(I,J)
      i1 i2
나는1 2 1
i2 1 2 ;

테이블 X0(I,J)
      i1 i2
나는1 1 1
i2 -1 1 ;

ExecuteTool.checkErrorLevel 'linalg.eigenvalue I A 램';
* 기호 lam은 ExecuteTool에 의해 암시적으로 로드되었습니다. 컴파일러 명령어
* 다음 줄에서는 아마도 할당되지 않은 기호에 대한 오류를 억제합니다.
$onImplicitAssign

abort$[smaxI, abs(lam(I)-lam0(I)) > 1e-8] 'lam (1)의 잘못된 고유값';

ExecuteTool.checkErrorLevel 'linalg.eigenVector I A 램 X';
abort$[smaxI, abs(lam(I)-lam0(I)) > 1e-8] 'lam (2)의 잘못된 고유값';
s(J) = X0('i1',J) / X('i1',J);
X(I,J) = X(I,J) * s(J);
abort$[smax(I,J), abs(X(I,J)-X0(I,J)) > 1e-8] 'X의 잘못된 고유벡터';