Jump to content
Sign in to follow this  
lesiano

Surface Fitting

Recommended Posts

lesiano

Olá,

Alguém sabe onde posso arranjar código de surface fitting em Java? O método para resolução deverão ser os mínimos quadrados.

Obg

Share this post


Link to post
Share on other sites
pedrosorio

Olá,

Como te estás a referir a mínimos quadrados presumo que queiras algo do género:

Dado um conjunto de 'n' pontos (xi,yi,zi) i=1...n e 'm' parametrizações de superfícies em do tipo z = f_j(x,y),  achar parâmetros c_j, j=1...m, que minimizem Sum(i=1...n, (zi - c_1 * f_1(xi,yi) - c_2 * f_2(xi,yi) - ... c_m * f_m(xi,yi)) ^ 2) -> Isto corresponde a dizer que podes aproximar a superficíe pela soma de funções de base f_j, e queres achar a superfície que minimiza a soma dos quadrados das distâncias na vertical a cada ponto.

Se queres fazer isto só tens que implementar o algoritmo de mínimos quadrados lineares (http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)) que se resume a multiplicar e inverter matrizes se não te preocupares muito com a estabilidade numérica do problema - no artigo da wiki os elementos da matrix X são xij = f_j(xi,yi), e os elementos do vector y são os zi, obviamente os betas são os parâmetros c.

Neste caso tens que saber quais são as tuas funções de base f_j, e estar consciente de que só consegues encontrar superfícies que tenham no máximo um ponto para cada (x,y) - i.e. nada de superfícies esféricas, etc. Se não for esse o objectivo tens que considerar parametrizações mais complicadas e provavelmente usar mínimos quadrados não lineares, mas como não descreveste o problema, assumi o caso mais simples.

Em relação a "onde arranjar código", se não definires melhor o problema é difícil responder.

Cumprimentos


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
lesiano

Olá,

Os mínimos quadrados eu conheço bem, mas não sei como se faz esta implementação (de surface fitting).

O problema é universal: ajuste de três conjuntos de pontos (x,y,z) a uma supercífice, definida por uma função z = f(x,y).

Share this post


Link to post
Share on other sites
pedrosorio

Olá,

Os mínimos quadrados eu conheço bem, mas não sei como se faz esta implementação (de surface fitting).

O problema é universal: ajuste de três conjuntos de pontos (x,y,z) a uma supercífice, definida por uma função z = f(x,y).

Se o problema é de facto esse, então a descrição que eu fiz é uma forma de resolver o problema. O problema de que estás a falar pode ser do tipo que eu descrevi  - tens um conjunto de funções de base e queres achar os coeficientes que multiplicam cada uma para obter a tua função f final.

Ou então tens o caso mais geral em que sabes que a superfície é dada por uma função de um determinado  tipo e queres achar os parâmetros dessa função, estilo f(x,y) = cos(ax)+sin(by), e tens que estimar 'a' e 'b', mas aqui a tua função não depende linearmente dos parâmetros e como tal terias que usar mínimos quadrados não lineares.

Se for do tipo que eu descrevi, mas não sabes que funções de base deves utilizar, podes experimentar os polinómios em (x,y) até um dado grau (tal como um fit polinomial para curvas em 2D). Se decidisses usar coeficientes até ao 2º grau as tuas funções de base seriam:

f_1(x,y) = 1;

f_2(x,y) = x;

f_3(x,y) = y;

f_4(x,y) = x^2;

f_5(x,y) = y^2;

f_6(x,y) = x*y;

E queres estimar os coeficientes 'c_j', para obter a tua superfície z=f(x,y) = Sum(j=1...6, c_j * f_j(x,y)).

Já expliquei no post acima, a correspondência entre o que está escrito na página da wikipedia e a minha notação, portanto só tens que definir as tuas funções de base, construir a matriz X e o vector y, e tal como descrito na wiki ficas com os parâmetros dados por c = (X' X)^-1 X' y


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.