本文整理汇总了Golang中github.com/cpmech/gosl/la.TripletC.ToMatrix方法的典型用法代码示例。如果您正苦于以下问题:Golang TripletC.ToMatrix方法的具体用法?Golang TripletC.ToMatrix怎么用?Golang TripletC.ToMatrix使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/cpmech/gosl/la.TripletC
的用法示例。
在下文中一共展示了TripletC.ToMatrix方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: main
//.........这里部分代码省略.........
//
// solve:
// A.x = b
//
// the solution is:
// _ _
// | 3.3-i |
// | 1+0.17i |
// x = | 5.5 |
// | 9 |
// |_ 10-17.75i _|
// flag indicating to store (real,complex) values in monolithic form => 1D array
xzmono := false
// input matrix in Complex Triplet format
var A la.TripletC
A.Init(5, 5, 16, xzmono) // 5 x 5 matrix with 16 non-zeros
// first column
A.Put(0, 0, 19.73, 0) // i=0, j=0, real=19.73, complex=0
A.Put(1, 0, 0, -0.51) // i=1, j=0, real=0, complex=-0.51
// second column
A.Put(0, 1, 12.11, -1) // i=0, j=1, real=12.11, complex=-1
A.Put(1, 1, 32.3, 7)
A.Put(2, 1, 0, -0.51)
// third column
A.Put(0, 2, 0, 5)
A.Put(1, 2, 23.07, 0)
A.Put(2, 2, 70, 7.3)
A.Put(3, 2, 1, 1.1)
// fourth column
A.Put(1, 3, 0, 1)
A.Put(2, 3, 3.95, 0)
A.Put(3, 3, 50.17, 0)
A.Put(4, 3, 0, -9.351)
// fifth column
A.Put(2, 4, 19, 31.83)
A.Put(3, 4, 45.51, 0)
A.Put(4, 4, 55, 0)
// right-hand-side
b := []complex128{
77.38 + 8.82i,
157.48 + 19.8i,
1175.62 + 20.69i,
912.12 - 801.75i,
550 - 1060.4i,
}
// allocate solver
lis := la.GetSolver("umfpack")
defer lis.Clean()
// info
symmetric := false
verbose := false
timing := false
// initialise solver (C)omplex
err := lis.InitC(&A, symmetric, verbose, timing)
if err != nil {
io.Pfred("solver failed:\n%v", err)
return
}
// factorise
err = lis.Fact()
if err != nil {
io.Pfred("solver failed:\n%v", err)
return
}
// auxiliary variables
bR, bC := la.ComplexToRC(b) // real and complex components of b
xR := make([]float64, len(b)) // real compoments of x
xC := make([]float64, len(b)) // complex compoments of x
// solve (C)omplex
var dummy bool
err = lis.SolveC(xR, xC, bR, bC, dummy) // x := inv(A) * b
if err != nil {
io.Pfred("solver failed:\n%v", err)
return
}
// join solution vector
x := la.RCtoComplex(xR, xC)
// output
a := A.ToMatrix(nil)
io.Pforan("A.x = b\n")
la.PrintMatC("A", a.ToDense(), "(%5g", "%+6gi) ", false)
la.PrintVecC("b", b, "(%g", "%+gi) ", false)
la.PrintVecC("x", x, "(%.3f", "%+.3fi) ", false)
}
示例2: main
func main() {
// given the following matrix of complex numbers:
// _ _
// | 19.73 12.11-i 5i 0 0 |
// | -0.51i 32.3+7i 23.07 i 0 |
// A = | 0 -0.51i 70+7.3i 3.95 19+31.83i |
// | 0 0 1+1.1i 50.17 45.51 |
// |_ 0 0 0 -9.351i 55 _|
//
// and the following vector:
// _ _
// | 77.38+8.82i |
// | 157.48+19.8i |
// b = | 1175.62+20.69i |
// | 912.12-801.75i |
// |_ 550-1060.4i _|
//
// solve:
// A.x = b
//
// the solution is:
// _ _
// | 3.3-i |
// | 1+0.17i |
// x = | 5.5 |
// | 9 |
// |_ 10-17.75i _|
// flag indicating to store (real,complex) values in monolithic form => 1D array
xzmono := false
// input matrix in Complex Triplet format
var A la.TripletC
A.Init(5, 5, 16, xzmono) // 5 x 5 matrix with 16 non-zeros
// first column
A.Put(0, 0, 19.73, 0) // i=0, j=0, real=19.73, complex=0
A.Put(1, 0, 0, -0.51) // i=1, j=0, real=0, complex=-0.51
// second column
A.Put(0, 1, 12.11, -1) // i=0, j=1, real=12.11, complex=-1
A.Put(1, 1, 32.3, 7)
A.Put(2, 1, 0, -0.51)
// third column
A.Put(0, 2, 0, 5)
A.Put(1, 2, 23.07, 0)
A.Put(2, 2, 70, 7.3)
A.Put(3, 2, 1, 1.1)
// fourth column
A.Put(1, 3, 0, 1)
A.Put(2, 3, 3.95, 0)
A.Put(3, 3, 50.17, 0)
A.Put(4, 3, 0, -9.351)
// fifth column
A.Put(2, 4, 19, 31.83)
A.Put(3, 4, 45.51, 0)
A.Put(4, 4, 55, 0)
// right-hand-side
b := []complex128{
77.38 + 8.82i,
157.48 + 19.8i,
1175.62 + 20.69i,
912.12 - 801.75i,
550 - 1060.4i,
}
// solve
x, err := la.SolveComplexLinSys(&A, b)
if err != nil {
io.Pfred("solver failed:\n%v", err)
return
}
// output
a := A.ToMatrix(nil)
io.Pforan("A.x = b\n")
la.PrintMatC("A", a.ToDense(), "(%5g", "%+6gi) ", false)
la.PrintVecC("b", b, "(%g", "%+gi) ", false)
la.PrintVecC("x", x, "(%.3f", "%+.3fi) ", false)
}