Where is the error and how is the code correct?
1 回表示 (過去 30 日間)
古いコメントを表示
Mohammed
2023 年 12 月 23 日
編集済み: Sulaymon Eshkabilov
2023 年 12 月 23 日
% Sample data points
x = [1, 2, 3];
f = [2, 5, 10];
% Call the function for curve fitting
dividedDifferenceTable(x, f);
function dividedDifferenceTable(x, f)
% Check if the number of data points is consistent
if length(x) ~= length(f)
error('Number of data points must be the same for x and f.');
end
n = length(x) - 1; % Degree of polynomial
F = zeros(n + 1, n + 2); % Divided difference table
% Fill in the first two columns of the table
F(:, 1) = x';
F(:, 2) = f';
% Construct the divided difference table
for j = 3:n + 2
for i = 1:n + 2 - j
F(i, j) = (F(i + 1, j - 1) - F(i, j - 1)) / (F(i + j - 2, 1) - F(i, 1));
end
end
% Display the divided difference table
disp('Divided Difference Table:');
disp(F);
% Print the polynomial
syms sym_x;
poly = F(1, 2);
for i = 2:n + 1
term = F(1, i + 1);
for j = 1:i - 1
term = term * (sym_x - F(j, 1));
end
poly = poly + term;
end
disp(['Polynomial: f(x) = ' char(poly)]);
% Evaluate the function at any given x
x_val = input('Enter the value of x to evaluate f(x): ');
result = subs(poly, sym_x, x_val);
disp(['f(' num2str(x_val) ') = ' num2str(result)]);
% Evaluate the absolute error
true_value = input('Enter the true value of f(x): ');
error = abs(result - true_value);
disp(['Absolute Error: ' num2str(error)]);
end
2 件のコメント
Dyuman Joshi
2023 年 12 月 23 日
Which error are you talking about? Are you running the script in a live editor?
採用された回答
Sulaymon Eshkabilov
2023 年 12 月 23 日
Here is the corrected code:
% Sample data points
x = [1, 2, 3];
f = [2, 5, 10];
% Call the function for curve fitting
dividedDifferenceTable(x, f);
function dividedDifferenceTable(x, f)
% Check if the number of data points is consistent
if length(x) ~= length(f)
error('Number of data points must be the same for x and f.');
end
n = length(x) - 1; % Degree of polynomial
F = zeros(n + 1, n + 2); % Divided difference table
% Fill in the first two columns of the table
F(:, 1) = x';
F(:, 2) = f';
% Construct the divided difference table
for j = 3:n + 2
for i = 1:n + 2 - j
F(i, j) = (F(i + 1, j - 1) - F(i, j - 1)) / (F(i + j - 2, 1) - F(i, 1));
end
end
% Display the divided difference table
disp('Divided Difference Table:');
disp(F);
% Print the polynomial
syms sym_x;
poly = F(1, 2);
for i = 2:n + 1
term = F(1, i + 1);
for j = 1:i - 1
term = term * (sym_x - F(j, 1));
end
poly = poly + term;
end
disp(['Polynomial: f(x) = ' char(poly)]);
% Evaluate the function at any given x
x_val = input('Enter the value of x to evaluate f(x): ');
result = subs(poly, sym_x, x_val);
fprintf('f(%f) = %f \n', [x_val, result])
% Evaluate the absolute error
true_value = input('Enter the true value of f(x): ');
error = abs(result - true_value);
fprintf('Absolute Error = %f \n', error)
end
9 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!