数值计算课程设计
微分方程数值解法C语言-课程设计

微分方程数值解法C语言-课程设计微分方程数值解法C语言由于对matlab语言不熟悉,所以还是采用C。
前面几个都比较简单,最后一个需要解非其次方程组。
采用高斯—Jordan消元法(数值分析)求逆解方程组,也再一次体会到算法本身的重要性,而不是语言。
当然,矩阵求逆的算法也在100个经典的C语言算法之列。
不过偏微分方程数值解的内容的确比较高深,我只能停留在编这种低级的东西的自娱自乐中。
不过解决计算机、数学、信计专业的课程设计还是足够了。
由于篇幅所限,只把源代码粘贴在这。
一:预报矫正格式#include <math.h>#include<iostream>#include<stdlib.h>double count_0( double xn,double yn){//矫正格式double s;s=yn+0.1*(yn/xn*0.5+xn*xn/yn*0.5);return s;}double count_1(double xn,double yn,double y0){//预报格式double s;s=yn+0.05*((yn/xn*0.5+xn*xn/yn*0.5)+(y0/xn*0.5+xn*xn/y0*0.5));return s;}void main(){//计算,步长为0.1,进行10次计算,设初始值double xn=1,yn=1;int i=1;while(i<=10){printf("%16f ,%1.16f ,%1.16f\n",xn,yn,count_1(xn,yn,count_0(xn,yn)));xn=xn+0.1;yn=count_1(xn,yn,count_0(xn,yn));i++;}}二显示差分格式#include<iostream>#include<math.h>#include<stdlib.h>main(){double a[6][11];//初始化;for(int i=0;i<=5;i++){a[0]=0;a[10]=0;}for(int j=1;j<10;j++){double p=3.14*j*0.1;a[0][j]=sin(p);}//按显示格式计算for(i=1;i<=5;i++)for(j=1;j<10;j++)a[j]=a[i-1][j-1]+a[i-1][j+1]; //输出计算好的矩阵for(i=0;i<=5;i++){for(j=0;j<11;j++)printf("%1.10f ",a[j]);printf("\n");}}三龙阁库塔格式#include <math.h>#include<iostream>#include<stdlib.h>double count_k( double xn,double yn){ double s;s=yn/xn*0.5+xn*xn/yn*0.5;return s;}void main(){//步长为0.1double xn=1,yn=1;int i=1;while(i<=11){printf("%f ,%f\n",xn,yn);double k1=count_k(xn,yn);double k2=count_k(xn+0.05,yn+0.05*k1); double k3=count_k(xn+0.05,yn+0.05*k2); double k4=count_k(xn+0.01,yn+0.1*k3); yn=yn+0.1/6*(k1+2*k2+2*k3+k4);xn=xn+0.1;i++;}}四 CRANK--NICOLSON隐式格式#include<iostream>#include<math.h>#include<stdlib.h>double Surplus(double A[],int m,int n);double * MatrixInver(double A[],int m,int n);double * MatrixOpp(double A[],int m,int n) /*矩阵求逆*/ {int i,j,x,y,k;double *SP=NULL,*AB=NULL,*B=NULL,X,*C;SP=(double *)malloc(m*n*sizeof(double));AB=(double *)malloc(m*n*sizeof(double));B=(double *)malloc(m*n*sizeof(double));X=Surplus(A,m,n);X=1/X;for(i=0;i<m;i++)for(j=0;j<n;j++){for(k=0;k<m*n;k++)B[k]=A[k];{for(x=0;x<n;x++)B[i*n+x]=0;for(y=0;y<m;y++)B[m*y+j]=0;B[i*n+j]=1;SP[i*n+j]=Surplus(B,m,n);AB[i*n+j]=X*SP[i*n+j];}}C=MatrixInver(AB,m,n);return C;}double * MatrixInver(double A[],int m,int n) /*矩阵转置*/ {int i,j;double *B=NULL;B=(double *)malloc(m*n*sizeof(double));for(i=0;i<n;i++)for(j=0;j<m;j++)B[i*m+j]=A[j*n+i];return B;}double Surplus(double A[],int m,int n) /*求矩阵行列式*/ {int i,j,k,p,r;double X,temp=1,temp1=1,s=0,s1=0;if(n==2){for(i=0;i<m;i++)for(j=0;j<n;j++)if((i+j)%2) temp1*=A[i*n+j]; else temp*=A[i*n+j];X=temp-temp1;}else{for(k=0;k<n;k++){for(i=0,j=k;i<m,j<n;i++,j++) temp*=A[i*n+j];if(m-i){for(p=m-i,r=m-1;p>0;p--,r--) temp*=A[r*n+p-1];}s+=temp;temp=1;}for(k=n-1;k>=0;k--){for(i=0,j=k;i<m,j>=0;i++,j--) temp1*=A[i*n+j];if(m-i){for(p=m-1,r=i;r<m;p--,r++) temp1*=A[r*n+p];}s1+=temp1;temp1=1;}X=s-s1;}return X;}void initmat_A(double a[][9],double r){ for(int i=0;i<9;i++)for(int j=0;j<9;j++)a[j]=0;for(i=0;i<9;i++){a=1+r;if(i!=8) a[i+1]=-0.5*r;if(i!=0) a[i-1]=-0.5*r;}}void initmat_B(double b[][9],double r){ for(int i=0;i<9;i++)for(int j=0;j<9;j++)b[j]=0;for( i=0;i<9;i++){b=1-r;if(i!=8) b[i+1]=0.5*r;if(i!=0) b[i-1]=0.5*r;}}void initmat_C(double C[][9]){ for(int i=0;i<9;i++)for(int j=0;j<9;j++)C[j]=0;}void main(){double a[100][11];for(int i=0;i<100;i++)for(int j=0;j<11;j++)a[j]=0;//初始化;for(i=0;i<100;i++){a[0]=0;a[10]=0;}for(int j=1;j<10;j++){double p=4*3.14*j*0.1;a[0][j]=sin(p);}//取h=0.1*3.14,r=0.0005,t=0.0001*3.14*3.14; //得到矩阵a和矩阵bdouble A[9][9];initmat_A(A,0.005);double B[9][9];initmat_B(B,0.005);//B矩阵与Un相乘,en是0;double C[9][9];initmat_C(C);double *A_;A_=MatrixOpp(A[0],9,9);//A矩阵求逆;//A逆*Bfor(i=0;i<9;i++)for(j=0;j<9;j++)for(int s=0;s<9;s++)C[j]+=A_[i*9+s]*B[s][j];//填写a表格for(i=0;i<100;i++){for(j=1;j<10;j++)for(int s=0;s<9;s++)a[i+1][j]+=a[s+1]*C[j-1][s];}//输出表格for(i=0;i<100;i++){for(j=0;j<11;j++)printf("%1.8f ",a[j]);printf("\n");}printf("\n"); printf("\n");//利用精确解,求出表格for(i=0;i<100;i++){for(j=0;j<11;j++)printf("%1.8f",exp(-16*0.0001*0.0005*3.14*3.14*i)*sin(4*j*0.1*3.14));printf("\n");}}。
现代数值分析教学设计

现代数值分析教学设计
引言
现代数值分析作为一门交叉学科,研究了使用数值方法解决数学和工程问题的
算法和理论。
它是许多科学和工程领域中的基础课程之一,其应用范围越来越广泛,并且受到越来越多的关注。
随着计算机技术的发展,现代数值分析课程的内容和教学方法也在改变。
这篇文章将介绍如何设计一门现代数值分析课程,以便更好地满足学生的需求。
课程设计的目标
该课程的目标是使学生:
1.掌握数值方法的基本原理和理论。
2.学会使用计算机来解决数学和工程问题。
3.熟悉并理解数值分析中所使用的算法和技术。
4.能够独立开发数值程序并解决实际问题。
5.通过实践和课程项目来展示他们所学的知识和技能。
适用于的人群
该课程适用于计算机科学、数学、物理、化学和各种工程专业的本科生和研究生。
学生需要对数学和编程有一定的基础。
课程大纲
该课程包含以下主题:
1.数值计算的基础知识
2.插值和拟合
1。
《数值分析》课程设计报告

《数值分析》课程设计实验报告龙格—库塔法分析Lorenz 方程200820302033 胡涛一、问题叙述考虑著名的Lorenz 方程()dx s y x dt dy rx y xz dtdz xy bz dt ⎧=-⎪⎪⎪=--⎨⎪⎪=-⎪⎩其中s ,r ,b 为变化区域内有一定限制的实参数,该方程形式简单,表面上看并无惊人之处,但由该方程揭示出的许多现象,促使“混沌”成为数学研究的崭新领域,在实际应用中也产生了巨大的影响。
二、问题分析Lorenz 方程实际上是一个四元一阶常微分方程,用解析法精确求解是不可能的,只能用数值计算,最主要的有欧拉法、亚当法和龙格- 库塔法等。
为了得到较高精度的,我们采用经典四阶龙格—库塔方法求解该问题。
三、实验程序及注释(1)算法程序function [T]=Runge_Kutta(f,x0,y0,h,n) %定义算法,其中f 为待解方程组,x0是初始自变量,y0是初始函数值,h 是步长,n 为步数if nargin<5n=100; %如果输入参数个数小于5,则步数n=100endr=size(y0);r=r(1); %返回初始输出矩阵的行列数,并将值赋给r(1)s=size(x0);s=s(1); %返回初始输入矩阵的行列数,并将值赋给s(1)r=r+s;T=zeros(r,n+1);T(:,1)=[y0;x0];for t=2:n+1 %以下是具体的求解过程k1=feval(f,T(1:r-1,t-1));k2=feval(f,[k1*(h/2)+T(1:r-1,t-1);x0+h/2]);k3=feval(f,[k2*(h/2)+T(1:r-1,t-1);x0+h/2]);k4=feval(f,[k3*h+T(1:r-1,t-1);x0+h]);x0=x0+h;T(:,t)=[T(1:r-1,t-1)+(k1+k2*2+k3*2+k4)*(h/6);x0];end(2)主程序function dy=fun(x) %定义函数s=10.0; %给参数s,r,b赋值r=28.0;b=8.0/3;dy(1)=s*(x(2)-x(1)); %Lorenz方程表达式dy(2)=(r*x(1)-x(3)*x(1)-x(2));dy(3)=x(1)*x(2)-b*x(3);dy=dy';(2)运行程序T=Runge_Kutta('fun',0,[10;10;10],0.01,5000); %调用前面的算法程序plot3(T(1,:),T(2,:),T(3,:)); %显示三分量的关系图axis([-20 20 -50 50 0 50]) %定义坐标轴长度view(3) %设定观察角度四、实验数据结果及分析(1)各初始变量相同时的图像分析各初始变量取相同的值[10,10,10],运行上述程序后,得到如下图像:从图中可以看出,各初始变量相同时,曲线总是被吸引回奇怪吸引子附近作来回跳跃。
《数值分析》课程教案

《数值分析》课程教案数值分析课程教案一、课程介绍本课程旨在介绍数值分析的基本概念、方法和技巧,以及其在科学计算和工程应用中的实际应用。
通过本课程的研究,学生将了解和掌握数值分析的基本原理和技术,以及解决实际问题的实用方法。
二、教学目标- 了解数值分析的基本概念和发展历程- 掌握数值计算的基本方法和技巧- 理解数值算法的稳定性和收敛性- 能够利用数值分析方法解决实际问题三、教学内容1. 数值计算的基本概念和方法- 数值计算的历史和发展- 数值计算的误差与精度- 数值计算的舍入误差与截断误差- 数值计算的有效数字和有效位数2. 插值与逼近- 插值多项式和插值方法- 最小二乘逼近和曲线拟合3. 数值微积分- 数值积分的基本原理和方法- 数值求解常微分方程的方法4. 线性方程组的数值解法- 直接解法和迭代解法- 线性方程组的稳定性和收敛性5. 非线性方程的数值解法- 迭代法和牛顿法- 非线性方程的稳定性和收敛性6. 数值特征值问题- 特征值和特征向量的基本概念- 幂迭代法和QR方法7. 数值积分与数值微分- 数值积分的基本原理和方法- 数值微分的基本原理和方法四、教学方法1. 理论讲授:通过课堂授课,讲解数值分析的基本概念、原理和方法。
2. 上机实践:通过实际的数值计算和编程实践,巩固和应用所学的数值分析知识。
3. 课堂讨论:组织学生进行课堂讨论,加深对数值分析问题的理解和思考能力。
五、考核方式1. 平时表现:包括课堂参与和作业完成情况。
2. 期中考试:对学生对于数值分析概念、原理和方法的理解程度进行考查。
3. 期末项目:要求学生通过上机实验和编程实践,解决一个实际问题,并进行分析和报告。
六、参考教材1. 《数值分析》(第三版),贾岩. 高等教育出版社,2020年。
2. 《数值计算方法》,李刚. 清华大学出版社,2018年。
以上是《数值分析》课程教案的概要内容。
通过本课程的研究,学生将能够掌握数值分析的基本原理和技术,并应用于实际问题的解决中。
《数值分析课程设计》课程教学大纲(本科)

《数值分析课程设计》教学大纲课程编号:sx080课程名称:数值分析英文名称:Numerical Analysis课程类型:实践教学课程要求:必修学时/学分:1周/I开课学期:4适用专业:数学与应用数学授课语言:中文课程网站:超星泛雅平台一、课程设计性质与任务数值分析课程设计是一门借助计算机实现数值计算方法设计的课程。
通过数值算法基本理论和实现能力的训练,具有利用计算机实现算法的能力,具有分析和优化算法能力;通过查找文献熟悉科学与工程计算问题中的领先的数值算法理论,形成自主学习以及独立设计和运用数值算法解决实际问题的能力。
二、课程设计与其他课程或教学环节的联系先修课程:《数值分析》,《C语言程序设计》后续课程:《数学模型》、《微分方程数值解法》联系:《数值分析》是数值分析课程设计的理论基础,《C语言程序设计》是数值分析课程设计实现工具之一。
数值分析课程设计为《微分方程数值解》的算法实现提供算法基础,为《数学模型》中数学问题的求解提供了一种重要的实现手段。
三、课程设计教学目标1 .通过应用C语言、Matlab等计算机语言,使学生具有编程实现数值算法并解决实际问题的能力;(支撑毕业要求指标点5.1)2.通过基本算法原理的学习与实现,具有优化算法和根据具体问题改进算法的能力;(支撑毕业要求指标点3.3)3.通过查阅资料和应用数值算法解决实际科学问题,形成学生的自主学习意识和有效的学习方法。
(支撑毕业要求指标点12.1)四、教学内容、基本要求与学时分配课程思政元素案例解析:1 .崇尚科学,敢于创新通过从牛顿法到其变形方法这样一个循序渐进的算法改进过程,来向学生阐释什么叫科学研究无止境,从而培养学生的永不满足的科学精神,激发学生努力学习,掌握好知识,敢于创新的精神。
2.热爱祖国,奋发图强在讲授数值积分的梯形公式和辛普森公式时,将会给同学们介绍华罗庚先生写的一本书——《数值积分及其应用》,突出介绍华罗庚先生与王元教授合作在数值积分方法与应用等的研究成果,并同时介绍了华罗庚先生的生平事迹,特别是他放弃美国优越生活条件和良好的科研环境,克服重重困难回到祖国怀抱,投身我国数学科研事业,为中国数学事业发展做出了杰出的贡献,被誉为“人民的数学家”,激发学生的爱国热情。
数值计算方法教学大纲

数值计算方法教学大纲第一部分:使用说明一、课程编号:10322016二、课程性质与特点:数值计算方法是理工科本科或大专各专业的选修课程。
本课程主要介绍计算机上常用的数值计算方法的基本原理及计算过程,包括非线性方程求根,线性方程组的直接法和迭代法,多项式插值逼近,最小二乘拟合,数值微分和数值积分等内容。
学习和掌握计算机上常用的数值计算方法已成为现代科学教育的重要内容。
三、在专业教学计划中的地位和作用:本课程为高等学校非师范专业学生的一门选修课,是为适应数学教育改革和新形势的发展而开设的一门新课程。
主要培养学生基本的数值计算思想及常用数值方法使用,强调学生的学习知识与计算机的结合能力的培养。
四、教学目的:数值计算方法是物理学的新的非常重要的分支,它与理论物理和实验物理一起构成现代物理学的整体。
本课程作为物理系本科四年级的课程是非常重要的。
通过该课程的学习,使学生掌握到计算物理学中常用的计算方法,并紧密结合物理学理论,在计算机上进行数值实验,从而培养学生通过数值计算解决物理问题的能力,增强用程序设计语言进行编程的能力,培养学生的独立工作能力。
五、学时与学分:本课程授课45学时,利用课余时间指导学生上机实验10学时,3学分,每周3学时。
六、教学方法:1、课堂讲授重点讲述数值计算的基本概念,基本方法,介绍数值计算的数学和工程应用,对重点和难点详细分析和深入讨论,讲清解决问题的思路和关键方法,并布置一定的课外作业,强化训练,加强理论与实践的结合。
2、上机编程为加深学生对课程的认识,课程包含10学时的上机实验,通过上机实验,学生自己编写程序,进行数值计算。
培养学生自主学习的能力,使学生通过实践活动掌握综合运用所学的知识独立解决实际物理、数学数值计算基本问题的能力。
3、课外作业和资料阅读将习题和讨论学习与利用参考书和资料通过自学进行主动学习及实践结合起来,培养学生自己阅读和学习的能力,调动学生的积极因素。
七、考核方式:考查课程。
数值计算实验教案
2
教学
目的
要求
使学生加深对非线性方程牛顿法及加速迭代法等的理解,会用C及Excel软件求解一些简单的非线性方程。
教学
重点
难点
教学重点:各种算法的构造思路、算法的软件实现
教学难点:各种算法的收敛性及误差控制
实验软件
Excel、TURBOC2.0
教
学
内
容
提
纲
1.用Excel及C完成教材P23例4(牛顿法)和P25例5(弦割法)实验。
课外
学习
要求
实验报告,设计求收敛阶的实验。
教 学 后 记
学生基本能完成各实验,但对多种方法的比较不太清楚,这说明学生掌握了基本的计算方法,但对各种方法优缺点的理解不够深入,提醒任课教师在教学中注意多种计算方法的比较,一方面可以加深对每种算法的理解,另一方面还可提高学生综合分析问题的能力。
授课
内容
实验四:线性方程组直接法——高斯顺序消元法(LU分解法),列主元消去法
****学院
实 验教 案
开课单位:数学系
课程名称:数值计算方法
专业年级:2005级
任课教师:周均
教材名称:数值计算方法(李有法)
2007——2008学年第1学期
授课
内容
实验一、数值稳定性及算法设计原则
课时安排
2
教学
目的
要求
熟悉Excel及C语言程序的软件环境及基本操作,验证数值稳定性,体验数值计算与常见数学计算的异同,理解多项式的计算的两个算法的异同。
2.用Excel完成教材P28例7,注意埃特肯加速法的误差控制,并比较这些方法在相同精度情况下的迭代次数,从而粗略说明收阶。
3.用下列方法求方程 的近似根,要求误差不超过 ,并比较计算量。
《数值计算方法》课程教学大纲
《数值计算方法》课程教学大纲一、课程基本信息二、课程教学目标数值计算方法是大规模科学模拟计算领域的一门重要的基础课,具有很强的应用性。
通过对本课程的学习及上机实习,使学生掌握掌握数值计算的基本概念、基本方法及其原理,培养应用计算机从事科学与工程计算的能力。
具体能力目标如下:具有应用计算机进行科学与工程计算的能力;具有算法设计和理论分析能力;熟练掌握并使用数学软件,处理海量数据,进行大型数值计算的能力。
三、教学学时分配《数值计算方法》课程理论教学学时分配表《数值计算方法》课程实验内容设置与教学要求一览表四、教学内容和教学要求第一章数值分析与科学计算引论(4学时)(一)教学要求1.了解误差的来源以及舍入误差、截断误差的定义;2.理解并掌握绝对误差、相对误差、误差限和有效数字的定义和相互关系;3.了解函数计算的误差估计,误差传播、积累带来的危害和提高计算稳定性的一般规律。
(二)教学重点与难点教学重点:误差理论的基本概念教学难点:误差限和有效数字的相互关系,误差在近似值运算中的传播(三)教学内容第一节数值分析的对象、作用与特点1.数学科学与数值分析2.计算数学与科学计算3. 计算方法与计算机4. 数值问题与算法第二节数值计算的误差1.误差的来源与分类2.误差与有效数字3. 数值运算的误差估计第三节误差定性分析与避免误差危害1.算法的数值稳定2.病态问题与条件数3. 避免误差危害第四节数值计算中算法设计的技术1.多项式求值的秦九韶算法2.迭代法与开方求值本章习题要点:要求学生完成作业10-15题。
其中概念题15%,证明题5%,计算题60%,上机题20%第二章插值法(12学时)(一)教学要求1.掌握插值多项式存在唯一性条件;2.熟练掌握Lagrange插值多项式及其余项表达式,掌握基函数及其性质;3.能熟练使用均差表和差分表构造Newton插值公式;4.能理解高次插值的不稳定性并熟练掌握各种分段插值中插值点和分段的对应关系;5.熟练掌握三次样条插值的条件并能构造第一和第二边界条件下的三次样条插值。
数值计算方法教案数值积分(有添加哦
数值积分教案教学目标:1. 理解数值积分的概念和意义;2. 掌握数值积分的基本方法和原理;3. 能够运用数值积分解决实际问题。
教学内容:1. 数值积分的概念和意义;2. 数值积分的基本方法:梯形法、辛普森法、高斯法等;3. 数值积分的原理:数值积分近似解的误差估计;4. 数值积分的应用:解决实际问题,如物理、工程等领域中的积分计算。
教学方法:1. 讲授法:讲解数值积分的概念、方法和应用;2. 案例分析法:分析实际问题,引导学生运用数值积分解决;3. 练习法:让学生通过练习题巩固所学知识。
教学准备:1. 教案、PPT、教学视频等教学资源;2. 计算器、电脑等教学工具。
教学过程:一、导入(5分钟)1. 引入数值积分的重要性,例如在物理、工程等领域中的应用;2. 引导学生思考如何利用数值方法近似计算积分值。
二、数值积分的概念和意义(10分钟)1. 讲解数值积分的定义;2. 解释数值积分的意义和作用;3. 举例说明数值积分在实际问题中的应用。
三、数值积分的基本方法(10分钟)1. 介绍梯形法、辛普森法和高斯法等基本方法;2. 讲解各种方法的原理和步骤;3. 通过实例演示数值积分的计算过程。
四、数值积分的原理(10分钟)1. 介绍数值积分近似解的误差估计;2. 解释误差估计的原理和意义;3. 引导学生思考如何选择合适的数值积分方法以减小误差。
五、数值积分的应用(10分钟)1. 分析实际问题,引导学生运用数值积分解决;2. 让学生通过练习题巩固所学知识;3. 引导学生思考数值积分在实际工程中的应用和限制。
教学评价:1. 课堂问答:检查学生对数值积分的概念和方法的理解;2. 练习题:评估学生对数值积分的应用能力;3. 课后作业:巩固学生对数值积分的掌握程度。
数值积分教案数值积分(有添加哦)六、梯形法的改进与应用(10分钟)1. 分析梯形法的局限性,如计算量大、精度低等问题;2. 介绍梯形法的改进方法,如自适应梯形法、辛普森法与梯形法的组合等;3. 通过实例讲解改进方法的原理和应用。
高斯求积公式-数值分析课程设计1
高斯求积公式(2)摘要数值积分一直都是数值计算领域一个重要的分支,很多工程问题都要运用数值积分的相关知识,而高斯求积公式是又是一种重要的数值积分的方法,对比于牛顿-科特斯公式,高斯公式不但是高精度的,而且是数值稳定的、收敛的。
高斯-勒让德求积公式又是在高斯公式的基础上发展而来的,是高斯公式的补充与完善。
本文就重点介绍基于MATLAB软件下高斯求积公式的求解,通过MATLAB数学软件我们不仅能够比较精确的解决高斯公式的求积问题,还可以比较形象易懂地反映出随着高斯点的增加误差的变化。
关键字:数值积分高斯公式稳定精确度MATLABGAUSSIAN QUADRATURE FORMULAABSTRACTNumerical integration is always a very important branch of Numerical calculus fileds,many projects problem need use the related knowledge of Numerical calculus,and , the Gaussian quadrature formula is an important way of Numerical Cauculus, Contrast in the Newton – Ctoes Tess formula, Gaussian quadrature formula is not only high accuracy,but also the value is stable and restraining. Gauss - Legendre quadrature formula develops in the function of the Gaussian quadrature formula,and it is the supplement and consummation Gaussian quadrature formula. This article introduced on the key point of based on the MATLAB Gaussian quadrature formula solution,Through the mathematics software of MAMTLAB,we ont only can compared with precisely the problem of Gaussian quadrature formula,but also can understand easily reflect the change with the increase of the Gauss node.The key words: Numerical integration Gaussian quadrature formula Stable Precision MATLAB目录一、引言 (1)二、方法描述 (2)2.1、高斯—勒让德(Gauss-Legendre)公式………………………………2.2、高斯-切比雪夫(Gauss-Chebyshev)求积公式………………………三、数值实验 (3)四、参考文献……………………………………………………………………. 附录:…………………………………………………………………………………。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间: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 数值计算课程设计
第 1 页 共32页 典型数值算法的C++语言程序设计
1.经典四阶龙格库塔法解一阶微分方程组 1.1算法说明 龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。 4阶龙格-库塔方法(RK4)可模拟N=4的泰勒方法的精度。这种算法可以描述为,自初
始点00(,)ty开始,利用下面的计算方法生成近似序列
1.2经典四阶龙格库塔法解一阶微分方程组算法流程图 典型数值算法的C++语言程序设计
第 2 页 共32页 1.3经典四阶龙格库塔法解一阶微分方程组程序调试
将编写好的代码放在VC6.0环境中编译,直接执行程序便可以得到求解微分方程(3)/5dytydt,并且(0)1.5y的结果。如下图:
然后将这些点进行插值或者拟合后就可以得到微分方程的解。 1.4 经典四阶龙格库塔法解一阶微分方程组程序代码: #include #include 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);