MATLAB中coeffs函数为何不返回x³的0系数?
关于MATLAB coeffs函数未返回零系数的原因及解决方法
原因分析
- MATLAB的
coeffs函数默认仅提取多项式中非零的系数,会自动忽略系数为0的项。你的多项式中不存在x³项(系数为0),因此输出结果里不会包含这个0值。 - 另外需要注意,
coeffs默认返回的系数顺序是从低次项到高次项,你得到的[-6, 25, -31, 31, -25, 6]依次对应常数项、x项、x²项、x⁴项、x⁵项、x⁶项的系数,确实跳过了x³的0系数。
解决方法
如果你需要包含所有次数的系数(包括0),可以用以下两种方式:
方法1:使用sym2poly函数
sym2poly会自动返回从高次到低次的完整系数数组,包含所有零系数。示例代码:
syms x; f = 6*x^6 - 25*x^5 + 31*x^4 - 31*x^2 + 25*x - 6; cf = sym2poly(f); disp(cf); % 输出:[6, -25, 31, 0, -31, 25, -6] % 若需要从低次到高次的顺序,反转数组即可 cf_reversed = flip(cf); disp(cf_reversed); % 输出:[-6, 25, -31, 0, 31, -25, 6]
方法2:带参数调用coeffs
给coeffs添加'All', true参数,它会返回从0次到最高次的所有系数(包括0)。示例代码:
syms x; f = 6*x^6 - 25*x^5 + 31*x^4 - 31*x^2 + 25*x - 6; cf_full = coeffs(f, x, 'All', true); disp(cf_full); % 输出:[-6, 25, -31, 0, 31, -25, 6]
内容的提问来源于stack exchange,提问作者Deep Voyager
相关产品推荐
相关产品推荐

