⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp1_2.m

📁 使用matlab软件编制的计算程序
💻 M
字号:
% exp1_2.m --- 多项式求值的 Horner 算法

% [简介]  matlab中用多项式的系数(按降幂顺序)组成的向量来表示多项式,
%         以 5 次多项式为例
%             y = c1*x^5 + c2*x^4 + c3*x^3 + c4*x^2 + c5*x + c6
%         用向量 
%             P = [c1,c2,...,c6] 
%         来表示,注意它是 6 维向量(可以是行向量,也可以是列向量).
% [方法]  Horner 算法(参见 P7)
%             y = c6+(c5+(c4+(c3+(c2+c1*x)*x)*x)*x)*x
%         计算量为 5 次乘法,5 次加法,比按自然顺序计算大大减少了计算量
% [调用]  y = polyval(P,x)  这里 x 是矩阵(向量,标量),y 与 x 同维数 

function try_horner_method

P = [2 1 0 4 -5 6];              % 表示多项式 P(x) = 2 x^5 + x^4 + 4 x^2 - 5 x + 6
x = [1,2,3];                     % 自变量取值

clc, disp('调用自编程序计算结果:')
y1 = mypolyval(P,x)              % 调用自编的 Horner 算法程序
                                 % 求 y1 = [P(x1),P(x2),P(x3)] 的值
disp('调用matlab命令计算结果:')
y2 = polyval(P,x)                % 调用 matlab 中多项式求值命令
                                 % 该命令也是用 Horner 算法编的
disp('二者结果完全一样!')
                      

% -------  多项式求值的 Horner 嵌套算法  -------
function y = mypolyval(P,x)
% y = mypolyval(P,x) --- 多项式求值的 Horner 嵌套算法
%     P --- 向量(表示多项式)
%     x --- 矩阵或向量或标量
%     y = P(x)(维数同x) 
np = length(P);             % 向量 P 的维数
[m,n] = size(x);            % 矩阵 x 的维数( m 是行数,n 是列数 )
y(1:m,1:n) = P(1);          % 产生矩阵 y 它与 x 同维数, 且每个元素都用 P(1) 赋值
                            % 以上两句可合并写为 y(size(x))=P(1);
for k = 2:np
    y = y.*x + P(k);        % ★注意: 这里是点乘,另外矩阵加一个数等于矩阵每个元素加这个数
end
% ----------------------------------------


% ********  你的实验  ********

% 【实验一】
% 通过 help 命令学习多项式运算的下列常用命令
%   p = conv(p1,p2)          两个多项式相乘
%   [q r] = deconv(p1,p2)    两个多项式相除
%   p = poly(A)              如果A是方阵则求它的特征多项式
%                            如果A是向量,则求以其分量为根的多项式(★此命令以后常用)
%   P = poly2str(p,'x')      把多项式写成我们习惯的表达式
% [注] 多项式求根,多项式拟合等命令在以后实验中学习

% 【实验二】
% 参考上面 mypolyval 函数,写出计算下面多项式的 Horner 嵌套算法
%     y = d(1) + d(2)*( x-X(1) ) + d(3)*( x-X(1) )*( x-X(2) ) + ...+
%         d(n)*( x-X(1) )*( x-X(2) )*...*( x-X(n-1) )
% 其中 d(i),X(i),x(向量) 已知,求 y(向量) (用例子说明你的正确性)
% [注] 在第四章中计算 Newton 插值多项式要用到此算法.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -