Rotina Regressão Não Linear [Ajuda]

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
 
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
 
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.
 
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
 
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]:

image01.gif


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?
 
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:
 
Back
Topo