网站大量收购独家精品文档,联系QQ:2885784924

数值计算课程设计--典型数值算法的C++语言程序设计.doc

数值计算课程设计--典型数值算法的C++语言程序设计.doc

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目 录 1.经典四阶龙格库塔法解一阶微分方程组 1 1.1算法说明 1 1.2经典四阶龙格库塔法解一阶微分方程组算法流程图 1 1.3经典四阶龙格库塔法解一阶微分方程组程序调试 2 1.4 经典四阶龙格库塔法解一阶微分方程组程序代码 2 2. 高斯列主元法解线性方程组 4 2.1算法说明 4 2.2高斯列主元算法流程图 4 2.3高斯列主元程序调试 4 2.4 高斯列主元算法程序代码: 5 3.牛顿法解非线性方程组 9 3.1算法说明 9 3.2 牛顿法解非线性方程组算法流程图 9 3.3 牛顿法解非线性方程组算法程序调试 10 3.4牛顿法解非线性方程组算法程序代码 10 4.龙贝格求积分算法 14 4.1算法说明 14 4.2龙贝格求积分算法流程图 14 4.3龙贝格求积分算法程序调试 15 4.4龙贝格求积分算法程序代码 15 5.三次样条插值算法 16 5.1算法说明 16 5.2 三次样条插值算法(压紧样条)程序调试 16 5.3 三次样条插值算法(压紧样条)代码 16 6.M次多项式曲线拟合 19 6.1算法说明 19 6.2 M次多项式曲线拟合算法流程图 19 6.3 M次多项式曲线拟合算法程序调试 19 6.4 M次多项式曲线拟合算法程序代码: 20 7.不动点法解非线性方程 23 7.1算法说明 23 7.2 不动点法解非线性方程算法程序调试 23 7.3 不动点法解非线性方程算法程序代码: 23 8.二分法解非线性方程 25 8.1算法说明 25 8.2二分法解非线性方程算法程序调试 25 8.3 二分法解非线性方程算法程序代码: 25 9. 牛顿-拉夫森迭代解非线性方程 27 9.1算法说明 27 9.2牛顿-拉夫森迭代解非线性方程算法程序调试 27 9.3牛顿-拉弗森迭代解非线性方程算法代码 27 10. 拉格朗日插值 29 10.1算法说明 29 10.2拉格朗日插值算法程序调试 29 10.3 拉格朗日插值算法程序代码: 29 11.设计体会及今后的改进意见 31 11.1 设计体会 31 11.2 改进意见 31 参考文献 32 典型数值算法的C++语言程序设计 1.经典四阶龙格库塔法解一阶微分方程组 1.1算法说明 龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。开始,利用下面的计算方法生成近似序列 1.2经典四阶龙格库塔法解一阶微分方程组算法流程图 1.3经典四阶龙格库塔法解一阶微分方程组程序调试 将编写好的代码放在VC6.0环境中编译,直接执行程序便可以得到求解微分方程,并且的结果。如下图: 然后将这些点进行插值或者拟合后就可以得到微分方程的解。 1.4 经典四阶龙格库塔法解一阶微分方程组程序代码: #include iostream #include iomanip using namespace std; double Runge_Kuta( double (*f)(double x, double y), double x0, double y0, double xn, long step ) { double k1,k2,k3,k4,result; double h=(xn-x0)/step; if(step=0) return(y0); if(step==1) { k1=f(x0,y0); k2=f(x0+h/2, y0+h*k1/2); k3=f(x0+h/2, y0+h*k2/2); k4=f(x0+h, y0+h*k3); result=y0+h*(k1+2*k2+2*k3+k4)/6; } else { double x1,y1; x1=xn-h; y1=Runge_Kuta(f, x0, y0, xn-h,step-1); k1=f(x1,y1); k2=f(x1+h/2, y1+h*k1/2); k3=f(x1+h/2, y1+h*k2/2); k4=f(x1+h, y1+h*k3); result=y1+h*(k1+2*k2+2*k3+k4)/6; } return(result);} int main() { double f(double x, double y); double x0,y0; double a,b; cout请输入初值x0,y0:; cinx0y0; cout请输入区间:; cinab; //double x0=0,y0=1; double x,y,step; long i; cout请输入步长:; cinstep;

文档评论(0)

ze122230743 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档