- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XUEHAO-XINGMING-迭代法在电路求解中的应用
迭代法在求解非线性电路中的应用姓名:王** 学号:5************ 班级:F******摘要:本论文主要讨论数值分析法中的“牛顿法”和“共轭梯度法”在非线性电阻电路的应用。首先回顾数值分析法和非线性电阻电路,然后简要引入两种数值分析方法并给出牛顿法的C++程序实现,最后,讨论这两种方法在非线性电路中的应用。关键词:数值分析法,牛顿法,共轭梯度法,非线性电阻电路正文:教材《电路基础》第四章4.6“数值分析法”这一小节中,有简略提到用牛顿法和和共轭梯度法来解决非线性电阻电路方程。书中有论述牛顿法在电路中的应用,却没有对共轭梯度法的应用做分析。所以我课下查阅了一些资料,大致总结了这两种方法在电路求解上的应用。第一部分:牛顿法及其应用【算法思路】:如下图(1)图(1)牛顿法求解图示选择一个接近函数f(x)零点的x0,计算相应的f(x0)和切线斜率f(x0)(这里f表示函数f的导数)。然后我们计算穿过点(x0,f(x0))并且斜率为f(x0)的直线和x轴的交点的x坐标,也就是求如下方程的解: (1.1)我们将新求得的点的x坐标命名为x1,这样,按照迭代产生一个级数xn。【迭代公式】:迭代公式如下: (1.2)所以,对于任意非线性电路方程f(x),诸如f(x) = cos(x) ??x3,f(x) = e2x+x2等等,都可以用以上公式来计算得到一定精确度的x。【精度判定】:教材泰勒展开来证明了,如果f是连续的,并且待求的零点x是孤立的,那么在零点x周围存在一个区域,只要初始值x0位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果f(x)不为0, 那么牛顿法将具有平方收敛的性能.。所以,粗略的说,这意味着每迭代一次,运用牛顿法得到的结果的有效数字将增加一倍。如下面的例1:求方程f(x) =的根。两边求导,得f?(x) = 由于-1 ≤ cos(x) ≤ 1(对于所有x),则-1 ≤?x3?≤ 1,即-1 ≤?x?≤ 1,可知方程的根位于0和1之间。我们从x0?= 0.5开始。=1.112141637097=0.909672693736=0.867263818209=0.865477135298=0.865474033111=0.865474033102我们可清晰地看出,每迭代一次,运用牛顿法得到的结果的有效数字将增加一倍。所以,对于精度要求精确到10-n的数据,我们最多进行lg2n次运算就可以达到满足要求。【程序实现】:由于牛顿法迭代公式中涉及到了非线性函数的求导,并需要进行多次迭代,计算较为复杂,所以,我们可以设计一个计算机程序来让计算机处理这一计算过程。代码(c++)如下:#include stdlib.h#include math.h#include stdio.h#define xx 0.5#define f(x) (cos(x)-(x)*(x)*(x))#define ff(x) (-sin(x)-3*(x)*(x))#define precision 0.000000000001#define sp system(PAUSE)int main(){ double x,tem; int n=0; tem=xx; x=tem-f(tem)/ff(tem); while (fabs(x-tem)precision) { tem=x; x=tem-f(tem)/ff(tem); n++; } printf(Solution:x=%.12f\n,x); printf(Time:n=%d\n,n); sp; return 0;}对于不同的函数f(x)和不同的精度要求,只需要修改define中的f(x),F(x),x0,precision即可。【举例应用】:用牛顿法求解图1.3所示电路的电压u2=x和电流i2,其中iS=0.673A,二极管的电压—电流关系为:i2 =()A。(其中i2为二极管所在支路电流,u2为二极管)图1.3 例4.6.1图解: 由电路方程可得KCL方程is = i1 + i2将i1= x和i2 = 代入并整理,得到以x为变量的非线性电路方程f(x) = 对f(u2)求导,得 = 因此,牛顿法的迭代公式为式中,上标表示迭代次数。取初始值x= 0时的迭代结果为u2=x=0.86547403310161442000V解毕。程序运行结果如下:图(2)牛顿法求解程序运行图第二部分:共轭梯度法算法简【算法思路】:把工个性与最速下降法(本文不讨论)结合。利用已知处的梯度构造一组共轭方向,并沿着这组方向来搜索,以至求出目标函数的极小点。【迭代公式与精度判定】:设我们要求解下列线性系统:Ax?=?b,其中n*n矩阵A是对称的(也即,AT?=?A)、正定的(即,xTAx? 0对于所有非0向量x属于Rn),并且是实
文档评论(0)