使用词干时出错(第 43 行)X 必须与 Y 的长度相同
Error using stem (line 43) X must be same length as Y
我正在尝试使用带有词干的 matlab 对二分法进行错误处理
误差是通过 abs(x2-x1) 为每次迭代计算的,所以我需要使用 stem 来绘制它
输出必须是这样的:
这是我的代码:
close all; clear ; clc;
syms x;
f=@(x)(x^(2))-(2);
x1=1;
x2=2;
acc=10^(-8);
n=0;
disp (' Bisection Method')
disp ('===========================================')
disp ('iteration root(P-hat) error')
while (abs(x2-x1)>acc)
n = n + 1;
xm=(x1+(x2-x1)/2);
if (f(x1)*f(xm)<0)
x2=xm;
else
x1=xm;
end
figure(1)
X = linspace(0,30);
Y = abs(x2-x1);
stem(X,Y);
grid on
hold on
fprintf('%3d %20.8f %20.10f \n', n, xm, abs(x2-x1));
end
我看到了这个错误:
Bisection Method
===========================================
iteration root(P-hat) error
Error using stem (line 43)
X must be same length as Y.
Error in Ass1Bisection (line 28)
stem(X,Y);
如您所见,迭代、根和错误的值甚至因为这个错误而没有打印出来
我该如何解决?
在这种情况下,Y 被创建为空,指令 Y(end+1)
将使其添加一个元素。
close all; clear ; clc;
syms x;
f=@(x)(x^(2))-(2);
x1=1;
x2=2;
acc=10^(-8);
n=0;
disp (' Bisection Method')
disp ('===========================================')
disp ('iteration root(P-hat) error')
Y = []
while (abs(x2-x1)>acc)
n = n + 1;
xm=(x1+(x2-x1)/2);
if (f(x1)*f(xm)<0)
x2=xm;
else
x1=xm;
end
figure(1)
Y(end+1) = abs(x2-x1);
stem(1:length(Y),Y);
grid on
hold on
fprintf('%3d %20.8f %20.10f \n', n, xm, abs(x2-x1));
end
我正在尝试使用带有词干的 matlab 对二分法进行错误处理
误差是通过 abs(x2-x1) 为每次迭代计算的,所以我需要使用 stem 来绘制它
输出必须是这样的:
这是我的代码:
close all; clear ; clc;
syms x;
f=@(x)(x^(2))-(2);
x1=1;
x2=2;
acc=10^(-8);
n=0;
disp (' Bisection Method')
disp ('===========================================')
disp ('iteration root(P-hat) error')
while (abs(x2-x1)>acc)
n = n + 1;
xm=(x1+(x2-x1)/2);
if (f(x1)*f(xm)<0)
x2=xm;
else
x1=xm;
end
figure(1)
X = linspace(0,30);
Y = abs(x2-x1);
stem(X,Y);
grid on
hold on
fprintf('%3d %20.8f %20.10f \n', n, xm, abs(x2-x1));
end
我看到了这个错误:
Bisection Method
===========================================
iteration root(P-hat) error
Error using stem (line 43)
X must be same length as Y.
Error in Ass1Bisection (line 28)
stem(X,Y);
如您所见,迭代、根和错误的值甚至因为这个错误而没有打印出来
我该如何解决?
在这种情况下,Y 被创建为空,指令 Y(end+1)
将使其添加一个元素。
close all; clear ; clc;
syms x;
f=@(x)(x^(2))-(2);
x1=1;
x2=2;
acc=10^(-8);
n=0;
disp (' Bisection Method')
disp ('===========================================')
disp ('iteration root(P-hat) error')
Y = []
while (abs(x2-x1)>acc)
n = n + 1;
xm=(x1+(x2-x1)/2);
if (f(x1)*f(xm)<0)
x2=xm;
else
x1=xm;
end
figure(1)
Y(end+1) = abs(x2-x1);
stem(1:length(Y),Y);
grid on
hold on
fprintf('%3d %20.8f %20.10f \n', n, xm, abs(x2-x1));
end