jgchen1973 发表于 2008-6-17 15:18

如何提取系数多项式

我想对下面这个多项式的系数进行提取,变成一个行向量,如下:
y=4*x^5+3*x^4-2*x^2-6;
并且按照从低次幂到高次的顺序进行排列!!如何做?
谢谢

friendchj 发表于 2008-6-17 16:00

c = sym2poly(s)
returns a row vector containing the numeric coefficients of a symbolic polynomial. The coefficients are ordered in descending powers of the polynomial's independent variable. In other words, the vector's first entry contains the coefficient of the polynomial's highest term; the second entry, the coefficient of the second highest term; and so on.
结果是按降幂排列的,经过c=c(length(c):-1:1)变成升幂排列。

hoyuxi411 发表于 2008-6-18 09:23

提取多项式中指定变量var的系数 wzqcongcong 发表于: 2008-4-15 16:49 来源: Matlab中文学习站
费了好大劲,终于把它搞定了,该函数同样可以处理多变量的多项式,可以提取其中某个特定变量的系数,超好用:

CODE:
function coef=poly_coef(f,var)
%提取多项式f中指定变量var的系数,将结果赋给数组coef
%f可以是含多变量的多项式
%var是多项式中指定的变量,可选,默认是x
%要用到函数poly_degree()来获得f中指定变量var的最高次幂
if nargin==1, var=sym('x'); end
degree=poly_degree(f,var); temp_f=f;
coef(degree+1)=subs(temp_f,var,0);
for n=1:degree
    temp_f=simple((temp_f-coef(degree+2-n))/var);
    coef(degree+1-n)=subs(temp_f,var,0);
end

举几个例子:
>> syms x y; f1=x^4+2*x+1; f2=y^6+5*y^3+3;
>> f3=x^5+2*x^3*y^4+x*y^2+4;
>> poly_coef(f1)
ans =
                              
>> poly_coef(f1,y)
ans =
                              [ 4          ]
                              
>> poly_coef(f2)
ans =
                              [ 6      3    ]
                              
>> poly_coef(f2,y)
ans =
                           
>> poly_coef(f3)
ans =
                            [         4      2   ]
                           
>> poly_coef(f3,y)
ans =
                            [   3            5    ]
                           

[ 本帖最后由 ChaChing 于 2009-4-2 10:50 编辑 ]

ChaChing 发表于 2009-1-3 23:26

原帖由 hoyuxi411 于 2008-6-18 09:23 发表 http://www.chinavib.com/forum/images/common/back.gif
...poly_degree()来获得f中指定变量var的最高次幂...
poly_degree() ??
where ? How?

286654367 发表于 2009-4-2 09:28

回复 板凳 hoyuxi411 的帖子

您好,非常感谢您的这个帖子!
我想问一下:poly_degree()是不是还得写个程序呢?这个怎么写呢?
最后得出来的是两个数组阿,能不能把他们写在一起呢,因为得出来的结果还要参加其它的运算阿!
比如要让他的系数等于某些值,然后算出来X或y
我是个初学者,有好多地方不懂,希望您能指教!

ChaChing 发表于 2009-4-2 10:58

回复 5楼 286654367 的帖子

poly_degree应该是自编的, 搜过并无此函数, 印象中matlab也很少如此命名!

咕噜噜 发表于 2009-6-6 08:20

syms z1 z2;
s = collect(s,z1);
n = double (maple('degree',s,z1));
for i = n :-1 : 0
    p(i+1) = maple('',s,z1,(n-i));
end
p 中所存的即为各个系数

syms x y;
s =collect(x^5+2*x^3*y^4+x*y^2+4,x);
n =double (maple('degree',s,x));
for i = n :-1 : 0
    p(i+1) = maple('',s,x,(n-i));
end

结果p =

[   1,   0, 2*y^4,   0,   y^2,   4]

[ 本帖最后由 咕噜噜 于 2009-6-6 08:21 编辑 ]

quanwang2003 发表于 2010-8-17 20:24

好贴啊啊啊

貌似上面的程序不能用啊

zhouyang664 发表于 2010-8-22 20:25

本帖最后由 ChaChing 于 2010-8-23 00:12 编辑

首先声明,内容完全来自网络!
function degree=poly_degree(f,var)
%返回多项式f中指定变量var的最高次幂,将结果赋给degree
%f可以是含多变量的多项式
%var是多项式f中指定变量,可选,默认为x
if nargin==1
var=sym('x');
end
temp=f;
n=0;
while 1
if diff(temp,var)==0
break
end
n=n+1;
temp=diff(temp,var);
end
degree=n;
页: [1]
查看完整版本: 如何提取系数多项式