请帮我编写matlab代码: 设f(x) = 8x5 + 5x4 +x³ - 1,请基于matlab,用秦九韶算法编程计算 f(x)在(1) x=3; (2) x=1,1.5,2.1,3 上的值。
时间: 2024-09-23 17:14:44 浏览: 51
在MATLAB中,我们可以利用秦九韶算法(也称为霍纳算法)来计算多项式函数的值。以下是计算给定多项式 `f(x) = 8*x^5 + 5*x^4 + x^3 - 1` 在特定点上的值的代码:
首先,我们需要将多项式分解成如秦九韶形式的向量:
```matlab
coeffs = [8, 5, 1, 0]; % Coefficients in descending order of power
n = length(coeffs) - 1; % Degree of the polynomial
```
接着,我们创建一个函数 `chinese_remainder` 来应用秦九韶算法:
```matlab
function y = chinese_remainder(factors, values)
N = prod(values);
result = zeros(size(values));
for i = 1:length(values)
result(i) = factors(i) * mod(N / values(i), factors{i});
N = rem(N, values(i));
end
y = result;
end
% Define the polynomial evaluation function using Chinese Remainder Theorem
evaluate_poly = @(x) chinese_remainder([1, x, x.^2, x.^3, x.^4, x.^5], coeffs);
```
最后,计算 `f(x)` 在给定点上的值:
```matlab
% Points to evaluate the function at
points = [3, 1, 1.5, 2.1, 3];
% Evaluate the function at each point
values = cellfun(@(x) evaluate_poly(x), points, 'UniformOutput', false);
% Display the results
disp("Values of f(x) at given points:")
for i = 1:length(points)
fprintf('f(%g) = %f\n', points{i}, values{i});
end
```
运行这段代码后,你会得到多项式 `f(x)` 在指定点上的值。
阅读全文