470,849 Members | 1,634 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,849 developers. It's quick & easy.

request for a program

i request the group to please send me " c programs " to find the matrix
inverse and determinant for any order.

May 12 '06 #1
5 1649
kumar said:
i request the group to please send me " c programs " to find the matrix
inverse and determinant for any order.


#include <stdio.h>
#include <string.h>

#define MAXLINE 16384

int main(void)
{
char haystack[MAXLINE] = {0};
char needle[] = "the matrix inverse and determinant for any order";
unsigned long line = 0;

while(fgets(haystack, sizeof haystack, stdin) != NULL)
{
++line;
if(strstr(haystack, needle) != NULL)
{
printf("Hit on line %lu\n", line);
}
}

return 0;
}

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
May 12 '06 #2
Why? I am sure you can find some open-source software that has the two
operations you are looking for. The determinant is very easy to
implement using a recursive algorithm. Expanding along a column or row
is well-suited to recursion. Do you have any C experience?

May 12 '06 #3
On 2006-05-12, ro**********@gmail.com <ro**********@gmail.com> wrote:

[
kumar> i request the group to please send me " c programs " to find the
kumar> matrix inverse and determinant for any order.
]
Why? I am sure you can find some open-source software that has the two
operations you are looking for. The determinant is very easy to
implement using a recursive algorithm.


The recursive algorithm is easy to implement, but likely to be very
inefficient if the number of rows and columns is much more than 4.

One way to work out the determinant I've heard of is to make the matrix
upper-triangular, and then to multiply all the diagonal elements
together.

The upper-triangular matrix can also be used to invert the matrix.

I have some octave source to hand for this, which could be converted to
C fairly easily, if the OP can understand the octave. Doesn't include
solving for the inverse using U, but that part isn't too hard.

1;

function U = gauss(M)
% Make a matrix upper triangular
for i = 2:rows(M)
for j = 1:i - 1 % rows above you
f = M(i, j) / M(j, j);
M(i, :) -= M(j, :) * f;
endfor
endfor
U = M;
endfunction

function d = my_det(M)
% Compute determinant using Gaussian elimination followed by multiplying
% diagonal elements together
U = gauss(M);
d = 1;

for i = 1:rows(U)
d *= U(i, i);
endfor
endfunction

M = rand(6)

% Using built-in det
det(M)

% Using our one, for comparison
my_det(M)
May 12 '06 #4
On Fri, 12 May 2006 04:23:34 -0700, kumar wrote:
i request the group to please send me " c programs " to find the matrix
inverse and determinant for any order.

Somewhat off topic here.
You might want to try sci.math.num-analysis.
Why do you want to compute the inverse? If it's to solve
a set of linear equations then there better ways to do that;
try Googling for "LU decomposition" (which will also allow you
to compute the inverse and determinant, if you really need them).
Note that the straightforward way of computing the determinant takes
on the order of n! operations, which makes it infeasible for anything
but small matrices.
Duncan
May 12 '06 #5
ro**********@gmail.com wrote:
Why?

Why what? See below.

Brian
--
Please quote enough of the previous message for context. To do so from
Google, click "show options" and use the Reply shown in the expanded
header.
May 12 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

10 posts views Thread by William L. Bahn | last post: by
9 posts views Thread by Adam Monsen | last post: by
4 posts views Thread by Josema | last post: by
1 post views Thread by EoRaptor013 | last post: by
7 posts views Thread by John Nagle | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.