声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1333|回复: 3

[编程技巧] [求助]大侠们行行好,看看我的这个程序是不是有问题?

[复制链接]
发表于 2006-1-7 15:20 | 显示全部楼层 |阅读模式

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

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

x
<P>我的程序是要用牛顿节点法进行管网流量和压力的计算。我编的程序是这样的:<BR>%变量输入<BR>n=13;%节点数<BR>m=15;%管段数<BR>P0=3000;%气源压力<BR>dPmax=850;%最大允许压降<BR>rn=0.7174;%标况下燃气密度<BR>Tn=273;%标准状况下燃气的温度<BR>T=293;%燃气的温度<BR>v=14.5*10^(-6);%燃气动力黏度</P>
<P>%节点矩阵的形成<BR>N=[1 100;<BR>   2 100;<BR>   3 300;<BR>   4 200;<BR>   5 300;<BR>   6 100;<BR>   7 300;<BR>   8 200;<BR>   9 300;<BR>   10 200;<BR>   11 100;<BR>   12 200;<BR>   13 200];<BR>%管段矩阵的形成<BR>G=[1 1 7 300 400;<BR>   2 1 4 350 600;<BR>   3 4 5 250 450;<BR>   4 4 8 150 400;<BR>   5 5 9 200 500;<BR>   6 7 8 200 500;<BR>   7 8 9 200 300;<BR>   8 2 3 100 400;<BR>   9 1 3 150 250;<BR>   10 1 2 150 200;<BR>   11 5 6 125 200;<BR>   12 7 10 150 200;<BR>   13 7 11 125 200;<BR>   14 9 12 125 200;<BR>   15 9 13 150 200];<BR>A=zeros(n,m);<BR>G1=G(:,1);%管段矩阵的管段数<BR>G2=G(:,2);%管段矩阵的管段起点<BR>G3=G(:,3);%管段矩阵的管段终点<BR>D=G(:,4);%管段矩阵的管段直径</P>
<P>%关联矩阵的形成<BR>for i=1:n<BR>    for j=1:m<BR>        if G2(j)==i<BR>            A(i,j)=-1;<BR>        elseif G3(j)==i<BR>            A(i,j)=1;<BR>        end<BR>    end<BR>end<BR>A1=A([2:n],:);%去掉气源点以后的基本关联矩阵</P>
<P>%进行迭代<BR>%求各个管段的导纳<BR>Q=[100 100 100 100 100 100 100 100 100 100 100 100 100 100 100]';%假设初始各个管段的流量都为100<BR>c=1;<BR>for w=1:c;<BR>Re=4*(Q./D)/(pi*v);%计算各个管段的Re<BR>B=0.11*(0.1./D+68./Re).^0.25;%计算各个管道的沿程阻力系数<BR>Length=G(:,5);%管段矩阵的管段长度<BR>K=6.26*10^7*(B./D.^5).*Length*(rn*T/Tn);%计算各个管段的管道常数<BR>dP=K.*Q.^2;%计算各个管段的压力降<BR>g=Q./dP;%计算各个管段的导纳<BR>Y=A1*diag(g)*A1';%计算管网的系数矩阵</P>
<P>%计算第一次迭代结束时各个节点的压力偏差<BR>L=N(:,2);%各个节点的流量<BR>delaP=Y\L((2:13),:);%迭代结束时各个节点的压力偏差<BR>P=P0-delaP%各个节点压力向量<BR>dP=-A1'*P;%重新计算各个管段的压力降<BR>%重新计算各个管段的流量<BR>S=ones(15,1);<BR>for a=1:m;<BR>  if dP(a)&gt;0<BR>    S(a)=1;<BR>  elseif dP(a)&lt;0<BR>    S(a)=-1;<BR>  end;<BR>end;<BR>Q=S.*(S.*(dP./K)).^0.5;%重新计算各个管段的流量<BR>Re=4*S.*(Q./D)/pi;%重新计算各个管段的Re<BR>B=0.11*(0.1./D+68./Re).^0.25;%计算各个管道的沿程阻力系数<BR>K=6.26*10^7*(B./D.^5).*Length*(rn*T/Tn);%计算各个管段的管道常数<BR>Q=(S.*(dP./K)).^0.5;%迭代结束时各个管段的流量<BR>end;<BR>但是怎么算结果都是第一次运算的结果。<BR>另外怎么逐次将前后两次计算的结果流量向量进行比较呀?<BR>在此先谢了!</P>
回复
分享到:

使用道具 举报

发表于 2006-1-7 17:50 | 显示全部楼层

回复:(newking)[求助]大侠们行行好,看看我的这个程...

<DIV class=quote><B>以下是引用<I>newking</I>在2006-1-7 15:20:09的发言:</B><BR>
<P>%进行迭代<BR>%求各个管段的导纳<BR>Q=[100 100 100 100 100 100 100 100 100 100 100 100 100 100 100]';%假设初始各个管段的流量都为100<BR><FONT color=#ff0000>c=1;<BR>for w=1:c;</FONT><BR></P></DIV>
<P>你不就给了迭代一次吗?</P>
发表于 2006-7-19 07:54 | 显示全部楼层
发表于 2006-8-28 13:44 | 显示全部楼层
newking ,好,我也做管网方面的,你有什么好的资料能共享一下吗?
谢谢!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-21 00:52 , Processed in 0.053329 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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