代码之家  ›  专栏  ›  技术社区  ›  basszero

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

  •  8
  • basszero  · 技术社区  · 17 年前

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

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

    然后,我在给定的x范围内计算多项式,本质上我是在渲染多项式曲线。现在,问题来了。我在一个坐标系中完成了这项工作,我们称之为“数据空间”。现在,我需要在另一个坐标空间中呈现相同的曲线。在坐标空间之间转换输入/输出很容易,但最终用户只对系数[A,B,…,Z]感兴趣,因为它们可以自己重建多项式。我如何呈现第二组系数[a',B',…,Z'],它们表示不同坐标系中相同形状的曲线。

    如果有帮助的话,我在2D空间工作。简单的x和y。我还觉得这可能涉及将系数乘以变换矩阵?它是否会考虑坐标系之间的比例/平移因子?它会是这个矩阵的逆吗?我觉得我正朝着正确的方向前进。..

    更新:坐标系是线性相关的。这会是有用的信息吗?

    5 回复  |  直到 17 年前
        1
  •  5
  •   Tyler    17 年前

    问题陈述有点不清楚,所以首先我会澄清我自己的解释:

    你有一个多项式函数

    f(x)=C n 英语字母表的第24个字母 n C N-1型 英语字母表的第24个字母 N-1型 + .C 0

    [我把A、B、…Z改成了C n C N-1型 , .C 0 更容易使用下面的线性代数。]

    然后,您还可以进行以下转换: z=ax+b 你想用它来为 相同的 多项式,但根据 z :

    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 系数和矩阵 T 有(i,j)-第[i 行,j 列]条目 ij 由……给予的

    ij = ( j 选择 ) b j-i .

    在哪里( j 选择 )是二项式系数,当 > j 此外,与标准矩阵不同,我认为I、j的范围都在0到n之间(通常从1开始)。

    当你手动插入z=ax+b并使用 binomial theorem .

        2
  •  3
  •   Camille    17 年前

    如果我正确理解了你的问题,那么不能保证在你改变坐标后,函数仍然是多项式。例如,设y=x^2,新的坐标系x’=y,y’=x。现在方程变为y’=sqrt(x’),这不是多项式。

        3
  •  2
  •   mattiast    17 年前

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

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

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

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

    技术说明 :如果你仍然想计算矩阵T(如Tyler所定义),你应该使用Pascal规则的加权版本来计算它(这是Hrner计算隐含的):

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

    这样,您只需从左到右逐列计算即可。

        4
  •  0
  •   Laplie Anderson    17 年前

    你有方程式:

    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
    
        5
  •  0
  •   Jamie    17 年前

    如果输入空间是线性相关的,那么是的,矩阵应该能够将一组系数转换为另一组系数。例如,如果你在“原始”x空间中有多项式:

    ax^3+bx^2+cx+d

    你想转换成一个不同的w空间,其中w=px+q

    那么你想找到a、b、c和d,这样

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

    用一些代数,

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

    因此

    a=a'p^3

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

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

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

    可以将其改写为矩阵问题并求解。

    推荐文章