行列の固有値・固有ベクトル計算
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_mat_eig( FMATRIX_PTR a, FCOMPLEX_PTR lambda, FCOMPLEX_PTR vr, FCOMPLEX_PTR vl ) |
Visual Basic |
---|
Public Shared Function fnFIE_mat_eig ( a As FMATRIX_PTR, lambda As FCOMPLEX_PTR, vr As FCOMPLEX_PTR, vl As FCOMPLEX_PTR ) As Integer |
Parameters
- a
- Type: fvalgcli..::..FMATRIX_PTR
固有値を計算するNxN正方行列A
- lambda
- Type: fvalgcli..::..FCOMPLEX_PTR
固有値配列。 N個分の領域が必要。
- vr
- Type: fvalgcli..::..FCOMPLEX_PTR
Aの右固有ベクトル。
N*N個の領域が必要。
計算不要な場合は IntPtr.Zero を指定。
- vl
- Type: fvalgcli..::..FCOMPLEX_PTR
Aの左固有ベクトル。
N*N個の領域が必要。
計算不要な場合は IntPtr.Zero を指定。
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_NOMEMORY | メモリ不足エラー |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー |
F_ERR_INVALID_PARAM | パラメータ異常 |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Examples
C# | Copy |
---|---|
// $Revision: 1.2 $ using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace TC { public partial class FIE { [FvPluginExecute] public void fnFIE_mat_eig() { FMATRIX_PTR a = FMATRIX_PTR.Zero; FCOMPLEX_PTR lambda = FCOMPLEX_PTR.Zero; FCOMPLEX_PTR vr = FCOMPLEX_PTR.Zero; FCOMPLEX_PTR vl = FCOMPLEX_PTR.Zero; const int size = 10; try { lambda = FCOMPLEX_PTR.alloc(size); vr = FCOMPLEX_PTR.alloc(size); vl = FCOMPLEX_PTR.alloc(size); for (int i = 0; i < size; i++) { lambda[i] = FCOMPLEX.init( (double)i * 10 + 0.2, (double)i * 10 + 0.1); } int status = (int)f_err.F_ERR_NONE; a = api.fnFIE_mat_aalloc(2, 2); a[0, 0] = +1.0; a[0, 1] = 2.0; a[1, 0] = -2.0; a[1, 1] = 2.0; Assert.IsTrue(a != FMATRIX_PTR.Zero, "エラーが発生しました。"); status = api.fnFIE_mat_eig( a, lambda, vr, vl ); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); for (int i = 0; i < size; i++) { Console.WriteLine("[{0}] image ={1}, real={2}", i, lambda[i].image, lambda[i].real); } } finally { a.Dispose(); lambda.Dispose(); vr.Dispose(); vl.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.2 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE <FvPluginExecute> _ Public Sub fnFIE_mat_eig() Dim a As FMATRIX_PTR = FMATRIX_PTR.Zero Dim lambda As FCOMPLEX_PTR = FCOMPLEX_PTR.Zero Dim vr As FCOMPLEX_PTR = FCOMPLEX_PTR.Zero Dim vl As FCOMPLEX_PTR = FCOMPLEX_PTR.Zero Const size As Integer = 10 Try lambda = FCOMPLEX_PTR.alloc(size) vr = FCOMPLEX_PTR.alloc(size) vl = FCOMPLEX_PTR.alloc(size) For i As Integer = 0 To size - 1 lambda(i) = FCOMPLEX.init(CDbl(i) * 10 + 0.2, CDbl(i) * 10 + 0.1) Next Dim status As Integer = CInt(f_err.F_ERR_NONE) a = api.fnFIE_mat_aalloc(2, 2) a(0, 0) = +1.0 a(0, 1) = 2.0 a(1, 0) = -2.0 a(1, 1) = 2.0 Assert.IsTrue(a <> FMATRIX_PTR.Zero, "エラーが発生しました。") status = api.fnFIE_mat_eig(a, lambda, vr, vl) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) For i As Integer = 0 To size - 1 Console.WriteLine("[{0}] image ={1}, real={2}", i, lambda(i).image, lambda(i).real) Next Finally a.Dispose() lambda.Dispose() vr.Dispose() vl.Dispose() End Try End Sub End Class |