水环境学——利用最小二乘法对BOD降解好氧系数K1估算

来源:互联网 发布:800万淘宝卖家 编辑:程序博客网 时间:2024/04/29 17:23
由BOD的实验室化验资料估算讲解系数K1时,可以采用最小二乘法。//"input.txt"BOD化验资料t(d)  y(mg/L)155281310241195131614071478153915910162#include "stdafx.h"#include <iostream>#include <fstream>#include <cmath>void main(){using namespace std;const int N = 10,//天数  M = 100;//最大循环次数double y[N],t[N],f1[N],f2[N],Sum11 = 0, Sum22 = 0, Sum12 = 0, Sum1y = 0, Sum2y = 0,a, d, L0, h, K1;const double h0 = 0.0001;ifstream infile;infile.open("input.txt");for(int i = 0; i<N; i++)infile>>t[i]>>y[i];infile.close();K1 = 0.5;//假设K1的初始值ofstream outfile;outfile.open("output.txt");for(int k = 0; k < M; k++){for(int i = 0; i<N; i++){f1[i] = 1 - exp(-K1*t[i]);f2[i] = t[i]*exp(-K1*t[i]);Sum11 += pow(f1[i],2);Sum22+= pow(f2[i],2);Sum12 +=f1[i]*f2[i];Sum1y +=f1[i]*y[i];Sum2y +=f2[i]*y[i];}a = (Sum22*Sum1y - Sum12*Sum2y)/(Sum11*Sum22 - pow(Sum12,2));d = (Sum11*Sum2y - Sum12*Sum1y)/(Sum11*Sum22 - pow(Sum12,2));L0 = a;h = d/L0;if(fabs(h)>h0)  K1 += h;else{outfile<<"K1=  "<<K1<<endl<<"L0 =  "<<L0<<endl;break;}}outfile.close();}