声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2259|回复: 0

[1stopt] 程序请教(附EES源码)

[复制链接]
发表于 2012-4-19 10:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我要做的是通过最小二乘法,来从一组非线性方程组中确定5个常数。
具体的目标函数就是下面程序里的SSRE_total,它的含义就是实验值和理论值之间的平方差,我有98组数据,所以要从一个数据表中读入一些实验值。
有的压力是实验测出来的,再通过下面的程序算出来这些压力(计算值),具体计算就是基于连续性方程和假定的一个压力与流量,面积的关系式v=c*deltaP^n*A.

不知道高手能不能帮忙写成1stopt的程序?

我用Engineering Equation Solver写的程序如下:



c_2=0.55

c_out=180.99    "mg/m^3"
eta=0.999975
c_f=(1-eta)*c_out

{c=0.45
n=0.7
d_0=0.02653
d_1=0.01909
d_2=0.001306}

M=98
DUPLICATE i=1,M                       

v_1[i]=lookup('Lookup 1',i,'v_1')  "0.0907483"   " m^3/s"
v_2[i]=lookup('Lookup 1',i,'v_2')  "0.183561"  "m^3/s"
v_3[i]=lookup('Lookup 1',i,'v_3')  "0.715177"  "m^3/s"
v_4[i]=lookup('Lookup 1',i,'v_4')  "0.192281"  "m^3/s"
v_5[i]=lookup('Lookup 1',i,'v_5')  "0.401011" "m^3/s"

"--Wind pressure at the openings--"
p_1wa[i]=lookup('Lookup 1',i,'p_1wa')  "-47.5"   "Pa"
p_2wa[i]=lookup('Lookup 1',i,'p_2wa')   "40"
p_3nda[i]=lookup('Lookup 1',i,'p_3nda')  "32.5"
p_3nwa[i]=lookup('Lookup 1',i,'p_3nwa')  "17.5"
p_3swa[i]=lookup('Lookup 1',i,'p_3swa')   "-37.5"
p_4wa[i]=lookup('Lookup 1',i,'p_4wa')      "7.5"
p_5lwa[i]=lookup('Lookup 1',i,'p_5lwa')     "-22.5"
p_5rwa[i]=lookup('Lookup 1',i,'p_5rwa')     "-7.5"
p_6sda[i]=lookup('Lookup 1',i,'p_6sda')     "-35"

"--Wind pressure at the position of pressure transducer--"
"For zone 3, the two windward measurement positions are the same as the above openings, so the wind pressure values are the same"
p_1a[i]=lookup('Lookup 1',i,'p_1a')    "30"
p_2a[i]=lookup('Lookup 1',i,'p_2a')   "30"
p_3sa[i]=lookup('Lookup 1',i,'p_3sa')    "-35"    "p_3sa is not the same as p_3swa, p_3sa is approximated the same as p_6sda, because the two transducers are close to each other, but a little far from south window in zone 3"
p_4a[i]=lookup('Lookup 1',i,'p_4a')  "-22.5"
p_5a[i]=lookup('Lookup 1',i,'p_5a')  "-22.5"

"--Pressure difference measured at the position of the pressure transducer, not necessarily at the openings--"
deltap_1a`[i]=lookup('Lookup 1',i,'deltap_1a')    "51.80"
deltap_2a`[i]=lookup('Lookup 1',i,'deltap_2a')    "51.60"
deltap_4a`[i]=lookup('Lookup 1',i,'deltap_4a')    "53.14"
deltap_5a`[i]=lookup('Lookup 1',i,'deltap_5a')    "49.42"
deltap_6a`[i]=lookup('Lookup 1',i,'deltap_6a')    "38.12"
deltap_3ndagauge`[i]=lookup('Lookup 1',i,'deltap_3ndagauge')     "38.12"
deltap_3nwagauge`[i]=lookup('Lookup 1',i,'deltap_3nwagauge')    "38.12"
deltap_3swagauge`[i]=lookup('Lookup 1',i,'deltap_3swagauge')    "38.12"



"--Absolute pressure in each zone--"
p_1[i]=deltap_1a[i]+p_1a[i]
p_2[i]=deltap_2a[i]+p_2a[i]

{p_3_ave[i]=(p_3nda[i]+deltap_3nda[i]+p_3nwa[i]+deltap_3nwa[i]+p_3sa[i]+deltap_3swa[i])/3         "absolute average pressure in zone 3"}
p_4[i]=deltap_4a[i]+p_4a[i]
p_5[i]=deltap_5a[i]+p_5a[i]
p_6[i]=deltap_6a[i]+p_6sda[i]

"--Pressure difference averaged for the 3 openings in zone 3--"
deltap_3nda[i]=IF(p_3_ave[i], p_3nda[i], p_3nda[i]-p_3_ave[i], 0, p_3_ave[i]-p_3nda[i])    "105.0"
deltap_3nwa[i]=IF(p_3_ave[i], p_3nwa[i], p_3nwa[i]-p_3_ave[i], 0, p_3_ave[i]-p_3nwa[i])   "95.19"         "90.59=(105+95.19+71.59)/3?"
deltap_3swa[i]=IF(p_3_ave[i], p_3swa[i], p_3swa[i]-p_3_ave[i], 0, p_3_ave[i]-p_3swa[i])   "71.59"

"--Pressure difference at the opening--"
deltap_1wa[i]=IF(p_1[i], p_1wa[i], p_1wa[i]-p_1[i], 0, p_1[i]-p_1wa[i])
deltap_2wa[i]=IF(p_2[i], p_2wa[i], p_2wa[i]-p_2[i], 0, p_2[i]-p_2wa[i])
deltap_4wa[i]=IF(p_4[i], p_4wa[i], p_4wa[i]-p_4[i], 0, p_4[i]-p_4wa[i])
deltap_5lwa[i]=IF(p_5[i], p_5lwa[i], p_5lwa[i]-p_5[i], 0, p_5[i]-p_5lwa[i])
deltap_5rwa[i]=IF(p_5[i], p_5rwa[i], p_5rwa[i]-p_5[i], 0, p_5[i]-p_5rwa[i])

deltap_31[i]=IF(p_3_ave[i], p_1[i], p_1[i]-p_3_ave[i], 0, p_3_ave[i]-p_1[i])  
deltap_32[i]=IF(p_3_ave[i], p_2[i], p_2[i]-p_3_ave[i], 0, p_3_ave[i]-p_2[i])
deltap_34[i]=IF(p_3_ave[i], p_4[i], p_4[i]-p_3_ave[i], 0, p_3_ave[i]-p_4[i])  
deltap_35[i]=IF(p_3_ave[i], p_5[i], p_5[i]-p_3_ave[i], 0, p_3_ave[i]-p_5[i])  
deltap_36[i]=IF(p_3_ave[i], p_6[i], p_6[i]-p_3_ave[i], 0, p_3_ave[i]-p_6[i])  

{(v_1a[i]/(c*A_1a[i]))^(1/n)=deltap_1wa[i]
(v_2a[i]/(c*A_2a[i]))^(1/n)=deltap_2wa[i]
(v_3swa[i]/(c*A_3swa[i]))^(1/n)=deltap_3swa[i]
(v_3nda[i]/(c*A_3na[i]))^(1/n)=deltap_3nda[i]
(v_3nwa[i]/(c*A_3nwa[i]))^(1/n)=deltap_3nwa[i]
(v_4a[i]/(c*A_4a[i]))^(1/n)=deltap_4wa[i]
(v_5la[i]/(c*A_5la[i]))^(1/n)=deltap_5lwa[i]
(v_5ra[i]/(c*A_5ra[i]))^(1/n)=deltap_5rwa[i]
(v_6a[i]/(c*A_6a[i]))^(1/n)=deltap_6sda[i]}

v_1a[i]=c*abs(deltap_1wa[i])^n*A_1a[i]
v_2a[i]=c*abs(deltap_2wa[i])^n*A_2a[i]
v_3swa[i]=c*abs(deltap_3swa[i])^n*A_3swa[i]
v_3nda[i]=c*abs(deltap_3nda[i])^n*A_3na[i]
v_3nwa[i]=c*abs(deltap_3nwa[i])^n*A_3nwa[i]
v_4a[i]=c*abs(deltap_4wa[i])^n*A_4a[i]
v_5la[i]=c*abs(deltap_5lwa[i])^n*A_5la[i]
v_5ra[i]=c*abs(deltap_5rwa[i])^n*A_5ra[i]
v_6a[i]=c*abs(deltap_6a[i])^n*A_6a[i]

v_31[i]=c*abs(deltap_31[i])^n*A_31[i]
v_32[i]=c*abs(deltap_32[i])^n*A_32[i]
v_34[i]=c*abs(deltap_34[i])^n*A_34[i]
v_35[i]=c*abs(deltap_35[i])^n*A_35[i]
v_36[i]=c*abs(deltap_36[i])^n*A_36[i]


v_1a_star[i]=IF(p_1[i], p_1wa[i], v_1a[i], 0, -v_1a[i])
v_2a_star[i]=IF(p_2[i], p_2wa[i], v_2a[i], 0, -v_2a[i])
v_3nda_star[i]=IF(p_3_ave[i], p_3nda[i], v_3nda[i], 0, -v_3nda[i])
v_3nwa_star[i]=IF(p_3_ave[i], p_3nwa[i], v_3nwa[i], 0, -v_3nwa[i])
v_3swa_star[i]=IF(p_3_ave[i], p_3swa[i], v_3swa[i], 0, -v_3swa[i])
v_4a_star[i]=IF(p_4[i], p_4wa[i], v_4a[i], 0, -v_4a[i])
v_5la_star[i]=IF(p_5[i], p_5lwa[i], v_5la[i], 0, -v_5la[i])
v_5ra_star[i]=IF(p_5[i], p_5rwa[i], v_5ra[i], 0, -v_5ra[i])
v_6a_star[i]=IF(p_6[i], p_6sda[i], v_6a[i], 0, -v_6a[i])
v_31_star[i]=IF(p_1[i], p_3_ave[i], v_31[i], 0, -v_31[i])
v_32_star[i]=IF(p_2[i], p_3_ave[i], v_32[i], 0, -v_32[i])
v_34_star[i]=IF(p_4[i], p_3_ave[i], v_34[i], 0, -v_34[i])
v_35_star[i]=IF(p_5[i], p_3_ave[i], v_35[i], 0, -v_35[i])
v_36_star[i]=IF(p_6[i], p_3_ave[i], v_36[i], 0, -v_36[i])

{These 6 equations are airflow mass conservation for unbalanced dilution ventilation system only}
v_1a_star[i]+v_31_star[i]+v_1[i]=0
v_2a_star[i]+v_32_star[i]+v_2[i]=0
v_3swa_star[i]+v_3nda_star[i]+v_3nwa_star[i]+v_3[i]=v_31_star[i]+v_32_star[i]+v_34_star[i]+v_35_star[i]+v_36_star[i]
v_4a_star[i]+v_34_star[i]+v_4[i]=0
v_5la_star[i]+v_5ra_star[i]+v_35_star[i]+v_5[i]=0
v_36_star[i]+v_6a_star[i]=0

A_3na[i]=A_6a[i]

A_1a[i]=A_2a[i]
A_1a[i]=A_3nwa[i]
A_1a[i]=A_3swa[i]
A_1a[i]=A_4a[i]
A_1a[i]=A_5la[i]
A_1a[i]=A_5ra[i]
A_31[i]=A_32[i]
A_31[i]=A_34[i]
A_31[i]=A_35[i]
A_31[i]=A_36[i]

A_1a[i]=d_0
A_3na[i]=d_1                                    "assuming constant crack area for the building envelop openings"
A_31[i]=d_2


END


SSRE_1a=sum((deltap_1a`[i]-deltap_1a[i])^2/deltap_1a`[i]^2,i=1,M)/M        {sum of square errors}
SSRE_2a=sum((deltap_2a`[i]-deltap_2a[i])^2/deltap_2a`[i]^2,i=1,M)/M
SSRE_4a=sum((deltap_4a`[i]-deltap_4a[i])^2/deltap_4a`[i]^2,i=1,M)/M
SSRE_5a=sum((deltap_5a`[i]-deltap_5a[i])^2/deltap_5a`[i]^2,i=1,M)/M
SSRE_6a=sum((deltap_6a`[i]-deltap_6a[i])^2/deltap_6a`[i]^2,i=1,M)/M
SSRE_3nda=sum((deltap_3ndagauge`[i]-deltap_3nda[i])^2/deltap_3ndagauge`[i]^2,i=1,M)/M
SSRE_3nwa=sum((deltap_3nwagauge`[i]-deltap_3nwa[i])^2/deltap_3nwagauge`[i]^2,i=1,M)/M
SSRE_3swa=sum((deltap_3swagauge`[i]-deltap_3swa[i])^2/deltap_3swagauge`[i]^2,i=1,M)/M

SSRE_total=SSRE_1a+SSRE_2a+SSRE_4a+SSRE_5a+SSRE_6a+SSRE_3nda+SSRE_3nwa+SSRE_3swa
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-9 04:50 , Processed in 0.160013 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表