题目
在 MATLAB / Octave 中,多项式按降幂排列的系数向量表示。给定三次多项式 $P(x) = 3x^3 - 2x^2 + 5x - 7$,编写程序,使用 <code>polyval()</code> 计算其在一组自变量点上的函数值。
输入格式:无需外部输入。
输出格式:输出多项式系数定义与在各个测试点上的计算结果。
数据范围与约定:多项式计算基础。
思路与算法
1. 降幂系数向量规则
最高次项排在最左边,常数项排在最右边。例如 $P(x) = 3x^3 - 2x^2 + 5x - 7$ 对应向量 p = [3, -2, 5, -7]。缺项必须补 0(如 $x^2 - 1$ 为 [1, 0, -1])。
2. polyval 函数y = polyval(p, x) 支持传入标量或任意多维向量,内部采用高效的 Horner 算法计算。
3. 与直接算术式对照polyval(p, x) 避免了手写多个乘方运算符带来的繁琐与漏写点乘风险。
完整程序
% Octave / MATLAB 第81题:多项式系数表示与 polyval 求值
% 3x^3 - 2x^2 + 5x - 7
p = [3, -2, 5, -7];
% 自变量采样点
x = [0, 1, 2, -1];
% 使用 polyval 计算
y = polyval(p, x);
fprintf("多项式系数向量: %s\n", mat2str(p));
fprintf("对应解析式: P(x) = 3x^3 - 2x^2 + 5x - 7\n");
for k = 1:length(x)
fprintf(" P(%2d) = %d\n", x(k), y(k));
end运行示例
输出:
多项式系数向量: [3 -2 5 -7]
对应解析式: P(x) = 3x^3 - 2x^2 + 5x - 7
P( 0) = -7
P( 1) = -1
P( 2) = 19
P(-1) = -17