Fórum de discussão aberto

Fórum de discussão aberto

por Andre Chalom -
Número de respostas: 6
Fórum de discussão aberto. Vocês agora podem postar suas dúvidas e questões aqui.
Em resposta à Andre Chalom

Re: Fórum de discussão aberto

por Nathálioa Cibirka de Oliveira -
Olá André, estou com um problema no escalonamento. Por algum motivo quando faço o escalonamento da matriz, consigo zerar abaixo da diagonal, porém os outros elementos não são alterados como deveriam.
Nas instruções do EP diz
while Col<n:
laux=Col+1
for lin=laux to n:
substituição apropriada

Nessa substituição eu estou variando um j de 0 a n e alterando o elemento da matriz conforme teoria. Acredito que o problema está em algum dos critérios de início ou parada, mas não consegui resolver.

Obrigada

Nathália
Em resposta à Nathálioa Cibirka de Oliveira

Matriz de Hilbert

por Daniel Ortega -
Olá, André
no EP o professor pede que testemos o programa utilizando as matrizes de Hilbert para as ordens n=4, 7 e 10. Mas a matriz de Hilbert é uma matriz quadrada, possui o número de linhas igual ao de colunas. Como faremos pra testar se precisamos de uma matriz extendida, do tipo Anx(n+1)?
Obrigado.

Daniel
Em resposta à Daniel Ortega

Re: Matriz de Hilbert

por Andre Chalom -
Olá, Daniel. A matriz extendida A é composta por duas partes: uma matriz quadrada, que vamos chamar de H(nxn), e um vetor b(1xn). A matriz A é formada colocando H e b um do lado do outro: A = [H|b]. Em conexão com o sistema linear, o sistema linear que a matriz A representa é Hx = b. Então, vocês devem usar a matriz de Hilbert nxn com n=4,7,10 com uma coluna a mais que é o vetor do lado direito da equação, para uma matriz A(4,5), A(7,8) e A(10,11), respectivamente.

Nathalia: Tem milhares de coisas que podem estar acontecendo com o seu programa. Traga o seu EP em um pen-drive na próxima monitoria e a gente tenta ver o que está acontecendo.
Em resposta à Andre Chalom

Re: Matriz de Hilbert

por Daniel Bednarski -
Os itens 2 e 4 diz "Compare as soluções encontradas com a solução exata, estimando o número de dígitos corretos para cada n.". Como eu estimo a solução exata? Eu percebi que os números da solução exata são inteiros, mas como saber qual inteiro?

Outra coisa, o relatório tem caráter de relatório mesmo, ou é para somente enumerar os itens 2, 4 e 5 e respondê-los em um arquivo texto?
Em resposta à Daniel Bednarski

Re: Matriz de Hilbert

por Daniel Bednarski -
Mais dúvidas, além das anteriores:

1. O EP são dois programas, dois arquivos (no meu caso, .c), um para rodar gauss simples, outro gauss com pivotamento? Ou é um único programa com as duas funções?

2. Sobre "Compare as soluções encontradas com a solução exata, estimando o número de dígitos corretos para cada n." que falei na mensagem anterior, eu descobri que entendi menos ainda do que achava que era. O que exatamente tem que fazer?

3. Posso declarar iflag e n como variáveis globais e não variáveis dentro do main?


Obrigado.
Em resposta à Daniel Bednarski

Re: Matriz de Hilbert

por Andre Chalom -
Olá, Daniel.

1. Um programa com duas funções.

2. Teste seu programa com um sistema para o qual você já sabe a solução. Faça H a matriz de Hilbert e z = (1, 1, 1, ...), e encontre b = Hz. Então resolva o sistema Hx = b - você devia encontrar z, mas vai encontrar um "z com erro".

3. Você pode declarar como globais, mas usar variáveis globais é uma MÁ PRÁTICA de programação. Imagine que em programas grandes, você rapidamente se perde quando precisa lembrar se o n foi usado para alguma ou outra coisa, ou se essa flag significa isso ou aquilo. Então o melhor jeito (e o jeito que ganha mais nota) é usar ponteiros: declare GaussSimple (int n, int * IFLAG...), e no main passe o endereço da variável GaussSimple (n, &IFLAG, ...).

4. Pro "relatório", basta responder as questões, mas contextualize. Responder "1. Sim. 2. Não. 3. São 5" não vai ser aceito.