what's "error: x(7): out of bound 1 (dimensions are 1x1)"?
115 次查看(过去 30 天)
显示 更早的评论
clc
clear
% Define the data points
x = [1 4 6 5 3 1.5 2.5 3.5];
y = [0 1.3862944 1.7917595 1.6094379 1.0986123 0.40546411 0.91629073 1.2527630];
% Define the number of data points
n = length(x);
% Initialize the coefficient array
a = zeros(1,n);
% Set the first coefficient to the first data point
a(1) = y(1);
% Use the recursive formula to compute the coefficient
for i = 2:n
for j = i:n
y(j) = (y(j) - y(j-1))/(x(j) - x(j-i+1));
end
a(i) = y(i);
end
% Print the coefficients
disp(a)
% Define the function using the coefficients
f = @(x) a(n);
for i = n-1:-1:1
f = @(x) a(i) + f(x).*(x - x(i));
end
% Approximate the values of ln(3), ln(5), and ln(3.256)
approx_3 = f(3);
approx_5 = f(5);
approx_3256 = f(3.256);
% Print the approximations
disp(approx_3)
disp(approx_5)
disp(approx_3256)
% Compute the errors of the approximations
error_3 = abs(approx_3 - log(3));
error_5 = abs(approx_5 - log(5));
error_3256 = abs(approx_3256 - log(3.256));
% Print the errors
disp(error_3)
disp(error_5)
disp(error_3256)
Here is an Octave script that uses the Newton's Divided Difference method to determine the parameters of an interpolating polynomial for a given set of data points and approximates the value of ln(x) for a given set of points.
and the output is as follows:
0 0.4621 0.0405 -0.2564 -0.0061 0.1040 0.1267 -0.1406
error: x(7): out of bound 1 (dimensions are 1x1)
error: called from
@<anonymous> at line 30 column 17
Project1 at line 34 column 10
I don't understand these errors and how to solve them, any help is appreciated.
0 个评论
采纳的回答
Dyuman Joshi
2023-1-2
编辑:Dyuman Joshi
2023-1-22
Use another letter/symbol for the function handle input variable, as x has already been defined as an array -
% Define the data points
x = [1 4 6 5 3 1.5 2.5 3.5];
y = [0 1.3862944 1.7917595 1.6094379 1.0986123 0.40546411 0.91629073 1.2527630];
% Define the number of data points
n = length(x);
% Initialize the coefficient array
a = zeros(1,n);
% Set the first coefficient to the first data point
a(1) = y(1);
% Use the recursive formula to compute the coefficient
for i = 2:n
for j = i:n
y(j) = (y(j) - y(j-1))/(x(j) - x(j-i+1));
end
a(i) = y(i);
end
% Print the coefficients
disp(a)
% Define the function using the coefficients
f = @(k) a(n);
for i = n-1:-1:1
f = @(k) a(i) + f(k).*(k - x(i));
%^ edit the bracket for k or x accordingly
end
% Approximate the values of ln(3), ln(5), and ln(3.256)
approx_3 = f(3);
approx_5 = f(5);
approx_3256 = f(3.256);
% Print the approximations
disp(approx_3)
disp(approx_5)
disp(approx_3256)
% Compute the errors of the approximations
error_3 = abs(approx_3 - log(3));
error_5 = abs(approx_5 - log(5));
error_3256 = abs(approx_3256 - log(3.256));
% Print the errors
disp(error_3)
disp(error_5)
disp(error_3256)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Octave 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!