t**********r 发帖数: 256 | 1 给定一个多项式f(x1,x2,x3,...),包含有很多带括号的加,减,乘,平方,
立方,等等。
需要把它全部展开,然后合并化简。这个多项式很大,写成文本文件有20M。
mathematica的Expand一运行就死机。
现在我能想到的办法是
(1)
先求导数f(0),f'(0)...,
然后用f(x)=f(0)+f'(0)x+f''(0)x x x+... 来算。但是还是相当的慢。
(2)
计算足够多的数值,例如f(1),f(2),f(3),....,
然后用插值函数得到多项式。
这两种方法至少不会死机,但是还是相当慢。
请问有人知道更好的办法么?
如果精确解不行,得到化简的近似值也可以。 | l*****e 发帖数: 238 | 2 u mean factorization?
it's impossible to give a general method if deg f is greater than or equal to
5
【在 t**********r 的大作中提到】 : 给定一个多项式f(x1,x2,x3,...),包含有很多带括号的加,减,乘,平方, : 立方,等等。 : 需要把它全部展开,然后合并化简。这个多项式很大,写成文本文件有20M。 : mathematica的Expand一运行就死机。 : 现在我能想到的办法是 : (1) : 先求导数f(0),f'(0)..., : 然后用f(x)=f(0)+f'(0)x+f''(0)x x x+... 来算。但是还是相当的慢。 : (2) : 计算足够多的数值,例如f(1),f(2),f(3),....,
| t**********r 发帖数: 256 | 3 例如Newton插值,得到
x0+a1 (x-x0)(x-x1)+a2(x-x0)(x-x1)(x-x2)+...
这个的展开可以快速算出来,1次项,2次项,..系数都可以直接求。
不用硬展开一步一步的算。所以比较快。
实际上,对于多项是p(x),只要知道了具体的形式是任何一种"normal form"
,都好算。 | s***t 发帖数: 113 | 4 well, what next then? It is not univariate expression.
【在 t**********r 的大作中提到】 : 例如Newton插值,得到 : x0+a1 (x-x0)(x-x1)+a2(x-x0)(x-x1)(x-x2)+... : 这个的展开可以快速算出来,1次项,2次项,..系数都可以直接求。 : 不用硬展开一步一步的算。所以比较快。 : 实际上,对于多项是p(x),只要知道了具体的形式是任何一种"normal form" : ,都好算。
| x****e 发帖数: 19 | 5 我不太清楚mathematica..不过用它的
Simplify可以么???
【在 t**********r 的大作中提到】 : 给定一个多项式f(x1,x2,x3,...),包含有很多带括号的加,减,乘,平方, : 立方,等等。 : 需要把它全部展开,然后合并化简。这个多项式很大,写成文本文件有20M。 : mathematica的Expand一运行就死机。 : 现在我能想到的办法是 : (1) : 先求导数f(0),f'(0)..., : 然后用f(x)=f(0)+f'(0)x+f''(0)x x x+... 来算。但是还是相当的慢。 : (2) : 计算足够多的数值,例如f(1),f(2),f(3),....,
| t*s 发帖数: 1504 | 6 let me tell you an easy way
if it's polynomial, you first scan it, determine what's the biggest degree,
which wouldn't be too difficult, assume it's N
then interpolate it using N+1 values, the result is just that one
【在 t**********r 的大作中提到】 : 给定一个多项式f(x1,x2,x3,...),包含有很多带括号的加,减,乘,平方, : 立方,等等。 : 需要把它全部展开,然后合并化简。这个多项式很大,写成文本文件有20M。 : mathematica的Expand一运行就死机。 : 现在我能想到的办法是 : (1) : 先求导数f(0),f'(0)..., : 然后用f(x)=f(0)+f'(0)x+f''(0)x x x+... 来算。但是还是相当的慢。 : (2) : 计算足够多的数值,例如f(1),f(2),f(3),....,
| s***t 发帖数: 113 | 7 the problem is that his problem has multiple variables, therefore, finding
the term with max degree is not straightforward.
【在 t*s 的大作中提到】 : let me tell you an easy way : if it's polynomial, you first scan it, determine what's the biggest degree, : which wouldn't be too difficult, assume it's N : then interpolate it using N+1 values, the result is just that one
| l*****e 发帖数: 238 | 8 u mean factorization?
it's impossible to give a general method if deg f is greater than or equal to
5
【在 t**********r 的大作中提到】 : 例如Newton插值,得到 : x0+a1 (x-x0)(x-x1)+a2(x-x0)(x-x1)(x-x2)+... : 这个的展开可以快速算出来,1次项,2次项,..系数都可以直接求。 : 不用硬展开一步一步的算。所以比较快。 : 实际上,对于多项是p(x),只要知道了具体的形式是任何一种"normal form" : ,都好算。
| t**********r 发帖数: 256 | 9 例如Newton插值,得到
x0+a1 (x-x0)(x-x1)+a2(x-x0)(x-x1)(x-x2)+...
这个的展开可以快速算出来,1次项,2次项,..系数都可以直接求。
不用硬展开一步一步的算。所以比较快。
实际上,对于多项是p(x),只要知道了具体的形式是任何一种"normal form"
,都好算。
【在 s***t 的大作中提到】 : well, what next then? It is not univariate expression.
| t**********r 发帖数: 256 | 10 这个就是我说的第二个方法阿,还是挺慢的。
"
(2)
计算足够多的数值,例如f(1),f(2),f(3),....,
然后用插值函数得到多项式。
"
【在 t*s 的大作中提到】 : let me tell you an easy way : if it's polynomial, you first scan it, determine what's the biggest degree, : which wouldn't be too difficult, assume it's N : then interpolate it using N+1 values, the result is just that one
| | | t**********r 发帖数: 256 | 11 最高次可以算,把x1->a,x2->a,...带入化简,看a的次数就可以了。
这个挺快。然后得到最高次n之后,monmials有几种项是一个排列组合数。
【在 s***t 的大作中提到】 : the problem is that his problem has multiple variables, therefore, finding : the term with max degree is not straightforward.
| s***t 发帖数: 113 | 12 well, what next then? It is not univariate expression.
【在 t**********r 的大作中提到】 : 最高次可以算,把x1->a,x2->a,...带入化简,看a的次数就可以了。 : 这个挺快。然后得到最高次n之后,monmials有几种项是一个排列组合数。
| g******a 发帖数: 69 | 13 The highest order terms may cancel each others.
【在 t**********r 的大作中提到】 : 最高次可以算,把x1->a,x2->a,...带入化简,看a的次数就可以了。 : 这个挺快。然后得到最高次n之后,monmials有几种项是一个排列组合数。
| t**********r 发帖数: 256 | 14 Simplify调用Expand。
【在 x****e 的大作中提到】 : 我不太清楚mathematica..不过用它的 : Simplify可以么???
| t**********r 发帖数: 256 | 15 例如Newton插值,得到
x0+a1 (x-x0)(x-x1)+a2(x-x0)(x-x1)(x-x2)+...
这个的展开可以快速算出来,1次项,2次项,..系数都可以直接求。
不用硬展开一步一步的算。所以比较快。
实际上,对于多项是p(x),只要知道了具体的形式是任何一种"normal form"
,都好算。
【在 s***t 的大作中提到】 : well, what next then? It is not univariate expression.
| a******e 发帖数: 197 | 16 这根最小多项式没关系吧,我只是想展开合并同类项而已。 |
|