260 likes | 390 Views
第五章 瞬态电路数值方法. 电路分析知识可知. 即. 欧拉法. 令. 求一阶常微分方程初值问题. 的数值解. 可在给定区间作积分,其几何意义就是求区间. 上曲线. 下所包含的面积,利用矩形公式可近似计算面积。很容易导出离散化的积分公式为. 于是有. -----------------------------------------------------------------------------------------------. 将 x 在. 处展开台劳级数. 取前两项即为上式. 欧拉算法公式. 几何解释. 例如前边的 RC 电路. =.
E N D
第五章 瞬态电路数值方法 电路分析知识可知 即
欧拉法 令
求一阶常微分方程初值问题 的数值解 可在给定区间作积分,其几何意义就是求区间 上曲线 下所包含的面积,利用矩形公式可近似计算面积。很容易导出离散化的积分公式为 于是有 ----------------------------------------------------------------------------------------------- 将x在 处展开台劳级数 取前两项即为上式
欧拉算法公式 几何解释
例如前边的RC电路 = 求t=0.04s时的电压,故取步长h=0.01
当 t=0.04s时,其精确解为u(0.04)=0.96079,误差为 数量级 用状态变量法列出的方程组
四阶龙格—库塔法(四阶R—K法) 取台劳级数式的前四项,经过较繁的数学推导, 得出四个斜率及相应的增量 其公式为 于是四阶R—K法的计算公式为
几何意义 可以证明,四阶R—K法的局部截断误差比例于
前例中,取步长h=0.04,保留5位小数. 以取5位小数而言,与前所得精确值一样。由此可见,在同样精度下,四阶R—K法的步长h可取得大些。
误差与步长的选择 数值计算的误差有两类:一类是计算机本身的舍入误差;另一类是由于计算方法产生的截断误差。 舍入误差产生的因素很复杂,其中主要原因是由于计算机的有限字长所引起的,微机一般能够满足本课程所需计算精度的要求。 由于我们舍弃了台劳级数高阶导数项, 时刻的局部截断误差 会对以后的解产生影响。 的误差除去它本身的局部截断误差,还包含以前各时刻 解的方法引起的截断误差的影响。
根据什么原则来减小误差--反复试探法 ,可将步长折半进行运算,得到 。令 • 对于给定的精度 判断 是否 ,否则反复将步长折半进行运算, 直至 为止。这时取最终的 作为结果。 2.如果第二次计算时,已满足 ,且小得很多,可将步长h加倍, < 直到 为止。这时再将步长折半一次,计算结果即可达到预定的精度要求。
程序的组成 用数值分析法求解电路的程序应包括下列内容: 1.输入必要的数据:电路参数、初始值,步长,迭代次数即需要求解的时间点数目。 2.函数式,即电路的方程式,一般由函数定义语句或函数给出。 3.由计算公式求出响应各时间点上的数据。 4.打印输出:各时间点上的数据及曲线。
求RC电路的零状态响应 可以进入稳态。 程序 结果
gw1打印曲线函数 该函数所打印的曲线是以水平方向为响应值坐标,垂直方向为时间坐标。水平方向取51个点来代表函数值的51个等级,由字符型一维数组b[52]来存放空格和“*”,“*”所在位置表明函数值的等级。 函数的第一部分是求响应在各时间点上的最大值max值和最小值min,这样就可以将曲线最左及最右定为最小值和最大值位置。 函数的第二部分是按时间顺序求出各函数值的等级,即求出函数值处于51个等级中的位置。其公式是:
d=max-min (5-14) 此公式表明第i个时间点上的函数值da[i][2]与最小值min之差占d的几分之几,乘以51,则得到函数值在51个等 级中的位置。 公式中加1,是由于in的范围为1—51,当da[i][2]=min时,其等级应为1,而不是0。其后语句:如果in>51,则令 in=51,也是考虑in最大值只能为51而设置。 经过式(5-14)计算,得到in,对b数组的第in个元素赋以“*”,其余仍保持空格。打印b数组,就可以得到第i个时间点上的曲线的一个点。依此逐次处理一个函数值,求出一个in,打印一次数组b,直到第n个时间点,就得到全 部响应曲线, 流程图 图5-8 结果
RC电路的全响应 全响应=零输入响应+零状态响应 零输入响应 jx=2 零状态响应 jx=3 全响应 jx=4
Jx 的作用 for(jx=2;jx<=4;jx++) { t=0; x=0; if(jx!=3) x=vco; …… int jx; { float z; if(jx==2) z=1.0/tao*(-x); else z=1.0/tao*(vs(t)-x); return(z); } 流程图 图5-10
修改过的gw1函数 流程图如图5-11所示。因为要在一个时间坐标下打印出三种响应的曲线,在原来gw1函数的两部分中都增加了一 个外循环语句。 循环变量jx=2时为零输入响应,jx=3时为零状态响应,jx=4时为全响应。由gw1函数第一部分,先求出三种响 应数据中的最大值和最小值。 在gw1函数第二部分中,对da[i][2]值处理后打印“*”,表示零输入响应;对da[i][3]处理后打印“0”,表示零状态响应;对da[i][4]处理后打印“#”,表示全响应。因为同是在第i个时间点上,所以对后两个值打印“0”和“#”时, 不能换行。即在C语句中利用"\b"(退格符)实现。 流程图 图5-11
函数 E(t)定义 float E(t) float t; { float e; if((t>=0)&&(t<1)) e=3; else if((t>=1)&&(t<2)) e=5; else if((t>=2)&&(t<3)) e=8; else if((t>=3)&&(t<4)) e=7; else if((t>=4)&&(t<5)) e=-4; else if((t>=5)&&(t<6)) e=-1; else e=0; return e;
gw2函数 流程图如图5-15所示。gw2函数所打印的曲线以水平方向为时间坐标轴,垂直方向为响应值坐标轴。垂直方向用51个点代表函数值的51个等级。水平方向为时间坐标,等分为100个区间,每两点间为一个步长0.1s,其最小值 xmin=0s,最大值max=0.1。100=10s。在水平方向和垂直方 向每隔9个点注明一下坐标值。 gw2函数的第一部分是求出打印所需要的各数据,即求 出gr[53][102],ys[7],xs[12]各元素。 首先确定响应量的最大值ymax和最小值ymin。然后将时间范围值10等分,响应范围值5等分,分别赋予xs数组和 ys数组,以备打印坐标值用。
响应值进行处理 确定其在51个等级中的位置,连同相应的时间点值存入二维数组gr中。确定响应值y[l]和时间点值x[l]所在位置的公式为: (5-22) yy=ymax-ymin (5-23) xx=xmax-xmin 对gr[i][j]元素赋以“*”,其余gr元素仍为空格
打印坐标轴、坐标值和响应曲线 为了打印垂直坐标和坐标值,每隔9行依次打印ys[7-i],“0”一次,中间九行打印“·”。倒数第二行每隔九列打一个“0”,其余各列打“·”,作为水平坐标轴。最后一行打印时间坐标值,即数组xs各值。 在打印纵坐标的同时,每行的其他各列打印gr数组的各元素内容。 gr[i][j]中有值处元素为“*”,其余gr元素为空格 曲线分别如图5-16和图5-17所示
讨论 当电源电压即激励为有限长阶梯波时,电容电压波形(图5-17)与激励e(t)(图5-13(b))波形相比, 变得平滑了,故该RLC电路有平滑波形的作用。 由于该程序采用文本模式下打印“*”,在图5-17上观察并不理想。如果采用图形模式,按象素打印,效果会更好。附录四--Borland C 语言编写的R、L、C串联二阶电路的零输入响应程序。读者可仿照此方法,重做图5-13(a) 所示的二阶电路,观察其平滑波形的作用。