绘制绘图并显示结果Matlab

时间:2015-12-19 17:21:51

标签: matlab graphics matlab-figure

我正在研究我自己写的二分法。以下代码工作正常 - 它显示正确的结果(在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:清除一些事情

我理解如何绘制情节。我的目标是:

  1. 显示情节
  2. 在其上显示结果
  3. 问题是 - 这应该是唯一的代码(例如我使用抛物线,但让我们采取另一个只有一个结果的函数)并且应该执行上面提到的事情。所以基本上这就是我工作的原因。

    有2个选项:

    1. 修改现有代码 - 我不知道如何
    2. 重写 - 没有想法如何。
    3. 我想我已经坚持了很长时间。

      感谢您的建议。

1 个答案:

答案 0 :(得分:0)

我不知道为什么你需要代码中的循环。以下脚本工作正常,并提供与您相同的结果:

f = @(x) x^2-25; % specified function
disp(['Answer x='])
disp(solve(f(x)))

您可以输入ezplot(f)来绘制您的功能: enter image description here

键入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

enter image description 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;

这会产生:

enter image description here