當前位置:編程學習大全網 - 編程語言 - 如果sinθ=m,m的絕對值<1,180°<θ<270°那麽tanθ等於

如果sinθ=m,m的絕對值<1,180°<θ<270°那麽tanθ等於

妳好,我也來隨便說說 我們學校的數學建模上機課也有Mathlab程序,看看下面有沒有妳要找的。

壹 基本運算

1 求

輸入(12+2*(7-4))/3^2執行

2 輸入x = (5*2+1.3-0.8)*10^2/25執行

再輸入y= 2*x+1執行

3 執行clear命令。觀察結果

4計算圓面積Area = ,半徑r = 2,則可鍵入

r=2;area=pi*r^2; area

問:語句末尾加分號與不加分號有何區別?請試驗之

5常用函數

名稱 含義 名稱 含義

sin 正弦 exp E為底的指數

cos 余弦 log 自然對數

tan 正切 log10 10為底的對數

cot 余切 log2 2為底的對數

asin 反正弦 abs 絕對值

acos 反余弦

例:1)執行y = sin(10)*exp(-0.3*4^2)

2) 想計算 的值

輸入y1=2*sin(0.3*pi)/(1+sqrt(5))執行之

若又想計算 ,可以簡便地用操作:先按á鍵則會出現上面輸入過的指令 y1=2*sin(0.3*pi)/(1+sqrt(5)) ;然後移動光標,把y1改成y2;把 sin 改成 cos 便可。即得

y2=2*cos(0.3*pi)/(1+sqrt(5))然後執行之。

系統默認4位有效數字,若想提高精度則可如下:

digits(10);sym(y2,'d') 執行就可精確到小數點後10位,還可將10改為其它數字試驗

二 矩陣運算

1要得到矩陣 ,

可輸入A = [1,2,3; 4,5,6; 7,8,9] 執行,觀察結果

還可分行輸入

A=[1,2,3

4,5,6

7,8,9]

效果相同

2 註意 %號後的語句為註釋,練習時不必輸入

>>a=[1,4,6,8,10] %壹維矩陣

>>a(3) % a的第三個元素

ans =

6

x =[1 2 3 4 5 6 7 8

4 5 6 7 8 9 10 11]; %二維2x8 矩陣

執行後雙擊左邊Workspace裏的x,觀察之

x(3) % x的第三個元素

ans =

2

x([1 2 5]) % x的第壹、二、五個元素

ans =

1 4 3

如需要還可定義b=x([1 2 5])執行後結果為

b =

1 4 3

>> x(2,3) % x的第二行第三列的元素

ans =

6

x(1:5) % x的第前五個元素

ans =

1 4 2 5 3

x(10:end) % x的第十個元素後的元素

ans =

8 6 9 7 10 8 11

執行後雙擊左邊Workspace裏的x,觀察是哪十個元素

x(10:-1:2) % x的第十個元素和第二個元素的倒排

ans =

8 5 7 4 6 3 5 2 4

x(find(x>5)) % x中大於5的元素

ans =

6 7 8 6 9 7 10 8 11

x(4)=100 %給x的第四個元素重新給值

x =

1 2 3 4 5 6 7 8

4 100 6 7 8 9 10 11

x(3)=[] % 刪除第三個元素(不是二維數組)

x =

Columns 1 through 12

1 4 100 3 6 4 7 5 8 6 9 7

Columns 13 through 15

10 8 11

x(16)=1 % 加入第十六個元素

x =

Columns 1 through 12

1 4 100 3 6 4 7 5 8 6 9 7

Columns 13 through 16

10 8 11 1

3 如不需要以前的變量時,為不幹擾以後計算,可執行clear清除以前的變量

當元素很多的時候,則須采用以下的方式:

x=(1:2:121); % 以起始值為1,增量值為2,終止值為121的矩陣

x=linspace(0,1,100); % 利用linspace,生成以0為起始值,1為終止值,元素數目為100的矩陣

a=[] %空矩陣

a =

[]

zeros(2,2) %全為0的矩陣

ans =

0 0

0 0

ones(3,3) %全為1的矩陣

ans =

1 1 1

1 1 1

1 1 1

rand(2,4); %隨機矩陣

4另外壹種定義矩陣的方式

a=1:7; b=11:2:23;

c=[b a]; %利用上面建立的陣列 a 及陣列 b ,組成新陣列c

d=[b ; a]; %利用a及b,組成新矩陣d

執行後雙擊左邊Workspace裏的c與d,比較之

再如 已知y=[-1,6,15,7,31,2,4,5];

x=y(3:5) %x為y的第三到第五個元素組成的新向量

或 x=[y(5),y(3),y(7)] %x為y的第五、第三、第七個元素組成的新向量

或這樣更簡單 x=y([5,3,7])

5 輸入矩陣x=[4,8,12,10,23;6,3,15,13,19;9,1,2,18,14;11,7,5,21,17]

依次輸入下列命令並執行,觀察結果,各命令分別有什麽作用?

max(x)

min(x) (問:如何得到整個矩陣的最小值與最大值?)

[m,n]=size(x)

L=length(x)

y=x’

a=x( :,2)

b=x( :,2)’

c=x(3, :)

d=x(1 :3,3 :5)

y(2,3)=y(2,3)/2

y(2, :)=y(2, :)/2

y( :,4)=y( :,4)+y( :,2)

6 點運算 執行下列命令,指出點運算的作用

x=1 :8 (或對另外的向量或矩陣來作)

y=2.^x

z=x./y

w=x.^2

u=sin(x)

常用命令

min 最小值 max 最大值

mean 平均值 std 標準差

sort 排序 diff 相鄰元素的差

length 個數 sum 總和

dot 內積 cross 外積

三 畫圖

二維圖形

命 令 含 義 plot繪圖函數的三數

plot 建立向量或矩陣各隊隊向量的圖形 字元 顏色 字元 圖線型態

loglog x、y軸都取對數標度建立圖形 y 黃色 . 點

semilogx x軸用於對數標度,y軸線性標度繪制圖形 k 黑色 o 圓

semilogy y軸用於對數標度,x軸線性標度繪制圖形 w 白色 x x

title 給圖形加標題 b 藍色 + +

xlabel 給x軸加標記 g 綠色 * *

ylabel 給y軸加標記 r 紅色 - 實線

text 在圖形指定的位置上加文本字符串 c 亮青色 : 點線

gtext 在鼠標的位置上加文本字符串 m 錳紫色 -. 點虛線

grid 打開網格線 -- 虛線

hold on 命令用於在已畫好的圖形上添加新的圖形

1 x=0:0.001:10; % 0到10的1000個點(每隔0.001畫壹個點)的x座標

y=sin(x); % 對應的y座標

plot(x,y); % 繪圖

註:matlab畫圖實際上就是描點連線,因此如果點取得不密,畫出來就成了折線圖,請試驗之

2 Y=sin(10*x);

plot(x,y,'r:',x,Y,'b') % 同時畫兩個函數

3 若要改變顏色,在座標對後面加上相關字串即可:

x=0:0.01:10;

plot(x,sin(x),'r')

4 若要同時改變顏色及圖線型態(Line style),也是在坐標對後面加上相關字串即可:

plot(x,sin(x),'r*')

5 用axis([xmin,xmax,ymin,ymax])函數來調整圖軸的範圍

axis([0,6,-1.5,1])

6 MATLAB也可對圖形加上各種註解與處理:(見上表)

xlabel('x軸'); % x軸註解

ylabel('y軸'); % y軸註解

title('余弦函數'); % 圖形標題

legend('y = cos(x)'); % 圖形註解

gtext('y = cos(x)'); % 圖形註解 ,用鼠標定位註解位置

grid on; % 顯示格線

7畫橢圓

a = [0:pi/50:2*pi]'; %角度

X = cos(a)*3; %參數方程

Y = sin(a)*2;

plot(X,Y);

xlabel('x'), ylabel('y');

title('橢圓')

8 繪制函數 在0 ≤ x ≤ 1時的曲線。

x=0:0.1:1

y=x.*exp(-x) %為什麽用點運算?若不用會怎樣

plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')

9 畫出衰減振蕩曲線 與它的包絡線 及 。t 的取值範圍是[0, 4π] 。

t=0:pi/50:4*pi;

y0=exp(-t/3);

y=exp(-t/3).*sin(3*t);

plot(t,y,'-r',t,y0,':b',t,-y0,':b') % -r表示紅色實線,:b表示藍色點線,看上表

grid

10 在同壹個畫面上建立幾個坐標系, 用subplot(m,n,p)命令;把壹個畫面分成m×n個圖形區域, p代表當前的區域號,在每個區域中分別畫壹個圖,如

x=linspace(0,2*pi,30); y=sin(x); z=cos(x);

u=2*sin(x).*cos(x); v=sin(x)./cos(x);

subplot(2,2,1),plot(x,y),axis([0 2*pi -1 1]),title('sin(x)')

subplot(2,2,2),plot(x,z),axis([0 2*pi -1 1]),title('cos(x)')

subplot(2,2,3),plot(x,u),axis([0 2*pi -1 1]),title('2sin(x)cos(x)')

subplot(2,2,4),plot(x,v),axis([0 2*pi -20 20]),title('sin(x)/cos(x)')

三維圖形

11三維螺旋線:

t=0:pi/50:10*pi;

plot3(sin(t),cos(t),t) %參數方程

grid %添加網格

12 t=linspace(0,20*pi, 501);

plot3(t.*sin(t), t.*cos(t), t); %註意點乘

也可以同時畫出兩條曲線,格式與二維情況類似,茲不舉例。

13用mesh命令畫曲面

畫出由函數 形成的立體網狀圖:

a=linspace(-2, 2, 25); % 在x軸上從(-2,2)取25點

b=linspace(-2, 2, 25); % 在y軸上取25點

[x,y]=meshgrid(a, b); % x和y都是21x21的矩陣

z=x.*exp(-x.^2-y.^2); % 計算函數值,z也是21x21的矩陣

mesh(x, y, z); % 畫出立體網狀圖

14 surf和mesh的用法類似:

a=linspace(-2, 2, 25); % 在x軸上取25點

b=linspace(-2, 2, 25); % 在y軸上取25點

[x,y]=meshgrid(a, b); % x和y都是21x21的矩陣

z=x.*exp(-x.^2-y.^2); % 計算函數值,z也是21x21的矩陣

surf(x, y, z); % 畫出立體曲面圖

四 程序設計

1 M-文件: 上面所做的運算都是在命令窗口中輸入壹條或兩三條命令,然後執行,再輸入,再執行,以這樣交談式的方式進行。如果為了解決某壹問題需要很多命令,這樣做就很不方便了。這時我們把解決某壹問題的所有命令集中放在壹個文檔裏,命名、保存。然後只要在命令窗口中輸入文檔名,執行即可。

例:(1)編寫文檔:點擊MATLAB指令窗口上面最左端的圖標 ,即新建文件,就可打開MATLAB文件編輯器。用戶即可在空白窗口中編寫程序。例如輸入下面的程序:

x=linspace(0,2*pi,20);

y=sin(x);

plot(x,y,'r+')

title('2D plot')

(2)點擊文件編輯器上面工具條中的保存 ,命名(例如將上面的程序命名為picture),然後保存。像這樣在MATLAB文件編輯器中編寫的文件叫M-文件(M-file)。

(3)運行:i)在命令窗口中輸入文件名(如上面的picture),然後執行。

ii)或直接在文件編輯器上面的工具條中找到debug(即調試),點擊,再找到run(即運行),再點擊即可。

同學們可以把前面畫圖的壹些問題放在文件編輯器裏再做壹下。

2 自己編寫函數:我們經常用到的像sin、cos、exp這樣的壹些函數都是MATLAB軟件自身所帶的函數,因此直接應用即可,但有時我們為了解決壹些問題需要自己編寫函數。自己編寫函數有兩個基本要求i)必須在MATLAB文件編輯器中編寫。ii)函數名和文件名必須相同。 例: 編寫函數 , 計算f(1)f(2)+f2(3)

(1)打開MATLAB文件編輯器,輸入

function Y= fun1(x) % 表示Y是x的函數,x是自變量,fun1是函數名

Y=(x^3 - 2*x^2 + x - 6.3)/(x^2 + 0.05*x - 3.14);

然後保存。

註:在自己編寫的函數前都要寫上function,表示這是自己定義的函數。fun1表示函數名,那麽最後文件名也應命名為fun1。

(2)這樣在命令窗口中就可以像應用sin、cos那樣來使用函數fun1,如:在命令窗口中輸入 >> fun1(1)*fun1(2)+fun1(3)*fun1(3) 結果為:

ans =

-12.6023

3 for循環語句(這裏的for語句與C語言中的for語句不同,要更簡單壹些)

例:壹個簡單的for循環示例。

for i=1:10; % i依次取1,2,…10,.

x(i)=2*i; % 對每個i值,重復執行該指令

end; % 表示循環結束,每壹個for要對應壹個end

x % 要求顯示運行後數組x的值。

輸入後觀察結果,體會for語句的作用。

註:在MATLAB裏(在C語言中也壹樣), 的作用表示把等號右邊的值送給左邊的變量,這和數學中相等的意思不同。下面的例子中都要這樣理解,否則就不能明白程序的含義。

4 while循環語句

例: Fibonacci 數列:1,1,2,3,5,8,… 即: ,( 1,2,3…)現要求該數列中第壹個大於10000 的元素。

a(1)=1;a(2)=1;i=2;

while a(i)<=10000

a(i+1)=a(i-1)+a(i);

i=i+1;

end;

i,a(i),

5(1)if-end語句,例:

cost=10;number=12;

if number>8

sums=number*0.95*cost;

end,

sums

(2)if-else-end語句,例:

cost=10;number=5; % 改變number的初值,看結果有何不同

if number>8

sums=number*0.95*cost;

else sums=number*0.5*cost;

end,

sums

6 例:用for 循環語句來尋找Fibonacc 數列中第壹個大於10000 的元素。

n=100;a=ones(1,n); % a是壹個壹行,n列的所有元素為1的矩陣

for i=3:n

a(i)=a(i-1)+a(i-2);

if a(i)>=10000

a(i),

break; % 表示跳出循環

end;

end, i

7 練習:課本264頁,參考例4右邊的流程圖11.4,編程序求解例4,自己設置誤差,並與書上的結果比較。

五 擬合與插值

曲 線 擬 合 和 插 值 函 數

polyfit(x, y, n) 對描述n階多項式y=f(x)的數據進行最小二乘曲線擬合

interp1(x, y, xo) 1維線性插值

interp1(x, y, xo, ' spline ') 1維3次樣條插值

interp1(x, y, xo, ' cubic ') 1維3次插值

interp2(x, y, Z, xi, yi) 2維線性插值

interp2(x, y, Z, xi, yi, ' cubic') 2維3次插值

1 插值

看課本266頁§11.2第壹段,了解什麽是插值。

例:考慮下列問題,12小時內,壹小時測量壹次室外溫度。數據如下:

時間:1,2,3, 4, 5, 6, 7, 8, 9,10,11,12

溫度:5,8,9,15,25,29,31,30,22,25,27,24

現在根據以上數據估計3.2,4.7等時刻的溫度

hours=1:12;

temps=[5 8 9 15 25 29 31 30 22 25 27 24];

t=interp1(hours, temps, [3.2,4.7]) % 壹階線性插值,如果只估計壹個點的值,則無須加方括號

改為t=interp1(hours, temps, [3.2,4.7], 'spline') 則為三次樣條插值

如果輸入如下程序,則畫出插值曲線

hours=1:12;

temps=[5 8 9 15 25 29 31 30 22 25 27 24];

h=1:0.1:12;

t=interp1(hours, temps, h) ; % h後加上'spline'則為三次樣條插值

plot(hours, temps, ' + ' , h, t)

用壹階線性插值和三次樣條插值做課本268頁例2,與書上之結果比較,然後挑課後題做壹兩道。

2 擬合

看課本270頁§11.3,曲線擬合,比較擬合與插值有什麽區別。

例:兩組數據如下:

x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];

y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];

n=8;

p1=polyfit(x,y,n); % n表示用n階多項式擬合,n=1為線性擬合,即通常所說最小二乘法

poly2sym(p1) % 前面的擬合命令只給出多項式的系數,用此命令則將結果轉化為真正的多項式。或用 vpa(poly2sym(p1),10) 即取數值形式,取10位有效數字

x1=0:.01:1; % 由此以後三句是畫出擬合曲線的圖像

y1=polyval(p1,x1); %此句是在x1這些點處求出多項式的值,送給y1

plot(x,y,'o',x1,y1)

改變n的數字,即用不同的多項式擬合,看看哪個結果好。

當n=10時,數據點之間出現大的波動。當企圖進行高階曲線擬合時,這種波動現象經常發生,並不利於我們認識兩組數據之間的規律,因此並不是階數越高越好,實際問題當中,適當選壹個即可。

用上面的指令做課本271頁例1及例2,將結果與書上之結果比較。到這裏去看看

www.pic55.cn

參考資料:

www.pic55.cn 21861希望對妳有幫助!

  • 上一篇:北大保安哥要拿學士學位了。這個小哥哥是怎麽做到的?
  • 下一篇:存儲器芯片有哪些
  • copyright 2024編程學習大全網