筆者在一家中石化內(nèi)部的企業(yè)工作跪呈,主要從事高分子聚合物的相關(guān)開發(fā)嚷量。
目前因工作需要圆裕,需要學(xué)習(xí)聚合物特性黏度測(cè)試方面的知識(shí)广鳍,采用多點(diǎn)稀釋法進(jìn)行測(cè)試。在得到數(shù)據(jù)后吓妆,通過(guò)外推法求得純?nèi)垠w的特性黏度赊时。
比如我們?cè)谌N濃度下測(cè)得特性黏度分別如下:
純?nèi)軇?t0=76.56s ηr ηsp ηsp/c lnηr/c
0.04g/dl t1=228.16 2.98 1.98 49.5 27.3
0.02g/dl t2=135.37 1.77 0.77 38.5 28.5
0.01g/dl t3=105.25 1.37 0.37 37 31.38
定義為溶液濃度無(wú)限稀釋時(shí)的比濃黏度和比濃對(duì)數(shù)黏度。其值與濃度無(wú)關(guān)行拢。
特性黏度
我們可以通過(guò)作圖推算出濃度為零時(shí)的特性黏度祖秒,如下圖:
特性黏度推算
當(dāng)然我們更準(zhǔn)確的可以通過(guò)EXCEL工具進(jìn)行作圖并線性模擬出計(jì)算公式。
因?yàn)楣P者在PHP編程方面頗有一些研究舟奠,下面通過(guò)PHP編程計(jì)算出線性方程式竭缝。
如果兩組數(shù)據(jù)相關(guān)系數(shù)很高, 可以用一條近似直線Y=a + bX 來(lái)預(yù)估, 謂之線性回歸
根據(jù)統(tǒng)計(jì)學(xué)理論, Y = a + bX 中
斜率 b = X,Y 離均差交乘積和 / X離均差平方和
常數(shù)項(xiàng) a = Y平均值 - b * X平均值
具體實(shí)現(xiàn)代碼如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>線性回歸 Linear Regression</title>
</head>
<body>
<h2>計(jì)算線性回歸方程式 Y = a + bX</h2>
<p>
如果兩組數(shù)據(jù)相關(guān)系數(shù)很高, 可以用一條近似直線Y=a + bX 來(lái)預(yù)估, 謂之線性回歸<br />
根據(jù)統(tǒng)計(jì)學(xué)理論, Y = a + bX 中 <br />
斜率 b = X,Y 離均差交乘積和 / X離均差平方和 <br />
常數(shù)項(xiàng) a = Y平均值 - b * X平均值<br />
</p>
<?php
header("Content-Type: text/html; charset=utf-8");
if (empty($_REQUEST["X"])) {
?>
<form method="post" action="jisuan.php">
X : <input type="text" name="X" size="30" value="25,23,27,35,30"><br>
Y : <input type="text" name="Y" size="30" value="35,27,36,45,42"><br>
<input type="submit" value="ok">
</form>
<?php
} else {
$X = explode(",",$_REQUEST["X"]);
$Y = explode(",",$_REQUEST["Y"]);
$xavg = array_sum($X)/count($X); // X 平均值
$yavg = array_sum($Y)/count($Y); // Y 平均值
$XMD = Array(); // X 離均差
$YMD = Array(); // Y 離均差
$mdcross_sum = 0; // X,Y 離均差交乘積和
$xdif_square_sum = 0; // X 離均差平方和
$count = count($X);
for ($i=0; $i<$count; $i++) {
$xdif = (float)$X[$i]-$xavg; // X 離均差
$ydif = (float)$Y[$i]-$yavg; // Y 離均差
$XMD[$i] = $xdif;
$YMD[$i] = $ydif;
$mdcross_sum += $xdif*$ydif; // X,Y 離均差交乘積和
$xdif_square_sum += pow($xdif, 2); // X 離均差平方和
} //end of for
$b = round($mdcross_sum/$xdif_square_sum, 2); // 計(jì)算斜率 b
$a = round($yavg-$b*$xavg, 2); // 計(jì)算常數(shù)項(xiàng) a
echo "X = ".join(", ",$X)."<br>";
echo "Y = ".join(", ",$Y)."<br>";
echo "常數(shù)項(xiàng) a = ".$a."<br>";
echo "斜率 b = ".$b."<br>";
echo "線性回歸方程式 Y = ".$a." + (".$b.")X<br>";
echo "X 平均值 = ".$xavg."<br>";
echo "Y 平均值 = ".$yavg."<br>";
echo "X 離均差 = ".join(", ",$XMD)."<br>";
echo "Y 離均差 = ".join(", ",$YMD)."<br>";
echo "X,Y 離均差交乘積和 = ".$mdcross_sum."<br>";
echo "X 離均差平方和 = ".$xdif_square_sum."<br>";
}
echo '<hr />';
echo '計(jì)算兩點(diǎn)之間的角度。';
$a = array('x' => 10, 'y' => 0);
$c = array('x' => 80, 'y' => 80);
$pi_v = atan2($c['y'] - $a['y'], $c['x'] - $a['x']);
$n_v = rad2deg($pi_v);
echo '弧度:',$pi_v,' 角度:',$n_v;
?>
</body>
</html>
根據(jù)我們前面提供的數(shù)據(jù)沼瘫,可計(jì)算出
X = 0.04, 0.02
Y = 7, 6.5
常數(shù)項(xiàng) a = 6
斜率 b = 25
線性回歸方程式 Y = 6 + (25)X
X 平均值 = 0.03
Y 平均值 = 6.75
X 離均差 = 0.01, -0.01
Y 離均差 = 0.25, -0.25
X,Y 離均差交乘積和 = 0.005
X 離均差平方和 = 0.0002