Página Inicial do Fórum > Java Básico

Duvidas em perceber uns métodos!



Criar novo tópico   Responder tópico


  1. Martinha
    Posts:3


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Olá a todos !! eu estou a ter algumas dificuldades em entender uma pequena aplicação (que segue em anexo) que tem como objectivo resolver sistemas de equações.
    Ainda estou no inicio do estudo de vectores e matrizes e encontrei na net este exemplo que acho ser um bom exemplo de aplicação até porque daqui a algum tempo é certo que vou ter de fazer um trabalho que tem muito haver com estes sistemas!

    as minhas dúvidas são:
    trantado-se de sist. eqs lineares as matrizes tem de ser quadradas, linhas=colunas certo? então porque é que fica a matriz como sendo:
    double matriz[][]= new double[n][n+1];
    poruqe é que somamos "1" a posição das colunas?

    Depois não percebo bem o que faz o método "calc", a inclusão de funções "math.abs" ?? e aquelas igualdades no final do método envolvendo auxiliar[] também não consigo perceber!!

    enfim, agradecia que alguma alma caridosa me pudesse explicar este código

    Muito obrigado a todos !!




  1. simu
    Posts:9416


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Oi,
    a solucao de sistemas lineares nao é o meu forte... faz anos que nao fiz nada nesse sentido, mas talvez de para ajudar:

    1) [n][n+1] acho que um metodo de solucao implica em adicionar a coluna com as constantes (lado direito do =) ao final da matriz quadrada e dai simplificar essa matriz:
    Exemplo:
    ax + by = c
    dx + ey = f
    resulta em
    [[a b c]
    [d e f]]
    só que no programma que voce passou isso NAO é usado... se quiser pode eliminar a coluna adicional que ele continua funcionando

    2) o Math.abs é usado para determinar o maior valor absoluto de cada linha ou coluna, sem considerar o sinal

    3) o vetor auxiliar é usado para "trocar" a poiscao de duas linhas sem ter que modificar asmatrizes. basicamente é um mapeamento do indice da linha. Exemplo com n = 3:
    inicio: auxiliar = [0 1 2]
    ao trocar a linha 0 com a linha 1: [1 0 2]

    espero que isso ajude...

    []]]
    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.




  1. ragonzato
    Posts:144


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Para resolver sistemas lineares tente implementar o metodo de gauss-seidel, é um dos mais eficazes, ou se preferir gauss-jacobi, ou mesmo eliminação de gauss, tenho a implementação destes metodos, se quiser elas. so entrar em contado.
    De uma olhada nesse link.
    flw
    _________________
    Rodrigo Antonio Gonzato




  1. ragonzato
    Posts:144


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    nao tinha lido direito seus post.
    para que um sistemas de equaçoes lineares tenha solução o numero de equaçoes tem q ser >= ao numero de variaves. o motivo pelo qual se soma 1 a segunda matriz é que sera inserida nela tb o vetor solução, ou seja os valores q aparecem apos as variaveis.
    qlq duvida so entrar em contato, espero ter ajudado.
    t+ e boa sorte.
    _________________
    Rodrigo Antonio Gonzato




  1. Martinha
    Posts:3


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Olá, muito obrigado simu e ragonzato!
    simu em relação ao que disseste da matriz poder ser [n][n], testei e dá bem de facto não é necessário a inclusão da coluna extra! pelo o que percebi pode ser assim porque os termos independentes ( os valores de x) estão definidos num outro vector (x[]) , penso que é isso!

    o que eu queria saber acerca do "math.abs" é se na parte do código onde se encontra esta função ele faz ai a transformação em matriz triangular superior ? (ou seja a eliminação a "zeros" abaixo da diagonal principal).

    o que eu consegui perceber até agora é que o método calc() faz operações e trocas somente na matriz "a" com ajuda do auxiliar[] , mas depois o codigo que se segue no método resolver() :

    é que ainda não consegui perceber bem! ..o porquê de ser x[n-1] e estarmos a trabalhar com o auxiliar (dado que eu tinha partido do principio qu esta matriz (auxiliar) fosse só utilizada no método calc().

    ragonzato agradeço a tua disponibilidade para me dares a conhecer outros exemplos se poderes enviar-me por mail para dar uma olhadela
    marta-fontes1981@hotmail.com

    Mais uma vez obrigado a todos pela a ajuda !!




  1. simu
    Posts:9416


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    bom, acho que o algoritmo esta um pouco baguncado, ou melhor, um tanto otimizado, pois realmente nao chega a transformar a matriz em uma triangular superior. alguns dos passos para tanto foram pulados e sao executados fora do calc() na hora de achar o resultado... por isso tambem que o resultado é calculado a partir do x[n-1] (ultimo elemento).
    O auxiliar tambem tem que ser usado fora do calc pois tem que mudar a ordem dos elementos do b[]... se estivesse usando a coluna adicional, com os valores de b[], obteria o mesmo efeito.
    Mas, como eu ja escrevi, faz muito tempo que trabalhei (so na faculdade) com equacoes lineares...

    []]]


    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.




  1. ragonzato
    Posts:144


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Por nada, vou lhe enviar sim, eles são algoritmos para calculo de valor exato e ou apr oximado, usados geralmente em calculo numerico computacional, vou organizalos em uma classe e assim q estiver pronto lhe envio.
    se tiveres duvidas sobre seu funcionamento, so mandalas q ajudo a sanalas.

    _________________
    Rodrigo Antonio Gonzato




  1. Martinha
    Posts:3


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    obrigado ragonzato, fico a espera =)

    Só mais uma coisa em relação ao código, nestes ciclos (1)e(2) são percorridos todos os elementos da matriz certo? qual a diferença que existe entre eles, o que é que faz cada um deles ?!

    (1)
    ------


    (2)
    -------


    mais uma vez obrigado pela a ajuda!!




  1. Base
    Posts:1


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    ois ragonzato podes me enviar tb para mim a resolução de Eq. Lineares pelo metodo de Gauss-Seidel? ivofcmelo@gmail.com se poder agradesso-te bues....




  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    ragonzato
    Por nada, vou lhe enviar sim, eles são algoritmos para calculo de valor exato e ou apr oximado, usados geralmente em calculo numerico computacional, vou organizalos em uma classe e assim q estiver pronto lhe envio.
    se tiveres duvidas sobre seu funcionamento, so mandalas q ajudo a sanalas.


    Anexe aqui no fórum mesmo ou crie um tutorial para que todos possam aproveitá-lo também
    _________________
    Sugestão de Livros

    -- --




  1. ragonzato
    Posts:144


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    vou postar aki no forum, so terrei q comentar os codigo antes
    postarei o algoritmo de sassenfeld e os algoritmos para teste de convergencia.
    caso alguem necessite de algoritmos relacionados a calcurlo numerico computacional pode entrar em contato, tenho alguns.
    vou tentar montar um tutorialzinho, tentar ehheheh
    flws

    _________________
    Rodrigo Antonio Gonzato




  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> Java Básico