I don't know really know why FullSimplify
doesn't work, but Refine
does
Assuming[{a >= 0, d >= 0, b1 >= 0, b2 >= 0, c >= 0},
Refine[({{Re[mat1[[1]][[1]]],
Re[mat1[[1]][[2]]], -Im[mat1[[1]][[1]]], -Im[
mat1[[1]][[2]]]}, {Re[mat1[[2]][[1]]],
Re[mat1[[2]][[2]]], -Im[mat1[[2]][[1]]], -Im[
mat1[[2]][[2]]]}, {Im[mat1[[1]][[1]]], Im[mat1[[1]][[2]]],
Re[mat1[[1]][[1]]], Re[mat1[[1]][[2]]]}, {Im[mat1[[2]][[1]]],
Im[mat1[[2]][[2]]], Re[mat1[[2]][[1]]], Re[mat1[[2]][[2]]]}})]]
(* {{a, d, (b1 + c)/2, 0}, {d, a, 0, (b2 - c)/2}, {1/2 (-b1 - c),
0, a, d}, {0, 1/2 (-b2 + c), d, a}} *)
Occasionally, a more specific simplification, such as Refine
finds what you want when the more general one, FullSimplify
, does not. Presumably FullSimplify
tries a lot of other things before it gives up.