如何提取系数多项式
我想对下面这个多项式的系数进行提取,变成一个行向量,如下:y=4*x^5+3*x^4-2*x^2-6;
并且按照从低次幂到高次的顺序进行排列!!如何做?
谢谢 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)变成升幂排列。 提取多项式中指定变量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 编辑 ] 原帖由 hoyuxi411 于 2008-6-18 09:23 发表 http://www.chinavib.com/forum/images/common/back.gif
...poly_degree()来获得f中指定变量var的最高次幂...
poly_degree() ??
where ? How?
回复 板凳 hoyuxi411 的帖子
您好,非常感谢您的这个帖子!我想问一下:poly_degree()是不是还得写个程序呢?这个怎么写呢?
最后得出来的是两个数组阿,能不能把他们写在一起呢,因为得出来的结果还要参加其它的运算阿!
比如要让他的系数等于某些值,然后算出来X或y
我是个初学者,有好多地方不懂,希望您能指教!
回复 5楼 286654367 的帖子
poly_degree应该是自编的, 搜过并无此函数, 印象中matlab也很少如此命名! 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 编辑 ] 好贴啊啊啊
貌似上面的程序不能用啊 本帖最后由 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]