2010-09-28 101 views
0

我有一個家庭作業問題,我認爲我做得正確,但需要確保100%。在我遞交之前,任何人都可以檢查我嗎? 謝謝。Matlab,繪圖功能

問題: 使用長度爲0.001的步長,繪製由f(x)= 2sin(2x)-3cos(x/2)給出的函數在[0,2π] )。使用命令max和min來估計最大和最小點。在x軸上包括最大和最小點作爲刻度線標記,最大值和最小值作爲y軸上的刻度線標記。

我的代碼:

x=linspace(0,2*pi,6280); 
[email protected](x)... 
    2.*sin(2.*x)-3.*cos(x./2); 

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

[email protected](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

向代碼格式塊,由4個空格縮進。快捷鍵爲:Ctrl + K或101010按鈕。 – 2010-09-28 14:23:55

回答

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])); 
+0

正確的,而不是:set(gca,'YTick',sort([y2 y3]))。 – 2010-09-28 15:04:08

+0

它必須是這樣的:set(gca,'YTick',sort([y3 y2])) – 2010-09-28 15:04:33

+0

對於'y'沒關係,但對於'x'你事先不知道最小/最大的順序。 – yuk 2010-09-28 15:09:54