標籤:
一、該程式是用來測輸入資料的平均值和方差的
公式:
二、 項目流程:
1. State the problem
假定所有測量數為正數或者0,計算這一系列測量數的平均值和方差。
假定我們預先不知道有多少測量資料被錄入,一個負數標誌著測量資料輸入結束
2. Define the inputs and outputs
程式要求輸入的數是未知的正數或者0,程式輸出的數是輸入資料集的平均值和方差。
除此之外,我們將列印出輸入的資料數,因為它對於我們檢查輸入資料是有用的
3.Define the algorithm
這個程式將被分為三個主要步驟:
Accumulate the input data
Calculate the mean(平均值)和standard deviation(方差)
Write out the mean, standard deviation , and number of points
第一個主要步驟是累計輸入的資料,為了達到目的,我們將要求使用者輸入想要的資料,當每一個資料錄入時,累計數量並求和,求平方和
虛擬碼:
初始化 n, sum_x, and sum_x2為0
請求使用者輸入
讀取輸入數x
while x>=0
n <- n+1
sum_x <- sum_x +x;
sum_x2 <- sum_x +x^2;
讀取下一個x
end
注意:我們不得不讀第一個數在while之前,以便於while迴圈第一次執行時有值
第二步,我們計算平均值和方差,利用平均值公式和方差公式寫虛擬碼:
x_bar <- sum_x / n
std_dev <-sqrt( (n*sum_x2 - sum_x2^2) /(n*(n-1)) )
第三步,我們輸出結果
輸出平均值 x_bar
輸出方差值 std_dev
輸入輸入資料的數量n
4.Turn the algorithm into MATLAB statements
% 指令檔:states.m% % 目標:% 該程式首先累計輸入未知的數(正數或者0),然後計算這個資料集的平均值和方差% % 版本記錄% 日期 編者 描述% ===== ========= ================% 2015-10-4 21:21 泡泡 源碼% % 定義變數:% % m --輸入樣本數量% std_dev --輸入樣本的方差% sum_x --輸入樣本的和% sum_x2 --輸入樣本的平方和% x --輸入樣本值% xbar --輸入樣本的平均值% % % %清除變數或指令clc;%變數初始化n=0; sum_x=0;sum_x2=0;%讀取第一個輸入值x=input (‘請輸入第一個數: ‘);%while迴圈while x >=0 %累積 n = n+1; sum_x = sum_x +x; sum_x2 = sum_x2 +x^2; %讀取下一個值 x=input (‘請輸入下一個數: ‘);end%計算方差和平均值x_bar =sum_x /n;std_dev =sqrt ( (n*sum_x2 - sum_x^2) /(n*(n-1)) );%輸出fprintf(‘您輸入的資料總數為: %f\n‘, n);fprintf(‘平均值是:%f\n‘, x_bar);fprintf(‘方差是: %f\n‘, std_dev);
5.Test the program
假定輸入的數為 3 4 5 -1(結束標誌)
那麼:
輸出平均值 4
輸出方差值 1
輸入輸入資料的數量 3
matlab 利用while迴圈計算平均值和方差