我有一个家庭作业问题,我认为我做得正确,但需要确保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]);
(*我在这里粘贴此代码后,它看起来不像我在程序中那样好,不知道为什么)
答案 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]));