MATLAB - 多项式加法
MATLAB - 现代多项式加法
Section titled “MATLAB - 现代多项式加法”在数学中,多项式(polynomial)是变量和系数的表达式,只涉及加法、减法、乘法和非负整数指数。它们是许多科学和工程领域的基础,从数据曲线拟合到数字滤波器设计都有应用。
MATLAB 提供了几种表示和操作多项式的方法。传统方法使用简单的行向量来存储系数,这种方法内存高效,非常适合数值计算。
MATLAB 中的多项式表示
Section titled “MATLAB 中的多项式表示”在 MATLAB 中,多项式通过一个行向量表示,该向量包含其系数并按降幂(descending order of power)排列。对于一个 N 次多项式,该向量将有 N+1 个元素。
例如,多项式:
p(x) = 4x⁵ + 5x² - 2x + 7这是一个 5 次多项式。为了表示它,我们必须包含从 5 次方到 0 次方(常数项)的所有系数。缺失的 x⁴ 和 x³ 项的系数为零。
% 系数分别对应 x⁵, x⁴, x³, x², x¹, x⁰poly_p = [4 0 0 5 -2 7];4:x⁵的系数0:x⁴的系数0:x³的系数5:x²的系数-2:x¹(或x)的系数7:x⁰(常数项)的系数
这种标准化表示对于 MATLAB 的多项式函数正确运行至关重要。
多项式加法:稳健方法
Section titled “多项式加法:稳健方法”您可以通过添加多项式对应的系数向量来添加两个多项式。然而,当多项式具有不同次数时,会产生一个常见挑战,导致向量长度不同。在这种情况下,+ 运算符将会失败。
**最佳实践:**要添加不同次数的多项式,您必须首先用前导零填充较短的向量,以使两个向量具有相同的长度。这会使同次项的系数对齐。
示例:添加不同次数的多项式
Section titled “示例:添加不同次数的多项式”让我们将 P1(x) = 4x⁴ - 3x² + 2 和 P2(x) = 5x³ - 2x² + 1 相加。
%% 定义两个多项式的系数向量p1 = [4, 0, -3, 0, 2]; % 表示 4x⁴ - 3x² + 2(4 次)p2 = [5, -2, 0, 1]; % 表示 5x³ - 2x² + 1 (3 次)
%% -- 这将导致错误! --% sum_poly_error = p1 + p2; % 错误:矩阵维度必须一致。
%% 正确方法:填充较短的向量
% 确定每个多项式向量的长度len1 = length(p1);len2 = length(p2);
% 用前导零填充较短的向量if len1 < len2 p1 = [zeros(1, len2 - len1), p1];elseif len2 < len1 p2 = [zeros(1, len1 - len2), p2];end
% 现在向量长度相同,可以相加了sum_poly = p1 + p2;
%% 显示结果disp('填充后的 P1 系数:');disp(p1);
disp('填充后的 P2 系数:');disp(p2);
disp('结果多项式系数:');disp(sum_poly);
% 结果 [4 5 -5 0 3] 表示 4x⁴ + 5x³ - 5x² + 3现代方法:符号数学工具箱
Section titled “现代方法:符号数学工具箱”对于更复杂或分析性的多项式操作,符号数学工具箱(Symbolic Math Toolbox)提供了一种更直观、更强大的方法。它使用符号变量(symbolic variables),因此您无需手动管理系数向量。
% 这需要符号数学工具箱try %% 定义符号变量 syms x;
%% 使用符号变量定义多项式 sym_p1 = 4*x^4 - 3*x^2 + 2; sym_p2 = 5*x^3 - 2*x^2 + 1;
%% 加法简单直观 sym_sum = sym_p1 + sym_p2;
%% 以可读格式显示结果 fprintf('符号结果: %s\n', string(sym_sum));
%% 如果需要,可以轻松获取系数 sum_coeffs_from_sym = coeffs(sym_sum, 'All'); disp('来自符号结果的系数:'); disp(double(sum_coeffs_from_sym));catch ME if strcmp(ME.identifier, 'MATLAB:UndefinedFunction') disp('符号数学工具箱未安装。跳过此示例。'); else rethrow(ME); endend实际应用与下一步
Section titled “实际应用与下一步”多项式加法是基础构建块。例如,在控制系统(control systems)中,传递函数(transfer functions)通常会组合在一起,这涉及到添加它们的分子或分母多项式。
进一步学习:
conv函数:用于多项式乘法。deconv函数:用于多项式除法。polyval函数:用于在特定值处评估多项式。polyfit函数:用于拟合数据(曲线拟合)的多项式。