如何将多项式转换为另一个坐标系?
使用分类矩阵数学,我解决了一个方程式系统,得出阶次为'n'的多项式的系数
Ax^(n-1) + Bx^(n-2) + ... + Z
然后,我在给定的x范围内对多项式求值,本质上是在绘制多项式曲线。现在是要抓住的地方。我已经在一个称为"数据空间"的坐标系中完成了这项工作。现在,我需要在另一个坐标空间中呈现相同的曲线。易于在坐标空间之间来回转换输入/输出,但是最终用户仅对系数[A,B,...,Z]感兴趣,因为它们可以自行重构多项式。如何显示第二组系数[A',B',.....,Z'],它们表示不同坐标系中的相同形状的曲线。
如果有帮助,我正在2D空间中工作。普通的旧x和y。我还觉得这可能涉及将系数乘以转换矩阵吗?是否会将坐标系之间的比例/平移因子纳入其中?它是这个矩阵的逆吗?我觉得自己朝着正确的方向前进...
更新:坐标系是线性相关的。会是有用的信息吗?
解决方案
我们有以下等式:
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
如果输入空间是线性相关的,那么是的,矩阵应该能够将一组系数转换为另一组系数。例如,如果我们在"原始" x空间中具有多项式:
ax ^ 3 + bx ^ 2 + cx + d
而我们想转换成另一个w空间,其中w = px + q
那么我们想要找到a',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'
可以将其重写为矩阵问题并加以解决。
如果我正确理解了问题,则不能保证在更改坐标后该函数将保持多项式形式。例如,令y = x ^ 2,而新的坐标系x'= y,y'= x。现在,等式变为y'= sqrt(x'),这不是多项式。
问题陈述尚不清楚,因此首先我将阐明自己的解释:
你有一个多项式函数
f(x)= Cnxn + Cn-1xn-1 + ... + C0
[我将A,B,... Z更改为Cn,Cn-1,...,C0,以便更轻松地使用下面的线性代数。]
然后,我们还有一个转换,例如:z = ax + b,我们可以使用它来查找相同多项式的系数,但是要用z表示:
f(z)= Dnzn + Dn-1zn-1 + ... + D0
使用一些线性代数可以很容易地做到这一点。特别是,我们可以定义一个(n + 1)(n + 1)个矩阵T,它使我们能够进行矩阵乘法
d = T * c,
其中d是顶部入口D0到最后一个入口Dn的列向量,列向量c与Ci系数相似,矩阵T具有第(i,j)个第[i,j列]项tij
tij =(j选择i)ai bj-i。
其中(j选择i)是二项式系数,当i> j时= 0。另外,与标准矩阵不同,我认为i,j的范围从0到n(通常从1开始)。
当我们手动插入z = ax + b并使用二项式定理时,这基本上是写出多项式的展开和重新压缩的好方法。
如果我们必须多次计算变量z = ax + b的变化(对于许多不同的多项式,则是我的意思),泰勒的答案就是正确的答案。另一方面,如果我们只需要执行一次,则将矩阵系数的计算与最终评估结合起来要快得多。最好的方法是通过H?rner方法以符号方式评估点(ax + b)上的多项式:
- 我们将多项式系数存储在向量V中(在开始时,所有系数均为零),并且对于i = n到0,将其乘以(ax + b)并加上Ci。
- 添加Ci意味着将其添加到常数项
- 乘以(ax + b)意味着将所有系数乘以b乘以向量K1,将所有系数乘以a并将其从常数项移到向量K2中,然后将K1 + K2放回V.
这将更易于编程,并且计算速度更快。
请注意,将y更改为w = cy + d确实很容易。最后,正如Matatiast指出的那样,一般的坐标变化不会给我们多项式。
技术说明:如果我们仍要计算矩阵T(由Tyler定义),则应使用Pascal规则的加权版本进行计算(这是H?rner计算隐式执行的操作):
ti,j = b ti,j-1 + a ti-1,j-1
这样,我们就可以从左到右逐列地简单地进行计算。