Sei sulla pagina 1di 2

Prezados Alunos, Segue, logo abaixo, a descrio do projeto final do curso de Programao Computacional.

Relembrando que este trabalho deve ser feito em DUPLA e que a data de entrega dia 6/3 (s 14h para a Eng. Civil e s 16h para a Eng. de Materiais). Na menor suspeita de cpia, os autores e os copiadores sero punidos com ZERO na nota do trabalho. Portanto, tenham cuidado ao disponibilizar seus cdigos para colegas de turma. Bom trabalho a todos, Vicente Helano.

UMA BIBLIOTECA MATRICIAL MINIMALISTA ====================================

Voc dever implementar uma biblioteca de algoritmos de manipulao de matrizes reais simtricas, no-simtricas e anti-simtricas. As definies das funes devem ser colocadas em um arquivo denominado "src/matrizes.c", cujas interfaces sero declaradas em "include/matrizes.h".

Operaes matriciais ====================

A sua biblioteca dever fornecer as seguites operaes:

1) Soma de duas matrizes (A[mxn], B[nxp] e C[mxp]; faz C = A + B). void soma_matrizes(int m, int n, int p, double *A, double *B, double *C);

2) Subtrao de duas matrizes (C = A - B). void subtrai_matrizes(int m, int n, double *A, double *B, double *C);

3) Multiplicao por escalar (A = t*A). void multiplica_matriz_por_escalar(int m, int n, double *A, double t);

4) Produto matriz-por-matriz (C = A*B). void multiplica_matrizes(int m, int n, int p, double *A, double *B, double *C);

5) Transposio. void transposta(int m, int n, double *A);

6) Cria uma matriz arbitrria de ordem m x n. double *cria_matriz(int m, int n);

7) Inicializar uma matriz j existente com os valores da matriz identidade. void identidade(int m, int n, double *A);

Propriedades da matriz ======================

1) Nmero de linhas. 2) Nmero de colunas. 3) Nmero de elementos no-nulos. 4) Estrutura simtrica ou no-simtrica. 5) Nmero mximo, mdio, mnimo e desvio padro de coeficientes no-nulos por linha e por coluna. 6) Norma de Frobenius (http://en.wikipedia.org/wiki/Matrix_norm#Frobenius_norm).

Esquema de representao ========================

O armazenamento deve acontecer usando, obrigatoriamente, um arranjo unidimensional.

No caso de a matriz ser simtrica, deve-se armazenar apenas a parte triangular superior. Cuidado na implementao das operaes matriciais, pois voc dever ter operaes distintas para diferentes tipos de representao.

Entrada =======

O programa deve possuir um menu contendo todas as opes disponveis. Deve existir uma opo (tecla "h") para exibir um texto explicativo sobre a utilizao do programa. O seu programa deve ser capaz de ler at duas matriz no formato ``por coordenadas'' do Matrix Market (MM) e aplicar as operaes selecionadas pelo usurio. Para mais detalhes sobre este formato, favor consultar a pgina \url{http://math.nist.gov/MatrixMarket/formats.html#MMformat}

Sada =====

As propriedades da matriz, quando solicitadas, devem ser exibidas na sada padro. Caso necessrio, o usurio pode solicitar tambm a gravao da matriz atual em um novo arquivo no formato MM ou a simples exibio do contedo da matriz na tela.

Potrebbero piacerti anche