Algebra

1. Algebra

Spyxulos
spyxulos

(usa Debian)

Enviado em 15/12/2005 - 18:18h

Olá Pessoal,

Postei essa pergunta faz alguns dias, não obtive resposta, pois acho que postei na parte errada do site, vamos lá...
Queria saber se alguem por aqui gosta de implementar esse algoritmos matemáticos? e se já implementou sarrus de uma forma diferênte da que adotei? segue a baixo o código:

#include <stdio.h>

int h,i,j;
int a[3][3],r[3][3];
int d;

int xy(int x, int y)
{
printf("{TEXTO}33[%d;%dH",x,y);
}

void lerMATsarr(void)
{
int x,y;
y=0;
x=3;
for(h=1;h<=3;h++)
{
x++;
y=0;
y++;
for(j=1;j<=3;j++)
{
y+=6;
xy(x,y);
scanf("%d",&a[h][j]);
}
}

}

int main(void)
{
printf("{TEXTO}33[2J");
lerMATsarr();

h=1;

d=((a[h][h]
*a[h+1][h+1]
*a[h+2][h+2]) //OK
+(a[h][h+1]
*a[h+1][h+2]
*a[h+2][h]) //ok
+(a[h][h+2]
*a[h+1][h]
*a[h+2][h+1]) //ok
-((a[h][h+1]
*a[h+1][h]
*a[h+2][h+2]) //ok
+(a[h][h]
*a[h+1][h+2]
*a[h+2][h+1]) //ok
+(a[h][h+2]
*a[h+1][h+1]
*a[h+2][h])));

printf("\n det(A) = %d\n",d);
return 0;
}

Vlw?


  


2. Re: Algebra

Tiago Barcellos Peczenyj
pacman

(usa Ubuntu)

Enviado em 15/12/2005 - 20:16h

Todo o problema do teu algoritmo matematico é que, para o C, o indice de uma matriz vai de 0 até D-1, onde D é o tamanho.

Logo tu pegando a posição 3,3 da matriz, que não existe, tens que pegar a 2,2... troca teu h por 0 e tenta rodar ;-)


3. errado?

Spyxulos
spyxulos

(usa Debian)

Enviado em 15/12/2005 - 20:51h

Olha não tem nada errado no algortimo, no inicio do código tive que fazer muitas alterações no código, pois não estava calculando o determinante, sendo assim acabei esquecendo ela com o indice 1, mas de qualquer forma está funcionando, compila e acha o det certinho.

Não fui muito especifico em minha duvida, gostaria de saber se alguem implementou esse código de outra forma tipo no calculo do determinante, se algem conseguil implementar usando um for um while que seja para evitar de ter que escrever a formula, pois , tentei e não passou pela minha cabeça uma forma que isso funcionase... ok?
obrigado t+++..


4. Re: Algebra

Tiago Barcellos Peczenyj
pacman

(usa Ubuntu)

Enviado em 16/12/2005 - 10:19h

Ola

Para matrizes quadradas de orden N >= 2 existem metodos numericos baseados em propriedades dos determinantes frente a operações como : troca de linhas, encontrar linha multipla de outra, multiplicar uma linha por uma constante, subtrair uma linha por outra... procure um livro de algebra linear que está tudo explicado.

Talvez tenha alguma coisa no Numerical Recipes:

http://www.library.cornell.edu/nr/bookcpdf.html


5. Material

Spyxulos
spyxulos

(usa Debian)

Enviado em 16/12/2005 - 11:13h

Material bem legal esse, pow gostei mesmo, irei dar uma vasculhada nele, dei inicio na implementação de matrizes n = 2 essa noite, até agora sem problemas...

Muito obrigado mesmo...


6. Mudando de assunto...

Sidnei Diniz
sidneidiniz

(usa Ubuntu)

Enviado em 17/01/2006 - 16:11h

Fala spyxulos!

Apesar do motivo de seu post ser uma idéia para uma nova implementação do programa, gostaria de alertar q com certeza seu programa está gerando resultados imprecisos.

Basta observar q vc tenta chamar uma posição inexistente da matriz a. Exemplo:

Quando vc usa como sobrescrtio o valor h+2(q é igual a 3) para tentar acessar um registro da matriz, vc está acessando um espaço de memória não alocado para este vetor.

Tentar acessar a posição 3 de um vetor q tem posições de 0 a 2(pq em c/c++ o vetor começa em zero como o peczenyj mencionou) NÃO É UM ERRO DE SINTAXE, pq c/c++ não faz essa validação, e por isso teu compilador não chiou.

A solução realmente é sumir com esse H como o peczenyj mencionou tb!


Abraços!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts