|
|
◆ Cpqr79()
| Sub Cpqr79 |
( |
N As |
Long, |
|
|
A() As |
Complex, |
|
|
Z() As |
Complex, |
|
|
Info As |
Long |
|
) |
| |
高次代数方程式 (複素係数, 複素解) (随伴行列法)
- 目的
- 本ルーチンは複素係数の多項式p(z)のすべてのゼロ点を随伴行列法により求める.
p(z) = a0*z^n + a1*z^(n-1) + ... + an
- 引数
-
| [in] | N | 方程式の次数. (N >= 1) |
| [in] | A() | 配列 A(LA - 1) (LA >= N + 1)
p(z)の複素係数ベクトル (a0 〜 an). |
| [out] | Z() | 配列 Z(LZ - 1) (LZ >= N)
求められた解. |
| [out] | Info | = 0: 正常終了.
= -1: パラメータ N の誤り. (N <= 0)
= -2: パラメータ A() の誤り. (A(0) = 0)
= 1: 随伴行列の固有値を求める際に最大反復回数(30回)以内に収束しなかった. |
- 出典
- SLATEC
- 使用例
- 次の代数方程式を解く.
x^3 + (-19-14i)*x^2 + (67+191i)*x + 116-612i = 0
解は 8 + 4i, 4 + 9i, 7 + i である. Sub Ex_Cpqr79()
Const N As Long = 3
Dim A(N) As Complex, Z(N - 1) As Complex
Dim Info As Long, I As Long
Call Cpqr79(N, A(), Z(), Info)
For I = 0 To N - 1
Next
Debug.Print "Info =", Info
End Sub
Function Cmplx(R As Double, Optional I As Double=0) As Complex 複素数の作成
Function Cimag(A As Complex) As Double 複素数の虚数部
Function Creal(A As Complex) As Double 複素数の実数部
Sub Cpqr79(N As Long, A() As Complex, Z() As Complex, Info As Long) 高次代数方程式 (複素係数, 複素解) (随伴行列法)
- 実行結果
4 9.00000000000001
7.99999999999999 3.99999999999998
7.00000000000001 1.00000000000001
Info = 0
|