如何将多项式转换为另一个坐标系?

时间:2008-09-26 19:27:53

标签: algorithm language-agnostic math geometry transform

使用各种矩阵数学,我已经求解了一个方程组,得到了'n'多项式的系数

Ax^(n-1) + Bx^(n-2) + ... + Z
然后我在给定的x范围内调整多项式,基本上我正在渲染多项式曲线。现在这里抓住了。我已经在一个我们称之为“数据空间”的坐标系中完成了这项工作。现在我需要在另一个坐标空间中显示相同的曲线。很容易将输入/输出转换为坐标空间和从坐标空间转换输入/输出,但最终用户只对系数[A,B,....,Z]感兴趣,因为它们可以自己重建多项式。如何呈现第二组系数[A',B',......,Z'],它们代表不同坐标系中相同的形状曲线。

如果有帮助,我正在2D空间工作。简单的旧x和y。我也觉得这可能涉及将系数乘以变换矩阵?它是否会包含坐标系之间的比例/平移因子?它会与此矩阵相反吗?我觉得自己正朝着正确的方向前进......

更新:坐标系与线性相关。本来有用的信息呃?

5 个答案:

答案 0 :(得分:4)

问题陈述有点不清楚,所以首先我要阐明自己对它的解释:

你有一个多项式函数

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

[我将A,B,... Z改为C n ,C n-1 ,...,C 0 更容易使用下面的线性代数。]

然后你还有一个转换,例如: z = ax + b ,你想用它来找到相同多项式的系数,但就ž:

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

这可以通过一些线性代数很容易地完成。特别是,您可以定义一个(n + 1)×(n + 1)矩阵 T ,它允许我们进行矩阵乘法

d = T * c

其中 d 是一个列向量,顶部条目 D 0 ,最后一个条目 D n ,列向量 c 类似于 C i 系数,矩阵 T 具有( i,j)-th [i th row,j th 列]条目 t ij

t ij =( j 选择 i a i b ji

其中( j 选择 i )是二项式系数,当 i >时= 0 Ĵ。另外,与标准矩阵不同,我认为i,j的范围从0到n(通常从1开始)。

当您手动插入z = ax + b并使用binomial theorem时,这基本上是写出多项式的扩展和重新压缩的好方法。

答案 1 :(得分:3)

如果你必须多次计算变量z = ax + b的变化,那么Tyler的答案是正确的答案(我的意思是许多不同的多项式)。另一方面,如果你只需要做一次,那么将矩阵系数的计算与最终评估相结合要快得多。最好的方法是通过Hörner的方法在点(ax + b)处象征性地评估多项式:

  • 将多项式系数存储在向量V中(开头,所有系数都为零),对于i = n到0,将它乘以(ax + b)并加上C i
  • 添加C i 表示将其添加到常数项
  • 乘以(ax + b)意味着将所有系数乘以b乘以向量K 1 ,将所有系数乘以a并将它们从常数项移到矢量K 2 ,并将K 1 + K 2 放回V.

这将更容易编程,并且计算速度更快。

请注意,将y更改为w = cy + d非常简单。最后,正如mattiast指出的那样,坐标的一般变化不会给你一个多项式。

技术说明:如果您仍想计算矩阵T(由Tyler定义),您应该使用Pascal规则的加权版本来计算它(这是Hörner计算所暗示的) :

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

这样,您可以从左到右简单地逐列计算它。

答案 2 :(得分:2)

如果我正确理解了您的问题,则无法保证在更改坐标后该函数将保持多项式。例如,设y = x ^ 2,新坐标系x'= y,y'= x。现在,等式变为y'= sqrt(x'),这不是多项式。

答案 3 :(得分:0)

你有等式:

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

在xy空间中,你想要它在某个x'y'空间。你需要的是变换函数f(x)= x'和g(y)= y'(或h(x')= x和j(y')= y)。在第一种情况下,您需要求解x并求解y。一旦得到x和y,就可以将这些结果替换为原始方程并求解y'。

这是否微不足道取决于用于从一个空间转换到另一个空间的函数的复杂性。例如,等式:

5x = x' and 10y = y'

非常容易解决结果

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

答案 4 :(得分:-1)

如果输入空间是线性相关的,则是,矩阵应该能够将一组系数变换为另一组。例如,如果您的多项式位于“原始”x空间中:

ax ^ 3 + bx ^ 2 + cx + d

并且您想要转换为不同的w空间,其中w = px + q

然后你想要找到',b',c'和d'这样

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

和一些代数,

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

因此

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'

可以重写为矩阵问题并解决。