PROBLEM #4.3
氣體在特定容器下,其壓力、體積與溫度間之關係如下:
P=nRT/V
這是波義耳的氣體公式,但萬得爾(van der Vaals)公式則加入分子間之引力因素。其關係如下:
P=nRT/(V-nb)-an²/V²
其中,a,b分別為氣體之特定常數。理想氣體在n=1摩爾數下,溫度在0C(273.2K)下,氣壓為一大氣壓時,具有體積為22.4公升,其R值為0.0826。對於氯氣而言,上述之a,b值分別為a=6.49,b=0.0562。試就上兩公式計算其壓力差。
The blog is for students who attend the course of 'Applications of Matlab in Engineering' to submit their homeworks, discussions and classnotes. Related blog can be refered to http://bime-matlab.blogspot.com. Students's work should be posted to this blog through a specified email address under a preset or self-defined title with proper contents. Students also have to leave their comments consistently to all the posted titles. Both posting material and comments will be graded later.
氣體在特定容器下,其壓力、體積與溫度間之關係如下:
P=nRT/V
這是波義耳的氣體公式,但萬得爾(van der Vaals)公式則加入分子間之引力因素。其關係如下:
P=nRT/(V-nb)-an²/V²
其中,a,b分別為氣體之特定常數。理想氣體在n=1摩爾數下,溫度在0C(273.2K)下,氣壓為一大氣壓時,具有體積為22.4公升,其R值為0.0826。對於氯氣而言,上述之a,b值分別為a=6.49,b=0.0562。試就上兩公式計算其壓力差。
張貼者:
不留白老人
於
10/19/2006 10:47:00 下午
2
意見
標籤: PROBLEM
若採用定存的方式,每個月存放一定的數額(例如每個月五百元),銀行年息5%。
1. 問何時可以達到10,000,000元?
2. 若改為每週存入原每月存放額度之四分之一,則何時可以達到10,000,000元?
張貼者:
不留白老人
於
10/19/2006 10:45:00 下午
5
意見
標籤: PROBLEM
有一個很好玩的數字遊戯是:假設第一天到銀行存一分錢,第二天存二分錢,第三天三分錢,如此累積,問何時可以累積到10,000,000元?(設銀行的年息為5%)
張貼者:
不留白老人
於
10/19/2006 10:44:00 下午
4
意見
標籤: PROBLEM
請使用最簡單之指令,製作一個9X9之九九乘法表,其中之項目格式為 3 x 4 = 12 3 x5 = 15 ...。
張貼者:
不留白老人
於
10/11/2006 11:23:00 上午
2
意見
標籤: PROBLEM
五月份的台北天氣已經開始轉熱,其整月的日平均溫度如下:
T=[25 26 24 23, 18 17 20 30 29, 25 19 19 21 20, 23 24 23 25 23,…
27 28 24 26 27, 23 25 24 21 19, 20]C
1. 試撰寫一程式,以上述之溫度資料為輸入值,求其月平均、最高及最低溫度。
2. 試撰寫另一程式,以交談式輸入之方式,按月份輸入每日之溫度,(必須分清楚每月應有之輸入日數)然後呼叫第一項之程式進行分析。
註:請同學針對本題目直接回應(COMMENT),請勿採用EMAIL方式提交。
張貼者:
不留白老人
於
10/10/2006 11:50:00 上午
6
意見
標籤: PROBLEM
在抛物運動中,設初值分別為速度ν及仰角θ,試其投射之最高高度、最遠距離。已知ν= [ 10 15 20 25 ] m/s,其對應θ=[30 40 50 60]度。
1. 試撰寫一函數,並繪出其投射之軌跡。
2. 同上題,若發射點高於平面100m時,求其對應之狀況。
3. 同上題,求物體自發射後,其著地之時間。
註:請同學針對本題目直接回應(COMMENT),請勿採用EMAIL方式提交。
張貼者:
不留白老人
於
10/10/2006 11:46:00 上午
5
意見
標籤: PROBLEM
註:請同學針對本題目直接回應(COMMENT),請勿採用EMAIL方式提交。
張貼者:
不留白老人
於
10/10/2006 11:30:00 上午
4
意見
標籤: PROBLEM
第一題
題意:
(A)把B矩陣單位由華氏溫度轉為攝氏溫度
(B)把溫度超過(>38℃)定義為"1",而沒有超過(<38℃)定義為"0"
分析:
(A)先定義矩陣B,把B用公式轉換成攝氏溫度
(B)把換算出來的攝氏溫度,再和38℃比較,再定義超過(>38℃)定義為"1",而沒有超過
(<38℃)定義為"0"
程式流程:
(A)>>B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5]; %Their temperatures
measured
>>C=(B-32)*5/9 %Converse the unit of B into Centigrade
C =
36.6667 37.7778 38.8889 40.0000 36.8889 36.7778 36.9444
38.3333 38.8889 37.5000
(B)>> D=C>38 %design Dto show that "1" for the one who has a fever (>38℃
) and "0" for the normal
D =
0 0 1 1 0 0 0 1 1 0
結果:
(A)C =36.6667 37.7778 38.8889 40.0000 36.8889 36.7778 36.9444
38.3333 38.8889 37.5000
(B)D =0 0 1 1 0 0 0 1 1 0
討論:
若是在每個矩陣中的數字可以定義其所代表的名字,若是其中有人超過,就可以立即知道
其名
第二題
題意:
比較A、B矩陣的相關:(A)D=(A>B)(B)D=(A>5)(C)D=A+B
分析:
比較其矩陣的各項和題意的相互關係
程式流程:
(A)>> A=[-10 8 6 4 -5 20];
>>B=[2 8 5 10 -6 3];
>> D=(A>B) %當A大於B時,定義當A>B為真時,表為"1",為假時表為"0"
D =
0 0 1 0 1 1
(B)>> D=(A>5) %當A大於5時,定義當A>B為真時,表為"1",為假時表為"0
D =
0 1 1 0 0 1
(C)>> D=A+B %把A、B矩陣相加
D =
-8 16 11 14 -11 23
結果:
(A)D =0 0 1 0 1 1
(B) D =0 1 1 0 0 1
(C) D =-8 16 11 14 -11 23
討論:
學會如何使用比大小
第三題
題意:
做矩陣加減乘除法和三角函數運算
分析:
先確定矩陣的大小是否符合加減乘除所須之維度,在做運算\
程式流程:
>> x=[10 20 30];
>>y=[1 4 6];
>> A=3*x+y
A =
31 64 96
>> B=5*y./x
B =
0.5000 1.0000 1.0000
>> C=(4*x).*(2*y)
C =
80 640 1440
>> D=sin(x).*cos(y)
D =
-0.2939 -0.5967 -0.9487 %三角函數以逕度量進行運算
>> E=(5*x).*sin(2*y)
E =
45.4649 98.9358 -80.4859
討論:是矩陣中的單元對應的相加減乘除,而不是矩陣的乘除,所以要注意其"."位子
第四題:
題意:在M-file中做運算,紀錄其工作列,在運算視窗中直接叫出
分析:按File後New後M-file在其中做串聯和並聯電阻的運算,在紀錄在Work裡,在Matlab
中把檔案叫出
程式流程:
1- R=[10 30 200 400];
2- series=sum(R)%串聯電阻
3- parallel=1/(sum(1./R))%並聯電阻
(紀錄在Untitled.m)
>> untitled
series =
640
parallel =
7.1006
討論:在M-file中做運算,若是非常大的運算,是非常好用的方法
第五題:
題意:把一個A矩陣(1-24)變成3*8,6*4,2*12矩陣大小
分析:使用reshape(X,Y,Z)
結果:
>> A=1:24
A =
Columns 1 through 13
1 2 3 4 5 6 7 8 9 10 11 12 13
Columns 14 through 24
14 15 16 17 18 19 20 21 22 23 24
>> B=reshape(A,3,8)
B =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
>> C=reshape(A,6,4)
C =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
>> D=reshape(A,2,12)
D =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
_________________________________________________________________
MSN 交友和 Match.com 為您線上尋找您週圍的單身貴族!
張貼者:
不留白老人
於
10/07/2006 12:00:00 上午
0
意見
標籤: 林冠宏
程式內容及結果:
>> x=[10 20 30]
x =
10 20 30
>> y=[1 4 6],
y =
1 4 6
a小題
>> A=3*x+y
A =
31 64 96
b小題
>> B=5*y./x
B =
0.5000 1.0000 1.0000
c小題
>> C=4*(2*y)
C =
8 32 48
d小題
>> D=sind(x).*cosd(y)
D =
0.1736 0.3412 0.4973
e小題
>> E=(5*x).*sind(2*y)
E =
1.7450 13.9173 31.1868
討論: 在d、e小題,學生於原本程式中相乘的部份沒有加上dot,所以程式會給了一個這樣的結果??? Error using ==> mtimesInner matrix dimensions must agree.學生才想起來上課老師教過矩陣之間元素要各自運算的話要在乘除符號之前加上一個dot符號,於是加上一個dot符號結果就正確了!
分析:因為要把array當中每ㄧ個元素的值各自提出,才能做電阻串並聯的運算,所以要利用到老師上課教到的矩陣次標功能
程式內容:
R=[ 10 30 200 400]
series=R(1,1)+R(1,2)+R(1,3)+R(1,4)%4個電阻串聯
parallel=1/((1/R(1,1))+(1/R(1,2))+(1/R(1,3))+(1/R(1,4)))%4個電阻並聯
程式結果:
R =
10 30 200 400
series =
640
parallel =
7.1006
分析: 此題要利用到老師講義中矩陣重組reshape這一個指令,就可以改變原先矩陣的形式
程式內容及結果:
>> B=reshape(A,3,8)
B =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
>> C=reshape(A,6,4)
C =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
>> D=reshape(A,2,12)
D =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
討論:我們想要的列、行數只要填在reshape指令括號中的第2、3位置,矩陣就會轉換成我們想要的大小
張貼者:
???
於
10/06/2006 03:33:00 下午
0
意見
標籤: 唐翊凱
第一題:
題旨:將量測的華式溫度轉換成攝氏後,找出體溫大於38的人,以矩陣D表示.當大於38顯示為1,小於則為0.
分析:將B矩陣中所有的元素進行轉換後,與38比較大小顯示於矩陣D.再利用尋找非零元素的方法,顯示其位置而容易尋找.
程式流程與分析:
>> clear
>> B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5];
>> C=(B-32).*5/9; %華式溫標轉換成攝氏溫標的轉換公式
>> D=C>38
D =
0 0 1 1 0 0 0 1 1 0
>> [E]=find(D) %尋找非零元素並顯示其位址
E =
3 4 8 9
討論:雖然題目的要求只有顯示D矩陣,但是如果當被測者數量眾多(資料量龐大),海關人員難以尋找到底是哪一位的體溫超過38度,所以後面加了一個command,使得最後顯示為超過38度的人的序號,如果是二維矩陣則為位址.
第二題:
題旨:矩陣A與B,利用MATLAB程式進行比較,將結果顯示於D.
分析:當進行矩陣的運算時,要先注意其維數是否符合進行運算的條件.如果為矩陣與常數運算,則無此顧慮,但運算元前面要加"."
程式流程與分析:
>> clear
>> A=[-10 8 6 4 -5 20];B=[2 8 5 10 -6 3];
>> D=(A>B)
D =
0 0 1 0 1 1
>> D=(A>5)
D =
0 1 1 0 0 1 %比大小時,當符合則顯示1,不符合則顯示0
>> D=A+B
D =
-8 16 11 14 -11 23
討論:此題的兩個矩陣維數相同,所以能輕易進行運算.
第三題:
題旨:兩個矩陣x與y,進行加減乘除運算
分析:跟第二題一樣,矩陣進行運算須注意其維度,因為此為兩個列矩陣,無法進行矩陣乘除,只能讓相同位址的元素進行運算,此時運算元間要加".",常數則不用,而三角則直接進行元素的運算.
程式流程與分析:
>> clear
>> x=[10 20 30];y=[1 4 6];
>> A=3*x+y
A =
31 64 96
>> B=5*y./x
B =
0.5000 1.0000 1.0000
>> C=4*x.*(2*y)
C =
80 640 1440
>> D=sin(x).*cos(y)
D =
-0.2939 -0.5967 -0.9487 %三角函數以逕度量進行運算
>> E=5*x.*sin(2*y)
E =
45.4649 98.9358 -80.4859
討論:當沒有加上"."號時,程式會告知無法計算.三角函數則以逕度量進行運算,如果要以角度進行運算,指令為sind與cosd.
第四題:
題旨:建立M-file,先在檔案中將程式打好,然後在matlab主程式中呼叫即可.
分析:建立M-file的路徑"file->new->M-file",程式打好後存檔,在matlab主程式中,直接輸入M-file的檔名即可執行.
程式流程與分析:
1.M-file:
R=[10 30 200 400];
series=sum(R) %串聯的總電阻為全部相加
parallel=1/sum(1./R) %並聯的總電阻為全部的倒數相加的倒數
(檔名:resistor)
2.matlab主程式
>> clear
>> resistor
series =
640
parallel =
7.1006
討論:M-file可以很方便的用來debug,尤其當程式很大的時候.此程式的另一個方法可以使用函數檔.如果需要常常用到相同的計算式時,可以利用M-file製成函數檔,只須呼叫並將變數帶入即可.
第五題:
題旨:一個1~24的矩陣A,將它變成3x8,6x4,2x12的矩陣.
分析:利用resharp的指令來改變其行列.
程式流程與分析:
>> clear
>> A=1:24
A =
Columns 1 through 13
1 2 3 4 5 6 7 8 9 10 11 12 13
Columns 14 through 24
14 15 16 17 18 19 20 21 22 23 24
>> B=reshape(A,3,8)
B =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
>> C=reshape(A,6,4)
C =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
>> D=reshape(A,2,12)
D =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
討論:建立一個元素為連續的矩陣時,可用":",可以省去麻煩.使用resharp指令時,要注意行數與列數的相乘是否符合,否則無法resharp.
張貼者:
MattLin
於
10/06/2006 09:22:00 上午
0
意見
標籤: 林翊展
>> % Quesiotn 1
>> % 題旨:將華氏溫度轉換為攝氏溫度,並且定義出溫度大於38度c者為1
>> B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5]; % 所有被測者的華氏體溫
>> c=(B-32)*5/9 % 將華氏溫度換算為攝氏溫度
c =
Columns 1 through 8
36.6667 37.7778 38.8889 40.0000 36.8889 36.7778
36.9444 38.3333
Columns 9 through 10
38.8889 37.5000
>> D=c>38 % 將攝氏溫度大於38度c者定義為1,得一新矩陣D
D =
0 0 1 1 0 0 0 1 1 0
>> % 執行結果: 換算後的攝氏溫度為[36.6667 37.7778 38.8889 40.0000 36.8889 36.7778
>> 36.9444 38.3333 38.8889 37.5000]; 定義體溫大於38度c的matrix D=[0 0 1 1 0 0
>> 0 1 1 0]
>> % 討論: 定義出高體溫者之後,若現實上受測者有編號,則可以利用尋找索引值的方式輕易找出高體溫者為誰
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>> % Quesiotn 2
>> % 題旨:比較矩陣A與矩陣B
>> A=[-10 8 6 4 -5 20];
>> B=[2 8 5 10 -6 3];
>> D=A>B % 矩陣A與矩陣B一對一比較,A>B者定義為1,其餘為0
D =
0 0 1 0 1 1
>> D=A>5 % 矩陣A中數值>5者定義為1,其餘為0
D =
0 1 1 0 0 1
>> D=A+B % 將矩陣A與矩陣B相加
D =
-8 16 11 14 -11 23
>> % 執行結果: (1) D=[0 0 1 0 1 1] (2) D= [0 1 1 0 0 1] (3) D=[-8 16 11 14 -11 23]
>> % 討論:矩陣A與矩陣B排列相同,因此兩者可以直接做比較與計算
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>> % Quesiotn 3
>> % 題旨:進行矩陣x與矩陣y之計算
>> x=[10 20 30];
>> y=[1 4 6];
>> A=3*x+y
A =
31 64 96
>> B=5*y./x
B =
0.5000 1.0000 1.0000
>> C=4*2*y
C =
8 32 48
>> D=sin(x).*cos(y)
D =
-0.2939 -0.5967 -0.9487
>> E=5*x.*sin(2*y)
E =
45.4649 98.9358 -80.4859
>> % 執行結果: A= [31 64 96], B= [0.5000 1.0000 1.0000], C=[8 32 48], D=
>> [-0.2939 -0.5967 -0.9487], E= [45.4649 98.9358 -80.4859]
>> % 討論:重點在於元素對元素的計算符號是在矩陣的計算符號之前加上"."
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
% Quesiotn 3
% 題旨:撰寫一個計算多個電阻分別串聯與並聯後之總電阻的M-file
R=[10 30 200 400];
R1=sum(R) % 串聯後之總電阻R1為四個電阻之總合 R1=r1+r2+r3+r4
R2=1/sum(1./R) % 並聯後之總電阻R2=1/(1/r1+1/r2+1/r3+1/r4)
>> % 在command window下執行M-file
>> % 執行結果: 串聯後之總電阻R1為640歐姆; 並聯後之總電阻R2為7.1006歐姆
>> % 討論:計算R矩陣中各個element的倒數不能單純以1/R指令執行,而需在/之前加上.才可順利算出數值
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>> % Question 5
>> % 將矩陣A(1x24)轉置為B (3x8), C(6x4), D(2x12)三種不同排列方式之矩陣
>> A=[1:24];
>> B=reshape(A,3,8)
B =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
>> C=reshape(A,6,4)
C =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
>> D=reshape(A,2,12)
D =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
>> % 執行結果:如上所示之B、C、D三矩陣
>> %
>> 討論:使用reshape(A,m,n)方式將陣列A的元素由上到下,由左到右的次序重新排列成一個新的m×n的矩陣。使用reshape函數時,重排後矩陣元素的個數必須與原矩陣相同。
張貼者:
不留白老人
於
10/05/2006 11:21:00 下午
0
意見
標籤: 林書如
題旨:找出哪些人超過38度西,超過只為1,其他為0。
分析:Step1. 先要知道華氏和攝氏的單位換算
Step2. 利用MATLAB的比較關係即可得到1或0。
程式內容:
B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5];
C=(B-32)/9*5;
D=(C>38)
執行結果:
D = 0 0 1 1 0 0 0 1 1 0
討論:
矩陣需要等維才能作相加減,但是在攝氏與華氏轉換公式中亦可使用C=(B-32.)/9*5,單一元素與等值的的的。
===============================================================
題旨:給兩個A與B陣列,試去比較與相加。
分析:Step1. 陣列比較時先判別是否等維數
Step2. 依題意進行A與B的比較與相加,比較是將以1與0表示,相加減時為相對元素直接相加減。
程式內容與結果:
A=[ -10 8 6 4 -5 20];
B=[2 8 5 10 -6 3];
D= (A>B)
D = 0 0 1 0 1 1
D= (A>5)
D = 0 1 1 0 0 1
D=A+B
D = -8 16 11 14 -11 23
討論:
剛開始需判斷是否為相同維數,而在比較時由於為『大於』,所以『等於』與『小於』其獲得直接為0只有大於是才為1。當陣列相加時,由於是相同維數的陣列,故MATLAB將相對的元素進行相加即為所求。
===============================================================
題旨:給兩個x與y陣列,進行陣列的加減乘除的基本運算。
分析:Step1. 陣列維數相同時即可直接進行相加減
Step2. 遇到陣列相乘除時,由於是陣列的關係所以需加註『.』來表示陣列,遇到三角函數表示時,需將整個函數視為一陣列來進行計算。
程式內容與結果:
x=[10 20 30];
y=[1 4 6];
A=3*x+y
A = 31 64 96
B=5*y./x
B = 0.5000 1.0000 1.0000
C=4*x.*(2*y)
C = 80 640 1440
D=sin(x).*cos(y)
D = -0.2939 -0.5967 -0.9487
E=5*x.*sin(2*y)
E = 45.4649 98.9358 -80.4859
討論:
此題主要是練習陣列的乘除計算,特別需注意的是兩陣列相乘除時,需要加標註『.』來表示陣列,所以MATLAB就以『.*』與『./』為陣列的乘除符號,即可得到所求。
===============================================================
題旨:建立一M檔案,將題目所給的R電阻陣列進行串連與並連的計算。
分析:Step1. 先開啟先的檔案,儲存後即為M檔案
Step2. 利用sum的指令即可進行元素的相加
Step3. 注意串連與並連的表示方式
程式內容:
M-FILE:
function ex4(R)
S=sum(R)
P=1/sum(1./R)
結果:
ex4([10 30 200 400])
S = 640
P = 7.1006
討論:
本題主要是練習sum指令的運用,值得注意的地方就是R為一陣列,所以在進行相除時需以『./』的方式進行運算,其結果即為所求。
===============================================================
題旨:A為一從1到24的陣列形式排列(1x24),試將A陣列變換成其他維數的矩陣表示之。
分析:Step1. A為一陣列,所以需先輸入A值來定義其陣列
Step2.在變換成其他維度矩陣時,需利用指令reshape,其指令可將矩陣重新編排其行列。
程式內容與結果:
A=1:24
A =
Columns 1 through 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Columns 18 through 24
18 19 20 21 22 23 24
B=reshape(A,3,8)
B =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
C=reshape(A,6,4)
C =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
D=reshape(A,2,12)
D =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
討論:
此題為練習單一陣列的維數變換,既將一陣列變換成多維矩陣,其指令reshape即能變換成其他維數的矩陣,值得注意的是原A為1x24的陣列,若是變換其他形式的矩陣時也需行與列的排數相乘為24,若是不以24表示,其元素將為不足,MATLAB無法表示。
張貼者:
不留白老人
於
10/05/2006 10:56:00 下午
0
意見
%%%%%%%%%%%%%%
% Question 1 %
%%%%%%%%%%%%%%
%題旨:將體溫矩陣轉換成攝氏並以38C作為判斷體溫是否過高的布林陣列
%分析與程式流程:
%首先將以華式為單位的B轉換為以攝氏為單位的C
%再將矩陣C以攝氏38度為判斷準則,利用">"作為判斷並且存以陣列D
%程式內容
clear all
B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5];
C=(B-32)*5/9;
Q1_D=(C>38)
%%%%%%%%%%%%%%
% Question 2 %
%%%%%%%%%%%%%%
%題旨:矩陣的各個元素的比較以及element之間的運算
%分析與程式流程:
%先定義出兩個變數分別為A和B
%進行矩陣的比較及運算
%程式內容
clear all
A=[ -10 8 6 4 -5 20];
B=[2 8 5 10 -6 3];
Q2_D_a=(A>B)
Q2_D_b=(A>5)
Q2_D_c=(A+B)
%%%%%%%%%%%%%%
% Question 3 %
%%%%%%%%%%%%%%
%題旨:矩陣的基本運算
%分析與程式流程:
%先定義出兩個變數分別為x和y
%進行矩陣的運算
%程式內容
clear all
x=[10 20 30];
y=[1 4 6];
Q3_a=3*x+y
Q3_b=5*y./x
Q3_b_1=5*y/x
Q3_c=4*x*2.*y
Q3_d=sin(x).*cos(y)
Q3_e=5*x.*sin(2*y)
%%%%%%%%%%%%%%
% Question 4 %
%%%%%%%%%%%%%%
%題旨:利用矩陣的方式求出電阻的串聯並聯
%分析與程式流程:
%先定義R的電阻形成的矩陣
%以sum函數求出矩陣內的總和以並聯公式求出並聯電阻
%程式內容
clear all
R=[10 30 200 400];
Q4_R_s=sum(R)
Q4_R_p=1/(sum(1./R))
%%%%%%%%%%%%%%
% Question 5 %
%%%%%%%%%%%%%%
%題旨:矩陣A是一個1x24的列矩陣,將矩陣A利用reshape指令分別變化成
%矩陣B(3x8) 矩陣C(6x4) 矩陣D(2x12)
%分析與程式流程:
%矩陣A=1:24 為一從1遞增到24的1x24矩陣
%利用reshape(A,m,n)將矩陣A以排列磁磚的方式排列成變化成m x n的陣列
%程式內容
clear all
A=linspace(1,24,24);
Q5_B=reshape(A,3,8)
Q5_C=reshape(A,6,4)
Q5_D=reshape(A,2,12)
執行結果:
Q1_D =
0 0 1 1 0 0 0 1 1 0
討論:
直接比較比起利用for迴圈一一比較較為快速,也可以利用find函數來找出其index
Q2_D_a =
0 0 1 0 1 1
Q2_D_b =
0 1 1 0 0 1
Q2_D_c =
-8 16 11 14 -11 23
討論:
直接對於element作比較以及運算
Q3_a =
31 64 96
Q3_b =
0.5000 1.0000 1.0000
Q3_b_1 =
0.9643
Q3_c =
80 640 1440
Q3_d =
-0.2939 -0.5967 -0.9487
Q3_e =
45.4649 98.9358 -80.4859
討論:
對於矩陣的element之間的運算要注意乘除之前的".",然而b小題有無卻出現兩種不同的答案
不過對於陣列運算注意維數外若是要element運算則程式寫法要注意
Q4_R_s =
640
Q4_R_p =
7.1006
討論:
sum函數可以直接求出陣列內每個元素的總和
Q5_B =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
Q5_C =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
Q5_D =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
討論:
定義矩陣的方式可以直接A=(1:24)或是用linspace但是要注意的是要分成多少元素要寫出
reshape可以將陣列排列成想要的維度,但是要注意要和元素總量相同
張貼者:
Eric Wu
於
10/05/2006 04:41:00 下午
1 意見
標籤: 吳堉光
%------------------------程式碼----------------------------------%
close all;
clc;
%-----------------------第一題 ----------------------------------%
%----------這是個温度換算和找出超過攝氏38度的程式------------------%
F=[98 100 102 104 98.4 98.2 98.5 101 102 99.5]; % Fahrenheit %
question_1_Centigrade=(F-32)*5/9 % Fahrenheit to Centigrade %
question_1_D=(question_1_Centigrade > 38) % 找出大於38度的denote "1"and "0" for the normal %
%-----------------------------------------------------------------%
%-------------------------第二題-----------------------------------%
%-----------------這是個matrices的判斷式----------------------------- %
A=[-10 8 6 4 -5 20];
B=[2 8 5 10 -6 3];
question_2_D_1=(A>B) % 找出A>B %
question_2_D_2=(A>5) % 找出A>5 %
question_2_D_3=(A+B) % A+B %
%------------------------------------------------------------------%
%----------------------------第三題--------------------------------%
%--------------------------這是個矩陣運算的程式------------------------ %
x=[10 20 30];
y=[1 4 6];
question_3_a=3*x+y
question_3_b=5*y./x
uestion_3_b1=5*y/x
question_3_c=4*x*2.*y
question_3_d=sind(x).*cosd(y)
question_3_e=5*x.*sind(2*y)
%在這一題要注意的是點的應用;而B=5y/x這一個題目很特別,因為有"有點b=5*y./x"和"沒點b1=5*y/x"的答案會有差異%
%------------------------------------------------------------------------%
%-----------------------------第四題--------------------------------------%
%----------------------------這是個電阻串並聯的換算------------------------%
R=[10 30 200 400]; %四種電阻%
R1=sum(R) %電阻串聯為全部的電阻值相加%
R2=1/(sum(1./R)) %利用並聯電阻公式1/R = 1/R1 + 1/R2求出並聯時的電阻值%
%------------------------------------------------------------------------%
%-------------------------第五題----------------------------------------%
%-----------------------------這是個矩陣重新排列的程式-------------------%
a=1:24;
question_5_b=reshape(a,3,8) %重新組成的 3x8 矩陣%
question_5_c=reshape(a,6,4) %重新組成的 6x4 矩陣%
question_5_d=reshape(a,2,12) %重新組成的 2x12 矩陣%
%------------------------------------------------------------------------%
執行結果
question_1_Centigrade =
36.6667 37.7778 38.8889 40.0000 36.8889 36.7778 36.9444 38.3333 38.8889 37.5000
question_1_D = 0 0 1 1 0 0 0 1 1 0
question_2_D_1 = 0 0 1 0 1 1
question_2_D_2 = 0 1 1 0 0 1
question_2_D_3 = -8 16 11 14 -11 23
question_3_a = 31 64 96
question_3_b = 0.5000 1.0000 1.0000
question_3_b1 = 0.9643
question_3_c = 80 640 1440
question_3_d = 0.1736 0.3412 0.4973
question_3_e = 1.7450 13.9173 31.1868
question_4_R1 = 640
question_4_R2 = 7.1006
question_5_b =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
question_5_c =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
question_5_d =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
張貼者:
ncbee
於
10/03/2006 06:22:00 下午
0
意見
標籤: 黃聖峰
目前作業已經歷problem#1及problem#2,大家對解題的方式應有所瞭解,不過由於題目內容有限,僅集中在某些部份,無法涵蓋各種層面。而且,這種繳交方式也有缺點,因為事先繳交的人可以成為其他同學參考的樣本,因而同樣的題目其所得之結果常會千篇一律,沒有創新性,也很難判定成績之高低。為提供繳交作業之趣味性及效率,只好另思作業繳交方法,使作業繳交的過程富變化,而其內容更具可看性及參考性。
張貼者:
不留白老人
於
10/02/2006 04:05:00 下午
0
意見
標籤: PROBLEM
Matlab之工程應用 PROBLEM #2
data : 9/30/2006
student : 吳子青 R95622024
----------------------------------------------------------------------------
** Question 1 **
題旨: 將受試者的體溫矩陣B以攝氏38C為判斷依據
做出一體溫是否過高的邏輯矩陣
分析與程式流程:
Step1: 先將以華式為單位的B轉換為以攝氏為單位的A
轉換公式為
Step2: 要將矩陣A以攝氏38度為邏輯判斷準則,大於38為1
小於則為0, 在這裡使用的方法為先將A的每個元素減38
為矩陣C
Step3: 利用矩陣的max, sign運算將A38裡小於0的值化為0
大於0的值化為1, 而成為所求邏輯矩陣 D
程式內容:
>> % ** Question 1 **
>> clear
>> B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5];
>> A=(B-32)*5/9
A =
36.6667 37.7778 38.8889 40.0000 36.8889 36.7778 36.9444 38.3333 38.8889 37.5000
>> A38=A-38
A38 =
-1.3333 -0.2222 0.8889 2.0000 -1.1111 -1.2222 -1.0556 0.3333 0.8889 -0.5000
>> D=sign(max(A38,0))
D =
0 0 1 1 0 0 0 1 1 0
執行結果:
執行結果結合在程式內容中, 如上A矩陣代表以攝氏為單位的體溫受測結果, D矩陣則為判斷結果, 0代表受測者體溫為正常體溫, 1代表體溫高於38度包括有受試者第3,4,8,9號
討論:
有很多作法可以得出相同的結論, 而且matlab直接對矩陣作運算可以免去很多作迴圈的麻煩
----------------------------------------------------------------------------
** Question 2 **
題旨: 在這裡為兩個矩陣的運作,包括(a) D= (A>B) 若A矩陣的元素i大於B矩陣的元素i,則A>B成立 D的元素i為1,反之為零。D矩陣為以1和0組成的邏輯矩陣。 (b) D= (A>5) 也是相同的當A的元素大於5,則為1。(c)D=A+B為矩陣基本加法
分析與程式流程:
Step1: 宣告 A=[ -10 8 6 4 -5 20]與 B=[2 8 5 10 -6 3]
Step2: 直接輸入 D= (A>B) 則矩陣D為是否符合A>B的邏輯矩陣 為(a)所求
Step3: 直接輸入D= (A>5) 則矩陣D為是否符合A>5的邏輯矩陣 為(b)所求
Step4: D=A+B 矩陣運算可直接以矩陣運算而不需利用迴圈
程式內容:
>> % ** Question 2 **
>> clear
>> A=[ -10 8 6 4 -5 20];
>> B=[2 8 5 10 -6 3];
>> D=(A>B)
D =
0 0 1 0 1 1
>> D= (A>5)
D =
0 1 1 0 0 1
>> D=A+B
D =
-8 16 11 14 -11 23
執行結果:
D=(A>B) 的結果 [0 0 1 0 1 1] 表示 在i =3 、5 、6時 Ai > Bi 相同的
在D=(A>5) D= [0 1 1 0 0 1] 表示在i= 2、3、6時 Ai>5 而最後 A+B=D=
[-8 16 11 14 -11 23]
討論:
在這裡也是直接對矩陣作運算,而不需要對矩陣內的元素用迴圈處理,無論是邏輯判斷與基本運算,這是matlab的優勢。
----------------------------------------------------------------------------
** Question 3 **
題旨: 矩陣的基本運算,包括下面五小題
a) A= 3x +y (b) B=5y/x (c) C=4x2y (d) D=sin(x)cos(y) (e)E= 5x sin(2y)
分析與程式流程:
Step1: 首先設定矩陣x=[10 20 30]、y=[1 4 6],之後的計算直接引用即可
Step2: 在矩陣運算裡注意的包括純量和矩陣的相乘用 * ,矩陣和矩陣的相乘
需注意矩陣的格式,和包括sin裡面角度單位
程式內容:
>> % ** Question3 **
>> clear
>> x=[10 20 30] ;
>> y=[1 4 6];
>>
>> A=3*x+y
A =
31 64 96
>> B=5*y/x
B =
0.9643
>> C=4*x'*2*y
C =
80 320 480
160 640 960
240 960 1440
>> D=sind(x)'*cosd(y)
D =
0.1736 0.1732 0.1727
0.3420 0.3412 0.3401
0.4999 0.4988 0.4973
>> E=5*x'* sind(2*y)
E =
1.7450 6.9587 10.3956
3.4899 13.9173 20.7912
5.2349 20.8760 31.1868
執行結果:
如上程式中矩陣A B C D E 分別是五小題(a) (b) (c) (d) (e)的答案
討論:
在矩陣的運算裡,純量乘矩陣為對矩陣裡每個元素作處理,而且用 * 代表相乘而因為x,y 都是1x3矩陣,所以作矩陣相乘時先將x 取為轉置矩陣x’ 在進行矩陣乘法,而關於sind() 是直接對 度 作運算 就不用在特別轉換單位,而且函數處理的對象是矩陣也同等於對裡面的每項元素作處理。
----------------------------------------------------------------------------
** Question 4 **
題旨: 練習對矩陣R=[ 10 30 200 400] 用sum 或prod指令對矩陣內的元素直接作運算,並且練習用M-file的方式撰寫
分析與程式流程:
Step1: 開啟一個新的M-file
Step2: 宣告 R=[ 10 30 200 400] (ohms)
Step3: (a) series form R1,總電阻R1為每一個電阻相加,可利用sum
Step4: (b) parallel form R2,總電阻R2為每一個電阻相乘/電阻總和,可利用
Sum , prod
Step5: 儲存位置並執行
程式內容:
>> % ** Question4 **
clear
R=[ 10 30 200 400];
R1=sum(R)
R2=prod(R)/sum(R)
執行結果:
R1=sum(R)=640 (ohms) 為series form 的總電阻
R2=prod(R)/sum(R) =37500 (ohms) 為parallel form的總電阻
討論:
寫成M-files 為較方便的作法,尤其是在程式處理的問題很複雜的時候,M-files也可以當成 subroutine 或子程式使用,在這裡利用sum或prod可以直接對矩陣內的元素作運算,也是一種方便的用法
----------------------------------------------------------------------------
** Question 5 **
題旨: 矩陣A是一個1x24的列矩陣,將矩陣A利用reshape指令分別變化成
矩陣B ( 3x8 ) 、矩陣C ( 6x4 )與矩陣D ( 2x12 )
分析與程式流程:
Step1: 宣告矩陣A=1:24 為一從1遞增到24的1x24矩陣
Step2: 利用reshape(A, x, y)將矩陣A變化成 有x列 有y行的 x*y 矩陣
程式內容:
>> % ** Question 5 **
>> clear
>> A=1:24;
>>
>> B=reshape(A,3,8)
B =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
>> C=reshape(A,6,4)
C =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
>> D=reshape(A,2,12)
D =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
執行結果:
如程式所示,矩陣B為由矩陣A重新組成的 3x8 矩陣,矩陣C為由矩陣A
重新組成的6x4矩陣,而矩陣D為2x12矩陣
討論:
利用reshape指令可以有效的對矩陣作變形的動作,但限制在於總元素數目
必須固定,而且排序的順序依照矩陣的排列順序以同一行開始排,之後在排
列到下一行,所以按提議可能需搭配轉置矩陣等
張貼者:
Ching 吳子青
於
10/01/2006 05:56:00 下午
0
意見
標籤: 吳子青
加選後補交的作業
%---------------程式碼--------------------------%
close all;
clc;
%---------------第一題--------------------------%
F=200; % pull force %
V=20/60; % m/min 變 m/sec %
J=0.101972; % 1J=0.101972 %
question_1_Power=F*V/J % 功率KW %
%-----------------------------------------------%
%---------------第二題---------------------------%
R1=1; % 電阻1 %
R2=20; % 電阻2 %
R3=200; % 電阻3 %
V=110; % 電壓(V) %
question_2_I=V/(R1+R2+R3) % 電流(A) %
question_2_Power=V*I % 功率(W) %
%-------------------------------------------------%
%--------------第三題------------------------------&
A=650; % 第一個邊長 %
B=428; % 第二個邊長 %
C=282; % 第三個邊長 %
s=(A+B+C)/2;
question_3_area=(s*(s-A)*(s-B)*(s-C))^(1/2) % 用Heron公式求三角形面積 %
%---------------------------------------------------%
%--------------第四題-------------------------------%
Lheat=25000; % heat from light and equipment %
Wheat=52000; % heat through wall and cell %
Fheat=84300; % heat through aerations %
question_4_N=(Wheat+Fheat-Lheat)/600 % how many hogs this house can raise %
%----------------------------------------------------%
%---------------第五題--------------------------------%
L=4; % 堰口寬度L為4呎 %
H=0.9; % 堰口溢流水頭高度H為0.9呎 %
question_5_Q=3.33*(L-0.2*H)^(3/2) % 堰口每秒流量 %
%----------------------------------------------------%
執行結果
question_1_Power =
653.7742 % 功率為653.7742 kw %
question_2_I =
0.4977 % 電流為0.4977A %
question_2_Power =
54.7511 % 功率為54.7511 w %
question_3_area =
4.5233e+004 % 面積為4.5233e+004平方公分 %
question_4_N =
185.5000 % 185頭豬最適合 %
question_5_Q =
24.8622 %堰口每秒流量為24.8622立方呎/秒
>>
張貼者:
ncbee
於
9/30/2006 07:51:00 下午
0
意見
標籤: 黃聖峰
今天才加簽成功所以補交上禮拜作業
>> ===========================================================================
>> % Question 1
>> % To find out the power of the tractor
>> f=200; % 曳引機(tractor)拉力f為200公斤
>> d=20; % 向前拉動20m
>> J=0.101972; % 單位換算1 J=0.101972kgm
>> t=60; % 需時60秒
>> p=f*d/J/t % 功率p=f*d/J/t
p =
653.7742
>> % 執行結果:所需之功率為653.7742瓦特
>> ===========================================================================
>> % Question 2
>> % Find the line current and power consumption
>> r=1+20+200; % 三電阻器串聯後之總電阻r
>> i=110/r; % 110伏特之電源除以總電阻得流經之電流i
>> p=i*110; % 電流與電壓之乘積得消耗功率
>> i
i =
0.4977
>> p
p =
54.7511
>> % 執行結果: 流經之電流為0.4977安培及所耗之功率為54.7511瓦特
>> % 討論: 第一、二題透過已有之物理基礎,了解消耗功率計算之方式,再加以MATLAB語法逐步計算求得解答,並非難事。
>> ===========================================================================
>> % Question 3
>> % To calculate the area of a trangle
>> a=650;
>> b=428;
>> c=282; % 三角形三邊長分別為650、428、282公分
>> r=(a+b+c)/2;
>> area=(r*(r-a)*(r-b)*(r-c))^(1/2) % 以海龍公式計算三角形面積
area =
4.5233e+004
>> % 執行結果: 三角形面積為(4.5233e+004)平方公分
>> ===========================================================================
>> % Quesiotn 4
>> % How many hogs this house can raise?
>> a=52000+84300; % 每小時總散熱量為a
>> h=(a-25000)/600; % 每小時總散熱量a減去照明及設備操作所產生的熱量為所有豬隻能產生的最大熱量
>> % 所有豬隻能產生的最大熱量除以每隻豬每小時產熱後得一數值h
>> floor(h) % 取出小於或等於數值h的最大數目即為合適的豬隻量,以floor(x)指令執行
ans =
185
>> % 執行結果: 豬舍中養185隻豬最合適
>> ===========================================================================
>> % Question 5
>> % Find the flow rate Q
>> L=4; % 堰口寬度L為4呎
>> H=0.9; % 堰口溢流水頭高度H為0.9呎
>> Q=3.33*(L-0.2*H)^(3/2) % 流量為Q
Q =
24.8622
>> % 討論:
>> 一剛開始看到已有公式,不加多想變複製至MATLAB視窗中執行,出現error訊息後才驚覺須以MATLAB語法重新闡述方可順利計算求解,程式語法之撰寫實在需要多加謹慎小心
>> :p
張貼者:
不留白老人
於
9/30/2006 12:40:00 上午
0
意見
標籤: 林書如
老師您好:
我是物理治療所的學生,顏章伊
考量到這學期的學分數已經14學分
怕期中期末的報告量無法負荷
所以這堂課想轉為旁聽
想先詢問老師意見
謝謝
張貼者:
SamYen
於
9/29/2006 04:08:00 下午
0
意見
標籤: 其他
%problem#2
程式流程:
%question 1
clear
format short
B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5]
C=(B-32)*5/9 % that's a)'s answer
[u,v]=find(C>38);
D=zeros(1,10);
D(u,v)=1
%question 2
clear
A= [10 8 6 4 -5 20]
B=[2 8 5 10 -6 3]
D1=[A>B]
D2=(A>5)
D3=A+B
%question 3
clear
x=[10 20 30]
y=[1 4 6]
A=3*x+y
B=5*y/x
C=4*x.*y*2
D=sin(x).*cos(y)
E=5*x.*sin(2*y)
%question 4
R=[ 10 30 200 400]
Req1=sum(R)
%series
Req2=prod(R)/sum(R)
%parallel
執行結果:
Q1:
B =
Columns 1 through 8
98.0000 100.0000 102.0000 104.0000 98.4000 98.2000 98.5000 101.0000
Columns 9 through 10
102.0000 99.5000
C =
Columns 1 through 8
36.6667 37.7778 38.8889 40.0000 36.8889 36.7778 36.9444 38.3333
Columns 9 through 10
38.8889 37.5000
D =
0 0 1 1 0 0 0 1 1 0
Q2:
A =
10 8 6 4 -5 20
B =
2 8 5 10 -6 3
D1 =
1 0 1 0 1 1
D2 =
1 1 1 0 0 1
D3 =
12 16 11 14 -11 23
Q3:
x =
10 20 30
y =
1 4 6
A =
31 64 96
B =
0.9643
C =
80 640 1440
D =
-0.2939 -0.5967 -0.9487
E =
45.4649 98.9358 -80.4859
Q4:
R =
10 30 200 400
Req1 =
640
Req2 =
37500
Q5:
A =
Columns 1 through 13
1 2 3 4 5 6 7 8 9 10 11 12 13
Columns 14 through 24
14 15 16 17 18 19 20 21 22 23 24
B =
1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24
C =
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24
D =
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
張貼者:
黃世榮
於
9/29/2006 04:06:00 下午
0
意見
標籤: 黃世榮
以前所提供之作業繳交方式仍然有效,將繼續計分直到期末。由於沒有期末考,故一切作業均在明年一月十二日午夜到期,逾期不收件,請同學注意。