ImageVerifierCode 换一换
格式:DOC , 页数:45 ,大小:2.13MB ,
资源ID:2746580      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2746580.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(经典四阶龙格库塔法解一阶微分方程组.doc)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

经典四阶龙格库塔法解一阶微分方程组.doc

1、数值计算课程设计11.经典四阶龙格库塔法解一阶微分方程组1.1 运用四阶龙格库塔法解一阶微分方程组算法分析, ),(1kyxtf)2,2112 ghfhtfkkk,(3 yfxtfkkk),334 hgfhtfkkk),(1kyxtg)2,2112 ghfhtgkkk,(3 yfxtkkk),334 hgfhtgkkk)2(64311 gghyffxk 1kt经过循环计算由 推得 每个龙格-库塔方法都是由一个合适的泰勒方法推导而来,使得其最终全局误差为 ,一种折中方法是每次进行若干次函数求值,从而省去高阶导数计NOh算。4 阶龙格-库塔方法(RK4)是最常用的,它适用于一般的应用,因为它非常精

2、准,稳定,且易于编程。0,txy2,txy(1-1)(1-2)(1-3)(1-4)(1-5)(1-6)(1-7)(1-8)(1-9)(1-10)经典四阶龙格库塔法解一阶微分方程组21.2 经典四阶龙格库塔法解一阶微分方程流程图图 1-1 经典四阶龙格库塔法解一阶微分方程流程图1.3 经典四阶龙格库塔法解一阶微分方程程序代码:#include #include using namespace std;void RK4( double (*f)(double t,double x, double y),double (*g)(double t,double x, double y) ,double

3、 initial3, double resu3,double h)double f1,f2,f3,f4,g1,g2,g3,g4,t0,x0,y0,x1,y1;t0=initial0;x0=initial1;y0=initial2;f1=f(t0,x0,y0); g1=g(t0,x0,y0);f2=f(t0+h/2, x0+h*f1/2,y0+h*g1/2); g2=g(t0+h/2, x0+h*f1/2,y0+h*g1/2); f3=f(t0+h/2, x0+h*f2/2,y0+h*g2/2); g3=g(t0+h/2, 数值计算课程设计3x0+h*f2/2,y0+h*g2/2);f4=f(t

4、0+h, x0+h*f3,y0+h*g3); g4=g(t0+h, x0+h*f3,y0+h*g3);x1=x0+h*(f1+2*f2+2*f3+f4)/6; y1=y0+h*(g1+2*g2+2*g3+g4)/6;resu0=t0+h;resu1=x1;resu2=y1;int main()double f(double t,double x, double y);double g(double t,double x, double y);double initial3,resu3;double a,b,H;double t,step;int i;coutinitial0initial1in

5、itial2;coutab;coutstep;cout#include #define N 3using namespace std;void main()int i,j,k,n,p;float t,s,m,aNN,bN,xN;coutaij;coutbi;for(j=0;jfabs(apj)p=i; if(p!=j) /交换第 p 行与第 j 行for(k=0;k=0;i-) s=0.0;for(j=N-1;ji;j-)s=s+aij*xj;xi=(bi-s)/aii; cout#include#define N 2 / 非线性方程组中方程个数、未知量个数 #define Epsilon 0

6、.0001 / 差向量 1 范数的上限#define Max 100 /最大迭代次数using namespace std;const int N2=2*N;int main()void ff(float xxN,float yyN);/计算向量函数的因变量向量 yyNvoid ffjacobian(float xxN,float yyNN);/计算雅克比矩阵 yyNNvoid inv_jacobian(float yyNN,float invNN);/计算雅克比矩阵的逆矩阵 invvoid newdundiedai(float x0N, float invNN,float y0N,float

7、 x1N);/由近似解向量 x0 计算近似解向量 x1float x0N=2.0,0.25,y0N,jacobianNN,invjacobianNN,x1N,errorno高斯列主元法解线性方程组12rm;int i,j,iter=0;/如果取消对 x0 的初始化,撤销下面两行的注释符,就可以由键盘向 x0 读入初始近似解向量/for( i=0;ix0i;cout0;i-) for (k=i-1;k=0;k-)L=-augki/augii;for(j=N2-1;j=0;j-)augkj=augkj+L*augij;数值计算课程设计15for (i=0;i=0;i-)for(j=N2-1;j=0

8、;j-)augij=augij/augii;for (i=0;i=k 的近似积分结果逼近表,并以R(j+1,j+1)为最终解来逼近积分。R(j,0)=T(j), j=0,T(j)为区间逐次减半递推梯形求积分公式算出的结果;R(j,1)=S(j), j=1,S(j)为区间逐次减半递推辛普森求积分公式算出的结果;R(j,2)=B(j), j=2,B(j)为递推布尔求积分公式算出的结果;生成 的逼近表 ,并以 为最终解来逼近积分JK(,)RJK(1,)J)(,bafxdR逼近 存在于一个特别的下三角矩阵中,第 0 列元素 用基于 个(,)RJ (,0)RJ2Ja,b子区间的连续梯形方法计算,然后利用

9、龙贝格公式计算 。当K时,第 行的元素为1K(,1)(,1)(,)(,1)4KRJJRJK当 时,程序在第 行结束。|(,)1,|tol()4.2 龙贝格积分算法流程图4)1,(,), kjjkjj (4-1)(4-2)(4-3)数值计算课程设计19图 4-1 龙贝格积分算法流程图4.3 龙贝格积分算法程序代码#includeusing namespace std;#include#include#define f(x) (sin(x) /列举函数龙贝格积分20#define N_H 20#define MAX 10 /最大迭代次数#define a 0 /所求积分的上下限#define b

10、1#define epsilon 0.0001 /所需精度double Romberg(double aa,double bb,long int n)int i;double sum,h=(bb-aa)/n;sum=0;for(i=1;i #include#define MAX 4 double *diff(double X,int n) int i=0; double *H=NULL; H=(double*)malloc(n-1)*sizeof(double); for(i=1;i=1;k-) Mk=(Uk-1-Ck-1*Mk+1)/Bk-1; M0=3*(D0-dx0)/H0-M0/2;

11、MN=3*(dxn-DN-1)/HN-1-MN-1/2; for(k=0;k x1=0:.01:1; y1=polyval(S(1,:),x1-X(1);x2=1:.01:2; y2=polyval(S(2,:),x2-X(2);x3=2:.01:3; y3=polyval(S(2,:),x3-X(3);plot(x1,y1,x2,y2,x3,y3,X,Y,.)运行结果如下:三次样条插值26图 5-2 三次样条插值作图 数值计算课程设计276.M 次多项式曲线拟合6.1 M 次多项式曲线拟合算法说明:设 有 N 个点,横坐标是确定的。最小二乘法抛物线系数表示为kyx1),(,CBxAxfy2)

12、(求解 A,B 和 C 的线性方程组为 43221111322111NNNNkkkkkkkkNNNkkkxxxyxABCxxy整体上考虑近似函数 同所给数据点 (i=0,1,m)误差)(p),(i(i=0,1,m) 的大小,常用的方法有以下三种:一是误差iiiyxpr)(i=0,1,m)绝对值的最大值,即误差向量 的rmr).,(10范数;二是误差绝对值的和,即误差向量 r 的 1范数;三是误差平方和的算术平方根,即误差向量 r 的 2范数;前两种方法简单、自然,但不便于微分运算 ,后一种方法相当于考虑 2范数的平方,因此在曲线拟合中常采用误差平方和来 度量误差 (i=0,1,m)的整体大小。

13、i数据拟合的具体作法是:对给定数据 (i=0,1,,m),在取定的函数类),(iyx中,求 ,使误差 (i=0,1,m)的平方和最小。)(xpiiipr)(6-1)(6-2)M 次多项式曲线拟合286.2 M 次多项式曲线拟合流程图FT开始输入 x0、 0Axff)(xfT1)(x?x输出极小值点 和极小值x)(x结束图 6-1 M 次曲线多项式曲线拟合流程图6.3 M 次多项式曲线拟合算法程序代码#include #include #define MAX 20 void inv(double XMAXMAX,int n,double EMAXMAX) int i=0,j=0,k=0; double temp=0.0; 数值计算课程设计29for(i=0;i=0;i-) printf(“%lft“,Ci); printf(“n 拟合后的%d 次多项式为:n“,M); printf(“nP(x)=“); for(i=M;i=0;i-) if(i=0) printf(“%+.3lfn“,Ci); else printf(“%+.3lf*x%d“,Ci,i); getchar(); 6.4 M 次多项式曲线拟合算法程序调试结果:求解(-3,3) , (0,1) , (2,1) , (4,3)四个点拟合 2 次后的 2 后的多项式

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报