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

📄 alg027.m

📁 matlab编程
💻 M
字号:
 %  HORNER'S ALGORITHM 2.7
 %
 %  To evaluate the polynomial
 %  p(x) = a(n) * x^n + a(n-1) * x^(n-1) + ... + a(1) * x + a(0)
 %  and its derivative p'(x) at x = x0;
 %
 %  INPUT:   degree n; coefficients aa(0),aa(1),...,aa(n);
 %           value of x0.
 %
 %  OUTPUT:  y = p(x0), z = p'(x0).
 syms('OK', 'N', 'I', 'AA', 'X0', 'Y', 'Z', 'MM', 'J');
 TRUE = 1;
 FALSE = 0;
 fprintf(1,'This is Horners Method\n');
 OK = FALSE;
 while OK == FALSE 
 fprintf(1,'Input degree n of polynomial - no decimal point\n');
 N = input(' ');
 if N < 0 
 fprintf(1,'Incorrect input - degree must be positive.\n');
 else
 OK = TRUE;
 end
 end
 AA = zeros(1,N+1);
 fprintf(1,'Input coefficients of P(X) in ascending order\n');
 for I = 0:N 
 fprintf(1,'Input coefficient of X^%d\n', I);
 AA(I+1) = input(' ');
 end
 fprintf(1,'Input argument X0 at which to evaluate P(X)\n');
 X0 = input(' ');
% STEP 1
% compute b(n) for p(x)
 Y = AA(N+1);
% compute b(n-1) for q(x) = p'(x)
 if N == 0 
 Z = 0;
 else
 Z = AA(N+1);
 end
 MM = N-1;
% STEP 2
 for I = 1:MM
 J = N-I;
% compute b(j) for p(x)
 Y = Y*X0+AA(J+1);
% compute b(j-1) for q(x)
 Z = Z*X0+Y;
 end
% STEP 3
% compute b(0) for p(x)
 if N ~= 0 
 Y = Y*X0+AA(1);
 end
 fprintf(1,'Coefficients of polynominal P :\n');
% STEP 4
 for I = 0:N
 fprintf(1,'Exponent = %3d Coefficient = %12.8f\n', I, AA(I+1));
 end
 fprintf(1,'\n P ( %.10e ) = %12.8f\n', X0, Y);
 fprintf(1,' P` ( %.10e ) = %12.8f\n', X0, Z);

⌨️ 快捷键说明

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