Pergunta

Este é algo relacionado com a Matemática também. Mas isso é útil em computação também.

Vamos dizer que você tem 10 coordenadas. (X1, y1) (x2, y2) ..... no espaço 2D. (I.e. num plano X-Y). podemos encontrar uma única curva suave atravessando a cada coordenada.

Ao expandir a pergunta: Se o espaço é 3D, então podemos encontrar uma equação de uma superfície lisa que vai através de um dado conjunto de coordenadas espaciais?

Há algum Bibliotecas (qualquer língua) \ ferramentas para executar esses cálculos?

Foi útil?

Solução

O que você deve estar procurando é alguma biblioteca implementação NURBS (ou não uniforme Rational B-Splines). Isto irá resolver o seu problema em 2D e 3D, uma vez 2d é apenas um caso especial do 3D.

A grosso modo, você não está interessado na equação real, você está interessado apenas em obter os pontos aproximados com curvas suaves ou superfícies. Isso é feito por encontrar "pontos de controle" no espaço 2D ou 3D, que são multiplicados com as funções de base B-spline. Uma biblioteca NURBS vai fazer isso por você.

Felicidades!

Editar:

Tenha um olhar em este

Outras dicas

você sempre pode se encaixar em um polinômio de ordem-10 através dos pontos. isso não é necessariamente o que você quer fazer, embora - montagem de uma curva suave através de uma série de estrias lhe dará um resultado melhor para o futuro. curva-encaixe artigo na wikipedia lhe dá uma boa visão geral das várias opções.

No caso 2D você está pedindo para ajuste de curva. Isso realmente existe no excel, onde você traça seus pontos (eu costumo usar dispersão XY se você tem x e y listados) e, em seguida, clique com o botão direito na curva. Selecione Adicionar linha de tendência. Lá você pode escolher que tipo de função que deseja ajustar para e você pode pedir excel para exibi-lo na imagem (Tab chamado Opções, verifique a "equação de exibição no gráfico de" caixa). Bom e rápido.

Caso contrário, você pode usar Matlab e usar o lsqr (método dos mínimos quadrados). Se você quiser encontrar o polinômio mais próximos que melhor descreve seus dados você pode usar a função polyfit. Ele usa o método dos mínimos quadrados, mas retorna coeficientes. Matlab tem todo um conjunto de outros algoritmos para resolver / encontrar "melhores" aproximações de sistemas de equações lineares. Menciono lsqr porque é um dos mais simples de implementar a si mesmo se você não tem Matlab. Por outro lado, é para resolver conjuntos de equações lineares - Eu não sei nada sobre seus dados.

Tenha um olhar em estrias

Procurar 'biblioteca de interpolação spline' pode dar algumas dicas úteis para implementações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top