一、該程序是用來測輸入數據的平均值和方差的
公式:
二、 項目流程:
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