数值课程设计.doc
上传人:sy****28 上传时间:2024-09-10 格式:DOC 页数:46 大小:1.8MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

数值课程设计.doc

数值课程设计.doc

预览

免费试读已结束,剩余 36 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

四阶龙格—库塔算法数值计算课程设计1经典四阶龙格库塔法解一阶微分方程组1.1四阶龙格—库塔算法简述龙格—库塔方法适用于一般的应用,因为它非常精确、稳定,且易于编程。龙格—库塔算法的数学描述如下:用公式计算[a,b]上初值问题,的近似解。,1.2经典四阶龙格库塔法解一阶微分方程算法流程图图1-1四阶龙格库塔算法流程图四阶龙格—库塔算法1.3四阶龙格—库塔算法程序#include<iostream>#include<iomanip>usingnamespacestd;#defineN10intmain(){doublefun(double,double,double);doublemyfun(double,double,double);doublef[4],g[4];doubleh,a,b;doublex[N+1],y[N+1],t[N+1];cout<<"输入区间左右端点a,b:";cin>>a>>b;cout<<endl;h=(b-a)/N;//h为步长x[0]=6;y[0]=4;t[0]=a;for(intk=0;k<N+1;k++){f[0]=fun(t[k],x[k],y[k]);g[0]=myfun(t[k],x[k],y[k]);f[1]=fun(t[k]+h/2,x[k]+h/2*f[0],y[k]+h/2*g[0]);g[1]=myfun(t[k]+h/2,x[k]+h/2*f[0],y[k]+h/2*g[0]);f[2]=fun(t[k]+h/2,x[k]+h/2*f[1],y[k]+h/2*g[1]);g[2]=myfun(t[k]+h/2,x[k]+h/2*f[1],y[k]+h/2*g[1]);f[3]=fun(t[k]+h,x[k]+h*f[2],y[k]+h*g[2]);g[3]=myfun(t[k]+h,x[k]+h*f[2],y[k]+h*g[2]);x[k+1]=x[k]+h*(f[0]+2*f[1]+2*f[2]+f[3])/6;y[k+1]=y[k]+h*(g[0]+2*g[1]+2*g[2]+g[3])/6;t[k+1]=t[k]+h;}cout<<setw(12)<<"t"<<""<<setw(12)<<"x"<<""<<setw(12)<<"y"<<""<<endl;return0;}doublefun(doublet,doublex,doubley){doublef;f=x+2*y;returnf;}doublemyfun(doublet,doublex,doubley){doublef;f=3*x+2*y;returnf;}1.4四阶龙格—库塔算法求解例题在区间[0.0,0.2]上初值的条件下,求解微分方程组。1.5四阶龙格—库塔运行结果输入区间左右端点a,b:0.00.2txy012.86040.220.026.293554.539320.046.615625.119490.066.968535.743970.087.354746.416530.17.776977.141270.128.238147.92260.148.741418.765320.169.290219.67460.189.8882710.65610.210.539611.7158求得数值解为:。高斯列主元法解线性方程组2高斯列主元法解线性方程组2.1高斯列主元法解线性方程组算法说明首先将线性方程组做成增广矩阵,对增广矩阵进行行变换。对于元素,在第i列中,第i行以及以下的元素中选取绝对值最大的元素,将最大元素所在的行与i行交换,然后采取高斯消元法用新得到的所在的第i行消去第i行以下的元素。依次类推,直到,从而得到上三角矩阵。再进行回代过程。2.2高斯列主元法解线性方程组流程图图2-1高斯列主元法解线性方程组流程图2.3高斯列主元法解线性方程组程序代码#include<iostream>#include<cmath>usingnamespacestd;#definen4intmain(){inti,j,k,p,m;doubleA[n][n+1],x[n];doubleq,L,temp,max1;cout<<"请输入增广矩阵:"<<endl;for(i=0;i<n;i++){for(j=0;j<n+1;j++){cin>>A[i][j];}}for(k=0;k<n-1;k+