Matlab,绘图功能

时间:2010-09-28 14:19:26

标签: matlab

我有一个家庭作业问题,我认为我做得正确,但需要确保100%。在我递交之前,有人可以检查我吗? 谢谢。

问题: 绘制由f(x)= 2 sin(2x) - 3 cos(x / 2)给出的函数 - terval [0,2π]使用长度为.001的步骤(如何?)。使用命令max和min来估计最大和最小点。在x轴上包括最大和最小点作为刻度线,在y轴上包括最大值和最小值作为刻度线。

我的代码:

x=linspace(0,2*pi,6280);
f=@(x)...
    2.*sin(2.*x)-3.*cos(x./2);

%f =    @(x)2.*sin(2.*x)-3.*cos(x./2)

g=@(x)... 
    -1*(2.*sin(2.*x)-3.*cos(x./2));

%g =    @(x)-1*(2.*sin(2.*x)-3.*cos(x./2))

[x3,y5]=fminbnd(g,0,2*pi);

%x3 =   4.0968
%y3 =  -3.2647

[x2,y4]=fminbnd(f,0,2*pi);

%x2 =2.1864
%y2 =  -3.2647

y2=max(f(x));
y3=min(f(x));

plot(x,f(x));
set(gca,'XTick',[x2 x3]);
set(gca,'YTick',[y2 y3]);

(*我在这里粘贴此代码后,它看起来不像我在程序中那样好,不知道为什么)

1 个答案:

答案 0 :(得分:1)

使用特定步骤创建矢量

x=0:0.001:2*pi;

为什么你有g(x)函数,你为什么使用fminbind?使用MIN和MAX,返回这些值的索引并找到相关的x值。

[ymin, minindex] = min(f(x));
xmin = x(minindex);

对于一般情况,如果您有多个最小/最大值,则索引将仅包含第一个匹配项。相反,你可以这样做:

minindex = find(y==ymin);

或者对于实际值来避免精度错误:

minindex = find(abs(y-ymin)<=eps);

此外,您的上一条语句会返回错误Values must be monotonically increasing。为了避免它对你的刻度值进行排序。

set(gca,'XTick',sort([xmin xmax]));
set(gca,'YTick',sort([ymin ymax]));