Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
66
Task/Conjugate-transpose/Sidef/conjugate-transpose.sidef
Normal file
66
Task/Conjugate-transpose/Sidef/conjugate-transpose.sidef
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
func is_Hermitian (Array m, Array t) -> Bool { m == t }
|
||||
|
||||
func mat_mult (Array a, Array b, Number ε = -3) {
|
||||
var p = []
|
||||
for r, c in (^a ~X ^b[0]) {
|
||||
for k in (^b) {
|
||||
p[r][c] := 0 += (a[r][k] * b[k][c]) -> round!(ε)
|
||||
}
|
||||
}
|
||||
return p
|
||||
}
|
||||
|
||||
func mat_trans (Array m) {
|
||||
var r = []
|
||||
for i,j in (^m ~X ^m[0]) {
|
||||
r[j][i] = m[i][j]
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func mat_ident (Number n) {
|
||||
^n -> map {|i|
|
||||
[i.of(0)..., 1, (n - i - 1).of(0)...]
|
||||
}
|
||||
}
|
||||
|
||||
func is_Normal (Array m, Array t) -> Bool {
|
||||
mat_mult(m, t) == mat_mult(t, m)
|
||||
}
|
||||
|
||||
func is_Unitary (Array m, Array t) -> Bool {
|
||||
mat_mult(m, t) == mat_ident(m.len)
|
||||
}
|
||||
|
||||
func say_it (Array a) {
|
||||
a.each {|b|
|
||||
b.map { "%9s" % _ }.join(' ').say
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
[
|
||||
[ 1, 1+1i, 2i],
|
||||
[1-1i, 5, -3],
|
||||
[0-2i, -3, 0]
|
||||
],
|
||||
[
|
||||
[1, 1, 0],
|
||||
[0, 1, 1],
|
||||
[1, 0, 1]
|
||||
],
|
||||
[
|
||||
[0.707 , 0.707, 0],
|
||||
[0.707i, -0.707i, 0],
|
||||
[0 , 0, 1i]
|
||||
]
|
||||
].each { |m|
|
||||
say "\nMatrix:"
|
||||
say_it(m)
|
||||
var t = mat_trans(m.map{.map{.conj}})
|
||||
say "\nTranspose:"
|
||||
say_it(t)
|
||||
say "Is Hermitian?\t#{is_Hermitian(m, t)}"
|
||||
say "Is Normal?\t#{is_Normal(m, t)}"
|
||||
say "Is Unitary?\t#{is_Unitary(m, t)}"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue