我正在研究我自己写的二分法。以下代码工作正常 - 它显示正确的结果(在x ^ 2-25上测试),它给出了正确的结果。但这并不是我想要实现的全部。我需要绘制一个显示所有正确结果的图表。
正如我所说 - 我接受了表达
的x ^ 2-25
,结果是
5和-5
现在,我需要绘制抛物线并显示结果。
我的代码
function [] = bisectionWindow()
clc;
f = @(x) x^2-25; % specified function
a=5;
b=6;
e=0.0001;
syms x;
% Main loop
while abs(b-a)>e
c=(b+a)/2;
if sign(f(c)) == sign(f(a))
a=c;
else
b=c;
end
end
disp(['Answer x='])
solve(f(x))
%note: ans displays because of 'sign' operator presence
我尝试绘制情节
function [] = checkWin(a,b,x)
%draws plot
Limits = [a b];
len = b-a;
for i=1:len
x = X(i);
y=x^2-25;
%y=0.5*x^3-2*x^2+1;
figure(1),clf,hold on
fplot('x^2-25',Limits),grid
plot(x,y,'o')
end
end
UPD:清除一些事情
我理解如何绘制情节。我的目标是:
问题是 - 这应该是唯一的代码(例如我使用抛物线,但让我们采取另一个只有一个结果的函数)并且应该执行上面提到的事情。所以基本上这就是我工作的原因。
有2个选项:
我想我已经坚持了很长时间。
感谢您的建议。
答案 0 :(得分:0)
我不知道为什么你需要代码中的循环。以下脚本工作正常,并提供与您相同的结果:
f = @(x) x^2-25; % specified function
disp(['Answer x='])
disp(solve(f(x)))
键入ezplot(f,[-5,5])
会绘制函数,x在-5到5之间
如果要使用plot
函数,则需要将函数重写为:
f = @(x) x.^2-25
这是因为^2
操作被认为是矩阵自身的乘法,不适用于向量,而.^2
是每个矩阵元素的平方。
然后,您需要使用x和y数据创建两个向量并使用绘图函数:
x = -10:0.1:10;
y = f(x);
plot(x,y), grid on
其中grid on
为您的情节提供网格线。您还可以使用许多其他绘图选项来自定义图形。你可以找到它们here
UPD。带注释的修改代码:
f = @(x) x.^2-25; %//specified function
disp(['Answer x='])
q = solve(f); %//-5 and 5 would be in one vector
disp(q) %//display -5 and 5
h = ezplot(f,[-10,10]); %//plot f(x) from -10 to 10
grid on; %//add grid to plot
set(h,'LineWidth',3); %//set line width to 3px
hold on;%//prevent the current graph from being replaced
plot(q,f(q),'ro','MarkerSize',10,'LineWidth',3)
%//plot two O-s at -5 and 5. Also, make O-s 10px in width and 3px thick
hold off;
这会产生: