Pergunta

Usando matemática matriz variada, eu resolvi um sistema de equações, resultando em coeficientes de um polinômio de grau 'n'

Ax^(n-1) + Bx^(n-2) + ... + Z

Eu, então, evaulate o polinômio durante um determinado x variam, basicamente eu estou tornando a curva polinomial. Agora aqui está o problema. Eu tenho feito este trabalho em um sistema de coordenadas que chamaremos de "espaço de dados". Agora eu preciso apresentar a mesma curva em outro espaço de coordenadas. É fácil transformar de entrada / saída de e para espaços de coordenadas, mas o usuário final está interessado apenas nos coeficientes [A, B, ...., Z], uma vez que pode reconstruir o polinômio por conta própria. Como se pode apresentar um segundo conjunto de coeficientes de [A 'B', ...., Z '] que representam a mesma curva em forma de um sistema de coordenadas diferente.

Se ajudar, eu estou trabalhando em 2D espaço. Plain velho y de x e. Eu também sinto que isso pode envolver multiplicando os coeficientes de uma matriz de transformação? Será que algum incorporar o fator de escala / tradução entre os sistemas de coordenadas? Seria o inverso dessa matriz? Eu sinto que estou indo na direção certa ...

Update: sistemas de coordenadas são linearmente relacionadas. Teria sido útil informações eh?

Foi útil?

Solução

A declaração do problema é um pouco incerto, então primeiro vou esclarecer a minha própria interpretação:

Você tem uma função polinomial

f (x) = C n x n + C n-1 x n-1 + ... + C 0

[I mudou A, B, ... Z em C n , C n-1 , ..., C 0 para mais facilmente trabalhar com álgebra linear abaixo.]

Em seguida, você também tem uma transformação, tais como: z = ax + b que você deseja usar para encontrar os coeficientes para o mesma polinomial, mas em termos de z :

f (z) = D n z n + D n-1 z n-1 + ... + D 0

Isto pode ser feito muito facilmente com um pouco de álgebra linear. Em particular, você pode definir um (n + 1) x (n + 1) matriz T que nos permite fazer a matriz de multiplicação

d = T * c ,

onde d é um vector de coluna com entrada de topo D 0 , a última entrada D n , vector de coluna c é semelhante para o C i coeficientes, e matriz T tem ( i, j) -ésimo [i th fileira, j th coluna] entrada t ij dada por

t ij = ( j escolher i ) a i b ji .

Onde ( j escolha i ) é o coeficiente binomial, e = 0 quando i > j . Além disso, ao contrário de matrizes padrão, eu estou pensando que i, j cada intervalo de 0 a n (normalmente você começa a 1).

Esta é basicamente uma boa maneira de escrever a expansão e re-compressão do polinômio quando você conecta z = ax + b com a mão e usar o binomial teorema .

Outras dicas

A resposta de Tyler é a resposta certa se você tem que calcular essa mudança de variável z = ax + b muitas vezes (quero dizer para muitos polinômios diferentes). Por outro lado, se você tem que fazer isso apenas uma vez, é muito mais rápido para combinar o cálculo dos coeficientes da matriz com a avaliação final. A melhor maneira de fazer isso é avaliar simbolicamente seu polinomial no ponto (ax + b) pelo método de Horner:

  • armazenar os coeficientes polinomiais em um vector V (no início, todos os coeficientes são zero), e para i = N a 0, multiplica-o por (ax + b) e adicionar C i .
  • adicionando C i meios adicionando-o ao termo constante
  • multiplicando por (Ax + B) meios multiplicadores todos os coeficientes de b em um K vector 1 , multiplicando todos os coeficientes de um e deslocando-os para longe do termo constante num vector K 2 , e colocando K 1 + K 2 volta para V.

Este será mais fácil de programar, e mais rápido para computação.

Note que a mudança y em w = cy + d é realmente fácil. Finalmente, como aponta mattiast, uma mudança geral de coordenadas não vai dar-lhe um polinômio.

Nota técnica : se você ainda quer computação matriz T (como definido por Tyler), você deve calcular-lo usando uma versão ponderada do governo de Pascal (isso é o que a computação Hörner faz implicitamente) :

t i, j = b t i, j-1 + um t i-1, j-1

Desta forma, você calcular-lo simplesmente, coluna após coluna, da esquerda para a direita.

Se entendi sua pergunta corretamente, não há garantia de que a função permanecerá polinomial depois de alterar as coordenadas. Por exemplo, deixar que y = x ^ 2, e o novo sistema x '= y, y' = coordenadas x. Agora, a equação torna-se y '= sqrt (x'), que não é polinomial.

Você tem a equação:

y = Ax^(n-1) + Bx^(n-2) + ... + Z

No espaço xy, e quer que ele em algum espaço x'y'. O que é necessário é funções de transformação de f (x) = x 'e G (y) = y' (ou h (x ') = x e j (y') = y). No primeiro caso, você precisa resolver para x e resolver para y. Depois de ter x e y, pode substituído esses resultados em sua equação original e resolver para y'.

Se este é ou não trivial depende da complexidade das funções utilizadas para transformar a partir de um espaço para outro. Por exemplo, equações, tais como:

5x = x' and 10y = y'

são extremamente fáceis de resolver para o resultado

y' = 2Ax'^(n-1) + 2Bx'^(n-2) + ... + 10Z

Se os espaços de entrada são linearmente relacionadas, então sim, uma matriz deve ser capaz de transformar um conjunto de coeficientes para outro. Por exemplo, se você teve seu polinômio em seu x-space "original":

ax ^ 3 + bx ^ 2 + cx + d

e você queria transformar em um diferente w-espaço onde w = px + q

então você quer encontrar a 'b', c 'e d' tal que

ax ^ 3 + bx ^ 2 + cx + d = a'w ^ 3 + b'w ^ 2 + c'w + d '

e com alguma álgebra,

+ 3 ^ a'w b'w ^ 2 + + c'w d'= a'p ^ 3x ^ 3 + 3a'p ^ 2qx ^ 2 + + 3a'pq ^ 2x + 3 a'q ^ b'p ^ 2x ^ 2 + 2b'pqx + b'q ^ 2 + c'px + c'q + d '

portanto

a = a'p ^ 3

b = + 3a'p ^ 2q b'p ^ 2

c = 3a'pq ^ 2 + 2b'pq + c'p

d = a'q ^ 3 + b'q ^ 2 + c'q + d '

que pode ser reescrito como um problema de matriz e resolvido.

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