- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

hello everyone,

I'm testing the inversion of a symmetric matrix, in order to do that, I wrote this code:

Complex[,] c = (Complex[,])a.Clone(); //I need to use it later Complex[,] d = (Complex[,])a.Clone(); //I need to use it later int n = a.GetLength(0); int lda = n; int info = 1; int[] ipiv = new int; info = MKLWrapper.LAPACKE_zsytrf(LAPACK_ROW_MAJOR, UPLO_U, n, c, lda, ipiv); info = MKLWrapper.LAPACKE_zsytri(LAPACK_ROW_MAJOR, UPLO_U, n, c, lda, ipiv); ipiv = new int ; info = MKLWrapper.LAPACKE_zsytrf(LAPACK_ROW_MAJOR, UPLO_L, n, d, lda, ipiv); info = MKLWrapper.LAPACKE_zsytri(LAPACK_ROW_MAJOR, UPLO_L, n, d, lda, ipiv); for (int i = 1; i <= a.GetLength(0); i++) { for (int j = 1; j <= a.GetLength(1); j++) { if (i > j) c[i, j] = d[i, j]; } }

This code works, but I'm not sure this is the right way to obtain my aim.

Is there anyone that can help me?

Thank you very much

Gianluca

Link Copied

2 Replies

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

The solution is easy!

The inverted matrix of a symmetrical matrix is symmetrical too. So the right code is:

Complex[,] c = (Complex[,])a.Clone(); int n = a.GetLength(0); int lda = n; int info = 1; int[] ipiv = new int; info = MKLWrapper.LAPACKE_zsytrf(LAPACK_ROW_MAJOR, UPLO_U, n, c, lda, ipiv); info = MKLWrapper.LAPACKE_zsytri(LAPACK_ROW_MAJOR, UPLO_U, n, c, lda, ipiv); for (int i = 1; i <= a.GetLength(0); i++) { for (int j = 1; j <= a.GetLength(1); j++) { if (i > j) c[i, j] = c[j, i]; } } if (info == 0) return c; else return null;

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi Gianluca G,

You are right, you can use get the inversion like that. Thank you for sharing.

Thanks

Ying

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page