1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Rotina Regressão Não Linear [Ajuda]

Discussão em 'Programação' iniciada por M.cnf, 17 de Janeiro de 2008. (Respostas: 12; Visualizações: 1234)

  1. M.cnf

    M.cnf Power Member

    Boas.

    Estou a meio de um projecto, que engloba SQL, Assembly e C++ e como tal tem alguma dimensão.

    Devido ás datas de entrega apertadas, foi-me possibilitado o uso de algumas rotinas dísponiveis na web para certos métodos intermédios.

    Como já procurei durante imenso tempo, venho aqui pedir a possível ajuda de algum de vocemecezes...

    O que eu necessito é, mais específicamente:

    - Rotina em C++ (ou apenas o seu algoritmo, que eu trataria de codificar) que me possibilite fazer uma regressão não linear de uma função, partindo de um conjunto de valores (x e y).

    Regressão não linear (para uma função quadrática), normalmente é resolvida pelo método dos mínimos quadrados (ordinary least squares) mas por muito que procure não consigo encontrar nada nem se quer parecido e quando encontro é com custos.

    Atenção que eu não quero que ninguém faça a rotina por mim, até porque os requesitos do projecto não é que EU a implemente. Apenas gostava que se alguém tivesse alguma coisa sobre o assunto me pudesse disponibilizar.

    Cumps
     
  2. AragTey

    AragTey Power Member

  3. M.cnf

    M.cnf Power Member

    Obrigado mas não é bem isso que eu pretendo.

    Isso é a aplicação dos "ordinary least squares" a uma função linear do tipo y=mx+b, em que m é o sloap (declive) e b é o intercept (ordenada na origem). Por curiosidade também já apliquei nisso noutro método de uma classe de C++ deste projecto.

    Mes o que eu necessitava era mesmo esse método para regressões não lineares.

    Cumps
     
  4. AragTey

    AragTey Power Member

    Lol...ok isto de matemática tá enferrujado...sorry. Se encontrares o algoritmo matemático, pode ser que te consiga ajudar :D
     
  5. Serrot

    Serrot Power Member

  6. M.cnf

    M.cnf Power Member

    Já tinha andado à volta desse método mas não nessa página, assim com uma leitura na diagonal parece-me interessante, amanha com mais tempo vou aprofundar.

    Thanks in advance.
     
  7. Serrot

    Serrot Power Member

  8. fulgas

    fulgas Power Member

    Eu implementei esse método em C faz uns anitos na faculdade.

    Devo ter os apontamentos da cadeira mas o código já seria mais díficil de encontrar. De qualquer maneira, se bem me recordo, não foi nada de especial implementá-lo.

    sup
     
  9. M.cnf

    M.cnf Power Member

    Problema resolvido.

    Obrigado a todas as ajudas...

    Cumps
     
  10. Margrad

    Margrad Power Member

    Podes meter como fizeste a resolução?
    Não é preciso códico, mas eu gostava de saber qual o algoritmo.

    Obrigado.
     
  11. M.cnf

    M.cnf Power Member

    Ora bem:

    2 arrays x[nr] y[nr] *nr - numero elementos

    Calculo dos somatórios:

    x , x^2 , x^3 , x^4 ||||| y , xy , (x^2)y

    Inserir numa matriz[3][3]:

    [​IMG]

    Inverter a matriz[3][3];

    Multiplicar pelo array[3] = {y,xy,(x^2)y}

    E obtens as incógnitas pretendidas.

    Basicamente é isso...

    Cumps

    Off-topic: RedBull Air Race?
     
  12. Serrot

    Serrot Power Member

    Qd se fala de regressão linear ou não linear está-se normalmente a falar de linear ou não linear nos parâmetros (e não nas variáveis).

    Y=a0 + a1 X + a2 X^2 continua a ser uma regressão linear (é linear nos parâmetros (a0, a1 e a2)) e daí que a solução seja aquela q apresentas no ultimo post.

    Um exemplo de regressão não linear é por exemplo Y=a0 + a0*a1 * X ou
    y = b0 + b1*exp(b2*x)

    Ou seja, se tens explicado melhor o que pretendias, ou se calhar fui eu q não percebi bem, tinha-te logo dado a solução :winknu:
     
  13. M.cnf

    M.cnf Power Member

    Pois, não tem mal.

    O que interessa é que já tá resolvido! :002:
     

Partilhar esta Página