使用C语言解常微分方程CODE

上传人:飞****9 文档编号:145735890 上传时间:2020-09-22 格式:DOCX 页数:24 大小:657.33KB
返回 下载 相关 举报
使用C语言解常微分方程CODE_第1页
第1页 / 共24页
使用C语言解常微分方程CODE_第2页
第2页 / 共24页
使用C语言解常微分方程CODE_第3页
第3页 / 共24页
使用C语言解常微分方程CODE_第4页
第4页 / 共24页
使用C语言解常微分方程CODE_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《使用C语言解常微分方程CODE》由会员分享,可在线阅读,更多相关《使用C语言解常微分方程CODE(24页珍藏版)》请在金锄头文库上搜索。

1、.解常微分方程姓名: Vincent年级: 2010,学号: 1033* ,组号: 5(小组),4(大组)1. 数值方法 :我们的实验目标是解常微分方程,其中包括几类问题。一阶常微分初值问题,高阶常微分初值问题,常微分方程组初值问题,二阶常微分方程边值问题,二阶线性常微分方程边值问题。对待上面的几类问题,我们分别使用不同的方法。? 初值问题使用 龙格 -库塔 来处理? 边值问题用打靶法来处理? 线性边值问题有限差分法初值问题我们分别使用? 二阶 龙格 - 库塔 方法? 4 阶 龙格 - 库塔 方法来处理一阶常微分方程。理论如下:对于这样一个方程y (t)f (t, y)当 h 很小时,我们用泰

2、勒展开,k1hf (tk , yk )k2hf (tka1h, ykLkihf (tkai h, yk当我们选择正确的参数对于二阶,我们有:b1 1k1)i1hbij k j )j1aij,bij 之后,就可以近似认为这就是泰勒展开。y( th)y( t)h Af 0Bf 1其中f0f (t, y)f1f (tPh, yQhf0 )经过前人的计算机经验,我们有,.选择 A=1/2,B=1/2,则 P=1,Q=1,于是又如下形式,这也使休恩方法的表达式。所以我们称其为龙格(库塔)休恩方法hy(th)y(t)f (t , y)f (th, yhf (t, y)2对于 4 阶龙格方法,我们有类似的想

3、法,我们使用前人经验的出的系数,有如下公式yn 1ynh2k2 2k3 k4 ),(k16k1f ( tn , yn ),hhk2f (tn2 , yn2 k1 ),k3f (tnh , ynh k2 ),22k4f (tnh, ynhk3 ).对于高阶微分方程及微分方程组我们用? 4 阶龙格 -库塔方法来解对于一个如下的微分方程组y1f1 (t, y1,L , yn ),Lynfn (t , y1,L , yn ).y1 (t0 )y1,0 ,Lyn (t0 ) yn ,0我们可以认为是一个一阶向量微分方程,所以可以用龙格-库塔方法的向量形式解。对于一个高阶的微分方程,形式如下:y( n )

4、( x)fL( n 1),t, y, y , , yy(t0 )0 ,Ly( n1) (t0 )n 1我们可以构建出一个一阶的微分方程组,令y1 (t)y (t ),Lyn 1(t)y(n1) (t)则有.yn1( x)f t, y, y1 ,L , yn 1 ,yn2 ( x)yn 1 ( x),My2 ( x)y2 (x),y (x)y1( x)y(t0 )0 ,其中,初值为y1 (t0 )1 ,Lyn 1(t0 )n1所以我们实际只要解一个微分方程组y1f1 (t, y1,L, yn ),y1(t0 )y1,0 ,L其中初值为Lynfn (t , y1,L, yn ).yn (t0 )y

5、n,0使用 4 阶龙格 -库塔方法,对于 k1,n有,ym 1ymhfk,12 fk ,22 fk ,3+fk,4kk6其中 , h 是步长, m是递归的点。fk ,1fk (tm, y1m, y2m,., ynm )ff(th , ymh f, ymh f,., ymh f)k ,2km2121,1222,1n2n,1fk ,3fk(tmh , y1mhf1,2 , y2mhf2,2 ,., ynmhfn,2 )2222fk ,2fk (tmh, y1mhf1,3 , y2mhf2,3 ,., ynmhfn,3 )使用这个向量形式的龙格-库塔方法我们便可就出方程的数值解。边值问题对于边值问题

6、,我们分为两类? 一般的边值问题? 线性边值微分方程一般的边值问题,我们是使用打靶法来求解,对于这样一个方程x f (t , x, x), atb边界为, x(a), x(b).主要思路是,化成初值问题来求解。我们已有.x(a),我们估计 x(a)mk利用初值问题方法求解出x(b)sk我们用割线法迭代,使得在进行一定数量的步骤后,sk ;这样我们便可求出方程的解。? 线性微分方程边值问题对于这样的问题,我们可以使用一个更加高效的方法,有限差分法。对于如下方程x (t )p(t) x(t)q(t )x(t )r (t )ta, bx(a), x(b)其中 p, q, r 是 t 的函数我们对其进

7、行差分tnb aa nh, hNh 是步长当 h 足够小时,我们有x (tn )xn 12xnxn 1h2x (tn )xn 1xn 1 .2h这样的话,我们的微分方程可以写成,x2xxh2p(t) xn 1xn 1q(t)xnr (t)0n 1nn 1n2hnn1h2qnxn1h2L2 pn xn 12 h2 pn xn 1hrn , n 1, , N 1x0, xN于是我们得到了个线性方程组.2hr2h q112p10h2hx112 p22 hq212 p2x2h pnh pn12 h2 qn1xn22xN 2h pN 22 h2qN 21 h pN 21xN 1r22h pN 12 h2qN 1012其中hhe0( 12 p1 ) , en( 12 pN 1)这样的话我们求解出x对于上面的矩阵,我们可以分解出两个三角阵,然后回代求解便可。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号