Given a complex matrix, this method returns a real matrix obtained by taking the real part of each entry. It leaves matrices over RR and QQ unchanged.
i1 : A = random(RR^3,RR^5) o1 = | .892712 .632944 .89189 .775187 .0741835 | | .673395 .0258884 .231053 .909047 .808694 | | .29398 .714827 .461944 .314897 .362835 | 3 5 o1 : Matrix RR <--- RR 53 53 |
i2 : A == realPartMatrix A o2 = true |
i3 : B = sub(A, CC) o3 = | .892712 .632944 .89189 .775187 .0741835 | | .673395 .0258884 .231053 .909047 .808694 | | .29398 .714827 .461944 .314897 .362835 | 3 5 o3 : Matrix CC <--- CC 53 53 |
i4 : C = realPartMatrix B o4 = | .892712 .632944 .89189 .775187 .0741835 | | .673395 .0258884 .231053 .909047 .808694 | | .29398 .714827 .461944 .314897 .362835 | 3 5 o4 : Matrix RR <--- RR 53 53 |
i5 : clean(1e-10, A - C) == 0 o5 = true |
i6 : D = random(QQ^3, QQ^1) o6 = | 7/10 | | 1/2 | | 7/10 | 3 1 o6 : Matrix QQ <--- QQ |
i7 : D == realPartMatrix D o7 = true |
If the matrix is over a polynomial ring, but has entries defined over the base field (e.g., when taking coefficients), then it is necessary to substitute into the base field first:
i8 : R = CC[x,y] o8 = R o8 : PolynomialRing |
i9 : f = random(2,R) -- warning: experimental computation over inexact field begun -- results not reliable (one warning given per session) 2 2 o9 = (.0410167 + .951912*ii)x + (.752574 + .424521*ii)x*y + (.641878 + .267055*ii)y o9 : R |
i10 : C = last coefficients f o10 = {2} | .0410167+.951912ii | {2} | .752574+.424521ii | {2} | .641878+.267055ii | 3 1 o10 : Matrix R <--- R |
i11 : realPartMatrix sub(C, coefficientRing R) o11 = | .0410167 | | .752574 | | .641878 | 3 1 o11 : Matrix RR <--- RR 53 53 |
The object realPartMatrix is a method function.