一般画函数或方程式之图形讲解.docx
《一般画函数或方程式之图形讲解.docx》由会员分享,可在线阅读,更多相关《一般画函数或方程式之图形讲解.docx(19页珍藏版)》请在冰豆网上搜索。
![一般画函数或方程式之图形讲解.docx](https://file1.bdocx.com/fileroot1/2023-1/29/75815c9b-60c6-45b6-ba8f-c552d3a99c04/75815c9b-60c6-45b6-ba8f-c552d3a99c041.gif)
一般画函数或方程式之图形讲解
Chapter5.繪圖
5.1一般畫函數或方程式之圖形,都是先標上幾個圖形上的點,進而再將點連接即為函數圖形,其點愈多圖形越平滑。
MATLAB在簡易2維畫圖(plot),也是相同做法,必須先點出x和y座標(離散資料),再將這些點連接,語法如下:
若取圖形上n個點
,則x=(x1,x2,…,xn),y=(y1,y2,…,yn)
plot(x,y)%x為圖形上之x座標向量,y為其對應的y座標向量
Review:
快速產生一維A陣列資料方法有二
1)利用V=[a:
b:
c]即以a起始,間格為b,至c結束。
(若後面間格位坐落在c,則不包含)。
<方便做等間格資料點>
2)X=linspace(a,b,n)%a代表起始點,b代表終點,n代表所取點的個數。
<方便做固定資料數>
例1:
繪y=sin(x)圖,x=0~2π,依序分別取5,10,100個資料點個別畫出。
>>x5=linspace(0,2*pi,5);%在0到2π間,等分取5個點
>>y5=sin(x5);%計算x的正弦函數值
>>plot(x5,y5);%進行二維平面描點作圖
>>figure;%開新畫圖視窗
>>x10=linspace(0,2*pi,10);%在0到2π間,等分取10個點
>>y10=sin(x10);%計算x的正弦函數值
>>plot(x10,y10);
>>figure;%開新畫圖視窗
>>x100=linspace(0,2*pi,100);%在0到2π間,等分取100個點
>>y1000=sin(x10);%計算x的正弦函數值
>>plot(x100,y100);
>>plot(x,sin(x),x,cos(x))%進行多條曲線作圖,輸入依序為各曲線的x,
%y值
提示:
>>figure%開另一視窗繪圖
5.2快速方程式畫圖(fplot,ezplot)
5.2.1fplot:
單純畫方程式圖形,圖形上之(x,y)座標值會自動取,但必須輸入x座標的範圍,其指令如下:
fplot(‘函式’,[xmin,xmax,ymin,ymax])%繪出函式圖形,x軸的範圍取xmin到%xmax,y軸的範圍取ymin到ymax
例1:
繪出
圖形
>>fplot('x-cos(x^3)-sin(2*x^2)',[-3,3])%繪出
圖形
5.2.2ezplot:
類似fplot,可以繪出y=f(x)顯函數,也可繪出f(x,y)=0隱函數以及參數式。
指令如下:
ezplot(‘函式’)
ezplot(‘函式’,[xmin,xmax,ymin,ymax])%繪出函式圖形,x軸的範圍取xmin
%到xmax
ezplot(‘x參數式’,’y參數式’,[tmin,tmax])%繪出參數式圖形,t範圍取tmin
%到tmax
例1:
利用ezplot繪出f(x)=x2
>>ezplot('x^2')
提示:
在’’內不需要寫成先前x.^2元素對元素的形式,方程式直接像打計算機操作一樣。
例2:
利用ezplot繪出f(x,y)=x2-y=0
>>ezplot('x^2-y',[-66-28])%繪出
,若不設x或y範圍,則為預%設的
例3:
利用ezplot繪出參數式
,
,t取0~
範圍的圖形。
>>ezplot('cos(2*t)','sin(6*t)',[0,pi])%繪
,
,t取0~
------------------------------------------------------------------------------------------------------------------
隨堂考:
Q1.繪出f(x)=
,x範圍為-10~10,並且標明x座標、y座標、網格。
Q2.繪出
,x範圍為-10~10,並且標明x座標、y座標、
網格。
------------------------------------------------------------------------------------------------------------------
5.3繪圖控制指令
基本二維繪圖指令
指令
說明
plot
X軸和Y軸均為線性刻度
semilogx
X軸為對數刻度,Y軸為線性刻度
semilogy
X軸為線性刻度,Y軸為對數刻度
例1:
繪
,其中資料點在1~10之間,y座標為對數刻度。
>>x=linspace(1,10);
>>y=exp(x);
>>semilogy(x,y);%使y軸為對數刻度,並作圖,y值為
------------------------------------------------------------------------------------------------------------------
隨堂考:
Q1.繪出y=cos(x),利用linspace做出資料點x在-6~6,共50點。
Q2.承Q1.同上做法一起繪出y=cos(x)與y=e-x在同畫圖區。
------------------------------------------------------------------------------------------------------------------
5.4圖形控制:
plot指令除了接受x及y座標外,還可接受一個字串輸入,用以控制曲線的顏色、格式及線標,其使用語法如下:
plot(x,y,'CLM')
其中C代表曲線的顏色(Colors),L代表曲線的格式(LineStyles),
M代表曲線所用的線標(Markers)。
’顏格標’
solidline
dashline
dotline
dash-dotline
例1:
繪y=sin(x),其中資料點x在0~4π間,間格為0.5,並且取線為黑色虛線,資料點用x標明。
>>x=0:
0.5:
4*pi;%x向量的起始與結束元素為0及4π,0.5
%為各元素相差值
>>y=sin(x);
>>plot(x,y,'k:
x')%其中「k」代表黑色,「:
」代表點線,而
%「x」則指定菱形為曲線的線標
5.5建立子圖形(subplot):
若要在同一個視窗畫出多個子圖形即用subplot(m,n,a)和plot,表示將視窗劃分為mxn個區域,plot(x,y)即畫所給圖形在第a個區域。
例1:
一視窗多張圖,利用subplot依序繪出
。
四個函式。
>>x=0:
0.1:
4*pi;
>>subplot(2,2,1);plot(x,sin(x));%一個視窗分割成4個圖形,此為左上角圖形
>>subplot(2,2,2);plot(x,sin(2*x));%此為右上角圖形
>>subplot(2,2,3);plot(x,sin(4*x));%為左下角圖形
>>subplot(2,2,4);plot(x,sin(8*x));%此為右下角圖形
subplot(2,2,2)
subplot(2,2,1)
subplot(2,2,3)
subplot(2,2,4)
------------------------------------------------------------------------------------------------------------------
隨堂考:
Q1.利用subplot依序繪出y=sin(x),y=cos(x),y=sin(x)-cos(x),y=cos(x)-sin(x),其中所有圖的x點座標皆為-3π~3π(間格為0.1)。
------------------------------------------------------------------------------------------------------------------
5.6加入說明文字,網格
例1:
利用subplot只要一畫圖區域,並在此畫圖區繪上兩函式,分別
,並寫上x軸、y軸,並在圖上方標示’兩個Function’。
>>subplot(1,1,1);
>>x=0:
0.1:
2*pi;
>>y1=sin(x);
>>y2=exp(-x);
>>plot(x,y1,'--*',x,y2,':
o');
>>xlabel('radian');%寫出x座標標示
>>ylabel('sinevalue');%寫出y座標標示
>>title('y=sinxandy=e^{-x}');%寫出此圖形代表標題
>>legend('sin(x)','e^{-x}');
>>gridon%繪上網格
提示:
>>若要標示上標,要用{}框起,例ex‘e{-x}’
5.7極座標與三度空間畫圖:
polar(theta,r)%輸入theta、r值,繪出極座標
plot3(x,y,z)%輸入x,y,z資料,繪出3D曲線圖
surf(x,y,z)%輸入x,y,z資料,繪出3D曲面圖
例1:
繪
極座標圖
>>theta=linspace(0,2*pi);
>>r=cos(4*theta);
>>polar(theta,r);%極座標繪圖
例2:
繪出
,x,y範圍在-2~2之間,試用plot3與surf比較兩者差異。
提示:
meshgrid(x,y)%做出x,y座標所交集的網格點座標
>>[x,y]=meshgrid(-2:
0.1:
2);
>>z=y.*exp(-x.^2-y.^2);
>>plot3(x,y,z);
>>figure
>>surf(x,y,z);
3D曲線圖
這邊教的是如何繪製空間中曲線。
ezplot3(x,y,z)%繪x=x(t),y=y(t),andz=z(t)0ezplot3(x,y,z,[tmin,tmax])
plot3(x,y,z)%輸入x,y,z資料,繪出3D曲線圖
例1:
>>t=0:
pi/50:
10*pi;
>>plot3(sin(t),cos(t),t)
例2:
>>ezplot3('cos(2*pi*t)','sin(2*pi*t)','t',[0,6])
3D網格圖和曲面圖
mesh(x,y,z)%x:
函數圖形上x座標y:
函數圖形上y座標z:
函數圖形上z座標
surf(x,y,z)%x:
函數圖形上x座標y:
函數圖形上y座標z:
函數圖形上z座標
例1:
設
繪此圖
>>[xxyy]=meshgrid(-2:
0.25:
2,-3:
0.25:
3);%meshgrid(x座標點,y座標點)做網格語法
%xx:
x座標yy:
y座標
>>plot(xx,yy,'b.');%顯示網格點之分布
>>z=((36-9*xx.^2-4*yy.^2).^0.5)/3;%計算每個網格點之Z值,切記要加.為矩
%陣計算
>>mesh(xx,yy,z)
>>surf(xx,yy,z)%另一3D畫圖
例2:
設
繪此圖
>>[xxyy]=meshgrid(-4:
0.5:
4,-4:
0.5:
4);
>>z=yy.^2-xx.^2;
>>surf(xx,yy,z)
例3:
設
繪此f(x,y)以及計算圖形體積(體積下一章說明)。
>>[xxyy]=meshgrid(0:
0.5:
4,0:
0.5:
8);
>>z=(64-8*xx+yy.^2)/16;
>>surf(xx,yy,z)
(可在視窗調整)
5.8其他表示三維之圖形展現
ezsurf(‘方程式’)%快速繪出
之圖形
ezsurfc(‘方程式’,n)%快速繪出
之圖形,並含等值線
%n:
表示所取之網格數(
)
contour(X,Y,Z)%必須先有網格點之X,Y,Z座標,才能繪等值線
例1:
繪出
圖形利用ezsurf,並用ezsurfc與contour繪出等值線。
>>ezsurf('x*exp(-x^2-y^2)')
>>ezsurfc('x*exp(-x^2-y^2)',50)
>>[xxyy]=meshgrid(-3:
0.1:
3,-3:
0.1:
3);
>>z=xx.*exp(-x.^2-y.^2);
>>contour(xx,yy,z)%輪廓圖
--------------------------------------------------------------------------------------------------------------
隨堂考:
Q1.繪出
,x與y座標之間格都取0.2。
(利用surf)
Q2.繪出
圖形
--------------------------------------------------------------------------------------------------------------