<address id="dpnfz"><listing id="dpnfz"><listing id="dpnfz"></listing></listing></address>

    <address id="dpnfz"></address>

    <em id="dpnfz"><address id="dpnfz"><listing id="dpnfz"></listing></address></em>
    <sub id="dpnfz"></sub>
    <address id="dpnfz"></address>
      <noframes id="dpnfz"><form id="dpnfz"><th id="dpnfz"></th></form>

        <dfn id="dpnfz"></dfn>

        中國計量網 http://www.www.duanw.cn/
        中國計量網——計量行業門戶網站
        計量資訊速遞
        您當前的位置: 首頁 > 學苑 > 儀器使用

        中國計量2008年第1期101頁程序部分

        發布時間:2008-01-08 作者:金建廣 來源:www.jlbjb.com 瀏覽:2304

          本內容為《中國計量》雜志2008年第1期第101頁《基于MFC的千斤頂測量不確定度的界面化實現》一文程序部分。

         

        程序實現
        程序的主要分成計算測量數據的標準差,以及計算各類不確定度。
        double CcalDlg::cal_std()
        {// 定義一個臨時的數組,將保存測量數據
        double x[10]; int n = 0;
        // 得到測量數據,并將其轉移至數組x[]中
        GET_TESTVAL(m11_, m_m11) GET_TESTVAL(m12_, m_m12)GET_TESTVAL(m13_, m_m13)   GET_TESTVAL(m14_, m_m14)GET_TESTVAL(m15_, m_m15) GET_TESTVAL(m21_, m_m21)
        GET_TESTVAL(m22_, m_m22) GET_TESTVAL(m23_, m_m23)GET_TESTVAL(m24_, m_m24)   GET_TESTVAL(m25_, m_m25)
        // 判斷輸入的測量數據是否足夠
        if ( n < 2 )
        {MessageBox(_T("請至少輸入兩組測量數據!"), _T("錯誤"), MB_OK|MB_ICONWARNING);
        m_m11.SetFocus();m_m11.SetSel(0, -1);return -1.
          // 計算測量數據的和與平均值  double sum = 0.0;
        for ( int i=0; i<n; ++i )sum += x[i];double av = sum / n;// 計算標準差  double sum2 = 0.0;
         for ( int i=0; i<n; ++i ) sum2 += (x[i]-av)*(x[i]-av); double av2 = sum2 / (n-1);
        double std = sqrt(av2);return std;}
        第二部分,計算各類不確定度,遵從流程圖。
        void CcalDlg::OnOK()
        {// 從界面取得輸入值
         UpdateData(TRUE);bool interrupt = false;
        // 首先將原來的計算值清空
         {fia_ = _T("");fi1_ = _T("");fi2_ = _T("");fi3_ = _T("");fic_ = _T("");
        fb1_ = _T("");fb2_ = _T("");fb3_ = _T("");fbc_ = _T("");output_ = _T("");}
         do {// 計算單次測量標準差
          double fia = cal_std();if ( fia < 0.0 ) break;fia_.Format(_T("%.2f"), fia);
        / 計算單次測量不確定度
          double fi1 = fia / sqrt(3.0);fi1_.Format(_T("%.2f"), fi1);
          // 計算標準器準確度不確定度
          double fi2;{double input21, input22;GET_SETVAL(input21_, m_input21, input21)
          if ( interrupt ) break;GET_SETVAL(input22_, m_input22, input22)
          if ( interrupt ) break;fi2 = input21 * input22 / 100 / 3;fi2_.Format(_T("%.2f"), fi2);}
          // 計算Fi合成不確定度
          double fic = sqrt(fi1*fi1 + fi2*fi2);fic_.Format(_T("%.2f"), fic);
          // 計算壓力表準確度不確定度
          double fb1;{double input11, input31;GET_SETVAL(input11_, m_input11, input11)
          if ( interrupt ) break;GET_SETVAL(input31_, m_input31, input31)
          if ( interrupt ) break;fb1 = input11 * input31 / 100 / 3;fb1_.Format(_T("%.2f"), fb1);}
        // 計算壓力表分辨力不確定度
          double fb2;{double input41, input22, input32;
          GET_SETVAL(input41_, m_input41, input41)if ( interrupt ) break;
          GET_SETVAL(input22_, m_input22, input22)if ( interrupt ) break;
          GET_SETVAL(input32_, m_input32, input32)if ( interrupt ) break;
          fb2 = input41 / 2 / (input22/input32*10) / sqrt(3.0); fb2_.Format(_T("%.3f"), fb2);}
        // 計算油缸面積允許誤差不確定度
          double fb3;{double input42;
          GET_SETVAL(input42_, m_input42, input42)if ( interrupt ) break;
          fb3 = input42 / sqrt(3.0);fb3_.Format(_T("%.2f"), fb3);}
        // 計算Fb合成不確定度
          double fbc;{double input22, input32;GET_SETVAL(input22_, m_input22, input22)
          if ( interrupt ) break;GET_SETVAL(input32_, m_input32, input32)if ( interrupt ) break;
          double tmp1 = (fb1+fb2)*input32/10;double tmp2 = input22/input32*fb3;
          fbc = sqrt(tmp1*tmp1 + tmp2*tmp2);fbc_.Format(_T("%.2f"), fbc);}
        // 計算液壓千斤頂總合成不確定度u
          double output; output = sqrt(fic*fic + fbc*fbc);output_.Format(_T("%.2f"), output);}
        while (0);UpdateData(FALSE);}

         

        分享到:
        通知 點擊查看 點擊查看
        公告 點擊查看 點擊查看
        會員注冊
        已有賬號,
        會員登陸
        完善信息
        找回密碼
        337p日本欧洲亚洲大胆人人