關於部落格
  • 124794

    累積人氣

  • 23

    今日人氣

    0

    追蹤人氣

Octave/Matlab 數值分析基本要素

[Output(輸出)]

1.disp(X) - 列出X的值, 例如

在此做了兩個動作, 兩個動作之間使用逗號","隔開. 一個是印出叫做

The value of pi is:

的文字, 其中使用 '...', "..." 框起來的文字叫做字串, 因此這個動作就是把這個字串列印出來. 第二個動作是印出圓周率

pi

的值.

補充說明:
1.如果忘記指令的用法可以使用 help 指令來查詢. 例如執行

help disp

他就會寫出 disp 函數的用法.

2. Octave 是不支援中文的, 所以請不要用中文敘述.


*.format - 輸出格式.

由於 octave/matlab 預設輸出只有四位, 可以使用format long 指令來增加位數至 14~15 位數
 
  
範例 

將格式改變成 long 形式

format long

觀看圓周率 pi 的值

pi

ans =   3.14159265358979
 
  


2.fprintf( '<敘述>' ,var1,var2,...) - 將 var1, var2, ... 等變數格式化輸出

當想要把自己的結果 show 給對方看時, 又希望照自己想要得方式排列文字, 格式化輸出是必備的輸出方式. 例如我們想要因出"The result is 1+1=2"那麼程式碼可以這樣打:
Ex1:

fprintf('The result is 1+1=%dn',1+1);

說明:
1.%d - 是印出整數的格式, 其他還有浮點數(小數)%f, 字串%s, 天文數%e 等格式
2.n - 是換行, 若是敘述到此需要換行就在此放入一個n

Ex2:多個數值輸出


說明:有兩個變數 a, b 印出敘述 <a 的值> x <b 的值> = <a*b的值>, 其中由於 b, a*b 是小數, 因此第二與第三個格式是使用 %f.

更詳細的說明請參考: FPRINTF 格式化輸出
 
[if 條件判斷]
1.當<bool>成立執行<程式a>

if <bool>
...程式a...
end


<bool> - 布林判斷式.
1是結果為真, 0是結果為假. (可以想像成基礎數學所教的"命題").
Eq1: x>y, 判斷 x 是否大於 y.
其餘還有大於等於(>=), 小於(<), 小於等於(<=), 相等(==), 不相等(~=)
Eq2: 兩個以上判斷式的運算- 且(&&); 或(||)

在提例子之前, 先介紹隨機函數

rand - 回傳一個 0 到 1 之間的隨機數
Ex:
每次結果不盡相同

範例:
執行結果:
其中 a>0.5 就是所謂的布林判斷, 當他成立時才會進行 if 裡面的內容. 上面的例子顯示: 第一次 a=0.42320 所以比 0.5 小, 布林判斷為"假", 因此什麼事情都不做. 第二次 a 比 0.5 大, 所以印出了我們寫在 if 敘述中的訊息. 如果希望兩種情況都要有訊息呢?請往下看摟~
 
2.當<bool>成立執行<程式a>要不然執行<程式b>

if <bool>
...程式a...
else
...程式b...
end

 
在此就不多說明了, 直接看下面例子.
在 if 敘述加入了 else(要不然) - 也就是布林以外的情況. 然後多執行幾次就會看到下面兩種結果:
如此他就會照 rand 數字的情況給我們該有的訊息. 當你的判斷條件不只兩種情況時, 那就請參考下面.
 
2.當<bool 1>成立執行<程式 1>...要不然當 <bool n>成立執行<程式 n>要不然執行<程式a>

if <bool 1>
...程式1...
elseif <bool 2>
...程式2...
...
elseif <bool n>
...程式n...
else
...程式a...
end
 
[Loop(迴圈)]
如果我們想要重複做一堆類似的事情, 舉例來說:當某個數字 x  < 0.5, 就印出訊息, 直到 x > 0.5 停止. 你當然可以用自己的眼睛, 一個一個去看. 但是如果要重複做 100 次以上呢? 迴圈就是拿來做這種工作的工具
1. 當 <bool> 時持續執行 <程式a>

while <bool>
...程式a...
end
用剛剛所敘述的情況寫成程式:
看最後一行就知道, 當他大於 0.5 的時候就停止了.
 
2.序列式迴圈

for x = <向量>
...迴圈敘述...
end
其中, 1:n 這個指令代表從 1 到整數 n 的向量. EX:
如果今天我們需要做這件事情: 計算 1 ~ 10 所有整數的總和. 你大可直接打上 1 + 2 + ... + 10. 那叫你計算到 1 到 10000 呢?雖然你可以慢慢打, 但是有取代的方式. 參考以下程式.
 
這是計算 1 到 10 的總和, 從微積分應該學過假設 Sn = 1+2+...+n 為加到第 n 項的和. 則新的一項跟前一項會有下列關係 Sn=S(n-1) + n.  迴圈裡面做的事情就是將等號左邊的新項指定為舊項+n.
 
[練習]
1.
Fibonacci Sequence - 費柏南西數列
F(1)=0, F(2)=1
F(n+2)=F(n+1)+F(n), n>=1

請計算 F(200)
 
[練習題], 連結
 
[相關文章]
*. 輸出, 判斷與迴圈, 連結
*. 檔案的寫入, 連結
 
[參考文獻]
Octave manual
MATLAB 程式設計與應用 張智星

相簿設定
標籤設定
相簿狀態