《数值计算方法》课程设计
数值计算方法第2版课程设计

数值计算方法第2版课程设计一、设计背景数值计算方法是数学专业本科生的重要课程之一,也是计算机、物理、工程等专业学生的必修课之一。
本课程设计旨在通过实践,加深学生对于数值计算方法的理解、掌握该方向的求解方法与技巧,提高学生对数学知识的运用能力。
二、设计目的本课程设计的目的在于:1.加深对数值计算方法的理解;2.掌握数值计算方法相关算法的求解方法;3.提高计算机编程能力和应用数学能力。
三、设计内容1. 多项式插值多项式插值是一种常用的数值计算方法,用于求解由一系列离散数据点构成的函数图象。
本课程设计要求学生掌握牛顿插值法和Lagrange插值法的求解过程,并使用Matlab等编程语言实现。
2. 最小二乘拟合最小二乘拟合是一种广泛应用于数据拟合和参数估计的方法。
本课程设计要求学生了解最小二乘拟合的基本原理,并使用Matlab等编程语言实现。
另外,要求学生将所实现的代码应用于实际数据进行拟合,并给出结果的分析和解释。
3. 数值积分数值积分是一种重要的数值计算方法,应用广泛。
本课程设计要求学生了解常见的数值积分方法,如梯形公式、Simpson公式和Gauss公式等,并使用Matlab等编程语言实现。
4. 常微分方程求解常微分方程是一个广泛应用的数学领域,有许多数值方法可以求解。
本课程设计要求学生了解欧拉方法、梯形法、四阶龙格-库塔法等常见的数值求解方法,并使用Matlab等编程语言实现。
四、评估方法本课程设计将采取以下评估方法:1.课堂讨论和答辩,对学生对各个算法求解的理解和实现情况进行评价。
2.最终成果报告,包括所实现的代码及其在实际数据中的应用结果和分析。
五、参考文献[1] 高立. 数值计算方法及其MATLAB实现[M]. 北京: 北京航空航天大学出版社, 2015.[2] 姜启源. 数值计算方法教程[M]. 北京: 清华大学出版社, 2017.[3] 模拟计算方法与仿真实验[M]. 北京: 高等教育出版社, 2014.。
数值计算方法教学大纲(精选五篇)

数值计算方法教学大纲(精选五篇)第一篇:数值计算方法教学大纲《数值计算方法》课程教学大纲课程编码:0405034 课程性质:专业选修课学时:52 学分:3 适用专业:数学与应用数学一、课程性质、目的和要求本课程为数学系数学与应用数学专业的专业必修课。
通过本课程的学习,要求学生了解数值计算的基本概念、基本方法及其原理,培养应用计算机从事科学与工程计算的能力。
本课程主要介绍数值计算的基本方法以及数值计算研究中的一些较新的成果。
以数学分析、线性代数、高级语言程序设计为先行课,包含解线性方程组的直接法、解线性方程组的迭代法、解非线性方程的迭代法、矩阵特征值与特征向量的计算、数据拟合、多项式插值、数值积分与数值微分等基本内容,为微分方程数值解、最优化方法、数学实验等后继课程作好准备。
通过实验使学生掌握各种常用数值算法的构造原理,提高算法设计和理论分析能力,为在计算机上解决科学计算问题打好基础。
二、教学内容、要点和课时安排第一章误差(4学时)教学目的:学习误差的相关概念,了解残生误差的原因,在函数中误差的传播规律,并且掌握实际运算中可以减小误差的方法。
教学难点:误差的传播规律,公式的推导。
第一节误差的来源第二节绝对误差、相对误差与有效数字一、绝对误差与绝对误差限二、相对误差与相对误差限三、有效数字与有效数字位数第三节数值计算中误差传播规律简析第四节数值运算中应注意的几个原则思考题:1、什么是绝对误差与绝对误差限?2、什么是相对误差与相对误差限?3、在数值计算的过程中函数的自变量的误差与函数值的误差只有什么样的关系?4、在数值计算的过程中我们应该注意那些原则来使得误差尽量的小?第二章非线性方程求根(14学时)教学目的:学习非线性方程求根的方法,主要介绍二分法、简单迭代法、牛顿迭代法与弦割法,要求掌握每一种方法的理论思想,会用学习的方法求解非线性方程的根。
教学难点:分法、简单迭代法、牛顿迭代法与弦割法的计算过程的理解,记忆,尤其是迭代法收敛性的判定。
数值计算方法教案

数值计算方法教案一、教学目标1.理解数值计算方法的基本原理和应用范围。
2.掌握数值计算方法中常用的数值近似、数值求解和数值积分计算方法。
3.能够灵活应用所学的数值计算方法解决实际问题。
二、教学内容1.数值计算方法的概述和基本原理。
1.1数值计算方法的定义。
1.2数值计算方法在实际问题中的应用。
1.3数值计算方法的误差分析。
2.数值近似方法。
2.1多项式插值法。
2.2最小二乘逼近法。
2.3数值微分和数值积分公式。
3.数值求解方法。
3.1方程求根的迭代法。
3.2线性方程组的直接解法和迭代法。
4.数值积分计算方法。
4.1梯形法则和辛普森法则。
4.2高斯求积公式。
4.3自适应积分法。
5.实际问题的数值计算方法应用案例。
三、教学方法1.讲授法:通过讲解数值计算方法的基本原理和应用范围,引导学生建立正确、完整的知识体系。
2.实例分析法:通过实际问题的例子,引导学生灵活运用所学的数值计算方法解决问题。
3.实验法:通过具体的数值计算实验,让学生通过编程实现数值计算方法,对算法和误差有更深入的理解。
四、教学步骤1.引入:通过生活中的例子,引导学生认识到数值计算方法在实际问题中的重要性。
2.理论讲解:依次讲解数值计算方法的基本原理和应用范围,结合具体的例子加深学生理解。
3.数值近似方法的讲解:分别介绍多项式插值法、最小二乘逼近法和数值微分和积分公式,讲解其原理和算法步骤。
4.数值求解方法的讲解:分别介绍方程求根的迭代法和线性方程组的求解方法,讲解其原理和算法步骤。
5.数值积分计算方法的讲解:分别介绍梯形法则、辛普森法则和高斯求积公式,讲解其原理和算法步骤。
6.案例分析:通过具体的实际问题案例,引导学生应用所学的数值计算方法解决问题,并进行算法正确性和误差分析。
7.总结与提高:对整节课内容进行总结,并引导学生对数值计算方法进行思考和提高。
五、教学评价1.课堂练习:在课堂上进行数值计算方法的相关练习,检查学生对知识的掌握情况。
数值计算方法教案

数值计算方法教案第一章:数值计算概述1.1 数值计算的定义与特点引言:介绍数值计算的定义和基本概念数值计算的特点:离散化、近似解、误差分析1.2 数值计算方法分类直接方法:高斯消元法、LU分解法等迭代方法:雅可比迭代、高斯-赛德尔迭代等1.3 数值计算的应用领域科学计算:物理、化学、生物学等领域工程计算:结构分析、流体力学、电路模拟等第二章:误差与稳定性分析2.1 误差的概念与来源绝对误差、相对误差和有效数字误差来源:舍入误差、截断误差等2.2 数值方法的稳定性分析线性稳定性分析:特征值分析、李雅普诺夫方法非线性稳定性分析:李模型、指数稳定性分析2.3 提高数值计算精度的方法改进算法:雅可比法、共轭梯度法等增加计算精度:闰塞法、理查森外推法等第三章:线性方程组的数值解法3.1 高斯消元法算法原理与步骤高斯消元法的优缺点3.2 LU分解法LU分解的步骤与实现LU分解法的应用与优势3.3 迭代法雅可比迭代法与高斯-赛德尔迭代法迭代法的选择与收敛性分析第四章:非线性方程和方程组的数值解法4.1 非线性方程的迭代解法牛顿法、弦截法等收敛性条件与改进方法4.2 非线性方程组的数值解法高斯-赛德尔法、共轭梯度法等方程组解的存在性与唯一性4.3 非线性最小二乘问题的数值解法最小二乘法的原理与方法非线性最小二乘问题的算法实现第五章:插值与逼近方法5.1 插值方法拉格朗日插值、牛顿插值等插值公式的构造与性质5.2 逼近方法最佳逼近问题的定义与方法最小二乘逼近、正交逼近等5.3 数值微积分数值求导与数值积分的方法数值微积分的应用与误差分析第六章:常微分方程的数值解法6.1 初值问题的数值解法欧拉法、改进的欧拉法龙格-库塔法(包括单步和多步法)6.2 边界值问题的数值解法有限差分法、有限元法谱方法与辛普森法6.3 常微分方程组与延迟微分方程的数值解法解耦与耦合方程组的处理方法延迟微分方程的特殊考虑第七章:偏微分方程的数值解法7.1 偏微分方程的弱形式介绍偏微分方程的弱形式应用实例:拉普拉斯方程、波动方程等7.2 有限差分法显式和隐式差分格式稳定性分析与收敛性7.3 有限元法离散化过程与元素形状函数数值求解与误差估计第八章:优化问题的数值方法8.1 优化问题概述引言与基本概念常见优化问题类型8.2 梯度法与共轭梯度法梯度法的基本原理共轭梯度法的实现与特点8.3 序列二次规划法与内点法序列二次规划法的步骤内点法的原理与应用第九章:数值模拟与随机数值方法9.1 蒙特卡洛方法随机数与重要性采样应用实例:黑箱模型、金融衍生品定价等9.2 有限元模拟离散化与求解过程应用实例:结构分析、热传导问题等9.3 分子动力学模拟基本原理与算法应用实例:材料科学、生物物理学等第十章:数值计算软件与应用10.1 常用数值计算软件介绍MATLAB、Python、Mathematica等软件功能与使用方法10.2 数值计算在实际应用中的案例分析工程设计中的数值分析科学研究中的数值模拟10.3 数值计算的展望与挑战高性能计算的发展趋势复杂问题与多尺度模拟的挑战重点解析本教案涵盖了数值计算方法的基本概念、误差分析、线性方程组和非线性方程组的数值解法、插值与逼近方法、常微分方程和偏微分方程的数值解法、优化问题的数值方法、数值模拟与随机数值方法以及数值计算软件与应用等多个方面。
数值计算方法课程设计123

数值计算方法课程设计姓名学号班级实验要求1.应用自己熟悉的算法语言编写程序,使之尽可能具有通用性。
2.上机前充分准备,复习有关算法,写出计算步骤,反复检查,调试程序。
(注:在练习本上写,不上交)3.完成计算后写出实验报告,内容包括:所用的算法语言,CPU 时间,算法步骤叙述,变量说明,程序清单,输出计算结果,结构分析和小结等。
(注:具体题目具体分析,并不是所有的题目的实验报告都包含上述内容!)4.至少需要选择5道必做题目。
其余的也可以选择,如果多选,可酌情加分!5.独立完成,如有雷同,一律判为零分!6.上机期间不允许做其他任何与课程设计无关的事情,否则被发现一次扣10分,被发现三次判为零分!上机实习题目1. 编写秦九韶算法程序,并用该程序计算多项式623)(35+-+=x x x x f 在1.3 1.2, ,1.1=x 的值。
public class Qinjiushao {public double result;public double x=-2;//定义一个未知数xpublic double[] b;public double[] c;public int i;public String abc;public void calculate(){// abc="x^5+3*x^3-2*x+6";多项式,可以截取字符串获取系数double[] a={2,0,-3,3,-4};//多项式的系数double[] b=new double[a.length];double[] c=new double[b.length];for(i=0;i<a.length;i++){if(i==0){c[i]=b[i]=a[i];}else{b[i]=b[i-1]*x+a[i];c[i]=c[i-1]*x+b[i-1]*x+a[i];}}int j=a.length-1;System.out.println("结果值为:f("+x+")="+c[a.length-2]);}public static void main(String[] agrs){Qinjiushao qjs=new Qinjiushao();qjs.calculate();//JFrame jframe=new JFrame();//jframe.setTitle("求结果");//jframe.setSize(400,400);//jframe.setVisible(true);}}2. 用选列主元高斯消去法解线性方程组⎪⎪⎩⎪⎪⎨⎧=+-=-+-=-+-=--022 0 21 34343232121x x x x x x x x x x #include<stdio.h>#include<math.h>#define N 4void maxij(double (*table)[N+1],int m);void zeros(double (*table)[N+1],int m);double solution(double (*table)[N+1],double *A,int n);main(){double table[N][N+1]={{-3,-1,0,0,1},{-1,2,-1,0,0},{0,-1,2,-1},{0,0,-1,2,0}}; double A[N];int i,j,m,n;for(m=0;m<N;m++){maxij(table,m);zeros(table,m);}for(n=N-1;n>=0;n--){if(table[n][n]!=0)A[n]=solution(table,A,n);elseA[n]=0;}for(i=0;i<N;i++)printf("x%d=%g\n",i+1,A[i]);}double solution(double (*table)[N+1],double *A,int n){double sum=0,result;int p;for(p=N-1;p>n;p--)sum+=table[n][p]*A[p];result=(table[n][N]-sum)/table[n][n];return result;}void zeros(double (*table)[N+1],int m){double zeroing;int i,j;for(i=m+1;i<N;i++)if(table[i][m]!=0){zeroing=-1*table[i][m]/table[m][m];table[i][m]=0;for(j=m+1;j<=N;j++)table[i][j]+=table[m][j]*zeroing;}}void maxij(double (*table)[N+1],int m){double exchange;int i,j,line=m;for(i=m;i<N;i++)if(abs(table[line][m])<abs(table[i][m]))line=i;for(i=m;i<=N;i++){exchange=table[m][i];table[m][i]=table[line][i];table[line][i]=exchange;}}运行结果:x1=-0.266667,x2=-0.2,x3=-0.133333,x4=-0.06666673. 分别用平方根法和改进平方根法解线性方程组⎪⎩⎪⎨⎧=++=++-=+-631242321321321x x x x x x x x x平方根法解线性方程组Ax =b#include"math.h"#include"stdio.h"main(){int i,j,k;int n=3;float m,a[3][3],b[3],x[3],l[3][3],y[3];printf("input matrix numbers of a:\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%f",&a[i][j]);printf("\n");printf("input numbers of b:\n");for(i=0;i<n;i++)scanf("%f",&b[i]);printf("\n");l[0][0]=sqrt(a[0][0]);for(i=1;i<n;i++){l[i][0]=a[i][0]/l[0][0];l[0][i]=l[i][0];}for(j=1;j<n;j++){m=0.0;for(k=0;k<j;k++){m+=l[j][k]*l[j][k];l[j][j]=sqrt(a[j][j]-m);}for(i=j+1;i<n;i++){m=0.0;for(k=0;k<j;k++){ m+=l[i][k]*l[j][k];l[i][j]=(a[i][j]-m)/l[j][j];l[j][i]=l[i][j];}}}y[0]=b[0]/l[0][0];for(i=1;i<n;i++){m=0.0;for(k=0;k<i;k++){m+=l[i][k]*y[k];y[i]=(b[i]-m)/l[i][i];}}x[n-1]=y[n-1]/l[n-1][n-1]; for(i=n-2;i>=0;i--){m=0.0;for(k=i+1;k<n;k++){m+=l[k][i]*x[k];x[i]=(y[i]-m)/l[i][i];}}for(i=0;i<n;i++)printf("x(%d)=%f\n",i,x[i]); }结果用C语言实现改进平方根法,程序代码如下:#include "stdlib.h"#include "stdio.h"#include "conio.h"#include "string.h"#include "math.h"#define N 100float Table(int n,float a[N][N],float b[N]){int i,j;printf("Please input the matrix A by row!\n");for(i=0;i<n;i++){printf("Row %d:",i);for(j=0;j<n;j++)scanf("%f",&a[i][j]);}printf("Please input the array b:");for(i=0;i<n;i++)scanf("%f",&b[i]);printf("\nThe matrix A and array b:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%10.4f",a[i][j]);printf("%10.4f",b[i]);printf("\n");}return 0;}float decomposition(int n,float a[N][N],float l[N][N],float d[N][N]) {int i,j,k;float t[N][N],tmp1,tmp2;for(i=0;i<n;i++)for(j=0;j<n;j++){if(i!=j) d[i][j]=0;if(i<j){t[i][j]=0;l[i][j]=0;}if(i==j) l[i][j]=1;}d[0][0]=a[0][0];for(i=1;i<n;i++)for(j=0;j<i;j++){tmp1=0;for(k=0;k<j;k++)tmp1+=t[i][k]*l[j][k];t[i][j]=a[i][j]-tmp1;l[i][j]=t[i][j]/d[j][j];tmp2=0;for(k=0;k<i;k++)tmp2+=t[i][k]*l[i][k];d[i][i]=a[i][i]-tmp2;}printf("\nAfter Cholesky triangular decomposition, the matrix L:\n");for(i=0;i<n;i++)for(j=0;j<=i;j++){printf("%8.4f",l[i][j]);if(i==j) printf("\n");}printf("\nAnd the matrix D:\n");for(i=0;i<n;i++)for(j=0;j<=i;j++){if(i!=j)for(k=0;k<8;k++)printf(" ");if(i==j) printf("%8.4f\n",d[i][j]);}return 0;}float solve(int n,float l[N][N],float d[N][N],float b[N]) {int i,j,k;float y[N],x[N],tmp1,tmp2;y[0]=b[0]; for(i=1;i<n;i++){tmp1=0;for(k=0;k<i;k++)tmp1+=l[i][k]*y[k]; y[i]=b[i]-tmp1; }4.考虑n 阶三对角方程组⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧⎪⎪⎪⎪⎭⎪⎪⎪⎪⎬⎫=⎪⎪⎪⎪⎭⎪⎪⎪⎪⎬⎫⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧3443 2 1 1 2 11 2 1 1 2 x ,,300=n(1) 用选列主元高斯消去法求解,(2) 编写追赶法程序并求解,(3) 比较两种方法的计算时间和精度。
数值计算方法第三版教学设计

数值计算方法第三版教学设计前言数值计算方法是基础课程中的一门重要课程,对于理工科学生来说具有十分重要的意义。
本篇文档将对数值计算方法第三版的教学设计进行详细阐述,旨在帮助教师更好地开展教学工作。
教学目标本课程的教学目标包括以下几点:1.了解数值计算的基本原理及其应用领域;2.掌握数值计算方法的基本概念和原理;3.能够运用数值计算方法解决实际问题;4.培养学生分析问题、解决问题的能力。
教学内容本课程的主要内容包括以下几个方面:1.数值计算的基本概念和方法;2.插值与逼近;3.数值微积分;4.常微分方程的数值解法;5.偏微分方程的数值解法;6.随机数与随机过程。
注:本课程的教学重点将放在数值微积分和常微分方程的数值解法上。
教学方法本课程将采取以下教学方法:1.课堂讲授:教师通过讲授来呈现课程内容;2.上机实验:学生通过实验来巩固所学知识;3.课堂互动:通过课堂讨论、练习等互动方式,激发学生的学习兴趣;4.课程设计:设计小型项目,让学生运用所学知识来解决实际问题。
教学评价本课程的教学评价将采用以下方式:1.写作业:学生需要完成每个章节的作业;2.上机实验报告:学生需要针对每个实验编写实验报告;3.期末考试:期末考试将占总成绩的70%;4.课程设计:课程设计将占总成绩的30%。
教学进度本课程教学进度如下:章节教学内容教学进度1 数值计算基本概念和方法2周2 插值与逼近2周3 数值微积分3周4 常微分方程的数值解法4周5 偏微分方程的数值解法2周6 随机数与随机过程2周实验上机实验6周章节教学内容教学进度课程设计设计小型项目4周总结本篇文档详细介绍了数值计算方法第三版的教学设计,其中包括教学目标、教学内容、教学方法、教学评价以及教学进度等方面。
相信有了本文档的指导,教师们将能够更好地开展授课工作,使学生们能够真正掌握数值计算方法这门重要课程。
《数值计算方法》课程设计实施方案

《数值计算方法》课程设计 非线性方程(组)地解法问题地提出分析比较Newton 法、Newton 法地变形格式.然后分别用Newton 法、简化Newton 法、选取不同地初值求解下面方程组,对于相同地精度要求,比较这两种方法地运行时间.⎩⎨⎧=-+==-+=052),(032),(222121221211x x x x f x x x x f 背景分析牛顿法是一种重要迭代法,他是逐步线性化方法地典型代表,牛顿法地特点是每一步都需要计算()()k f x 以及'()()k f x ,其计算量比较大,为了减少计算量,提出简化牛顿法.算法思想1、牛顿法设有非线性方程组 ()0F x =其中 12()((),(),...,())T k F x f x f x f x =由()i f x 偏导数作成地矩阵记为()J x ,称为()F x 地雅克比矩阵11()f x x ∂∂12()f x x ∂∂...1()nf x x ∂∂ ()J x ≡21()f x x ∂∂22()f x x ∂∂...2()nf x x ∂∂ .........1()n f x x ∂∂2()n f x x ∂∂...()n nf x x ∂∂ 设*x 为()0F x =地解,且设()()()()12(,,...,)k k k k n x x x x =为*x 地近似解.现利用多元函数()i f x 在()k x 点地泰勒公式有()()2()()()()()11,11()()()1()()()...()()()()(1,2,...,)2k k n k k k k k i i i i i i n n j j l l i j l n j lf x f x f C f x f x x x x x x x x x P x R i n x x x x =∂∂∂=+-++-+--∙≡+=∂∂∂∂∑ 其中,i C 在()k x 与x 地所连地线段内.如果用上式中地线性函数()i P x 近似替代()i f x ,并将线性方程组()()()()()111()()()()()...()0k k k k k i i i i n n n f x f x P x f x x xx x x x ∂∂≡+-++-=∂∂…..(1) 地解作为*x 地第1k +次近似解记为(1)k x+ 将(1)式写成矩阵形式,即 ()()()()()()0k k k F x J x x x +-=()()k J x 为非奇异矩阵,则牛顿迭代公式:(0)1(1)()()()()*()k k k k x x x J x F x -+⎡⎤=-⎣⎦……………………………(2 ) (0,1,2)k =⋅⋅⋅⋅⋅⋅求解非线性方程组()0F x =牛顿方法为(0)()()()(1)()()()()k k k k k k x J x x F x x x x +=-=+2、简化牛顿法在牛顿法地基础上,为了减少计算量,将()()k J x 均取为(0)()J x ,得如下简化牛顿公式: (0)1(1)()(0)()()*()k k k x x x J x F x -+⎡⎤=-⎣⎦…………………(3 )(0,1,2)k =⋅⋅⋅⋅⋅⋅其中(2)(3)式均为线性收敛地.算法设计将一个非线性方程组写成向量地形式有:F(x) = 0牛顿迭代法地公式就是:x (k+1)=x (k)-F’(x (k))-1F(x (k))其中F’(x (k))为Jacobi 矩阵,我写地这段程序就是根据这个公式来地.运用MATLAB 中地j acobian 求出F 地雅克比矩阵,用inv 求逆matrix=@(varargin)[varargin{:}]构造迭代函数在比较牛顿法和简化牛顿法运行时间方面,我们主要是通过比较迭代次数.程序清单牛顿法源程序:function x=newton_solve(F,v,x0,e)if (~ischar(F) || ~ischar(v)) %定义类型error('Parameter F and v should be char type!');endif (~isnumeric(x0) || ~isnumeric(e))error('Parameter x0 and e should be numeric type!');endF=sym(F);v=sym(v);dF=jacobian(F,v);tF=inv(dF)*Ffor index=1:numel(v)tF=subs(tF,v(index),['x(' num2str(index) ')']); %把x分量化,把x1变成x(1),把x2变成x(2)endmatrix=@(varargin)[varargin{:}].';%构造迭代函数phi=['x-' char(tF)];eval(['phi=@(x)' phi ';']);err=inf; %无穷大xold=phi(x0);n=0;while err>exnew=phi(xold);%用本次结果与上次结果差地范数来衡量误差err=norm(xnew-xold);xold=xnew;n=n+1;%迭代次数大于10000是退出循环if (n>10000)break;endn%迭代次数endx=xold;简化牛顿法地源程序:function x=simnewton_solve (F,v,x0,e)if (~ischar(F) || ~ischar(v)) %定义类型error('Parameter F and v should be char type!');endif (~isnumeric(x0) || ~isnumeric(e))error('Parameter x0 and e should be numeric type!');endF=sym(F);v=sym(v);dF=jacobian(F,v);tF=inv(dF)%dF地逆矩阵tF11= -x0(2)/(-x0(2)+4*x0(1));tF12=1/(-x0(2)+4*x0(1));tF21= 2*x0(1)/(-x0(2)+4*x0(1));tF22=-1/2/(-x0(2)+4*x0(1));tF=[tF11,tF12;tF21, tF22]%把dF地逆矩阵用初始值x0代入,得到一常数矩阵,(简化牛顿法地思想)tF=tF*F;for index=1:numel(v)tF=subs(tF,v(index),['x(' num2str(index) ')']); %把x分量化,把x1变成x(1),把x2变成x(2)endmatrix=@(varargin)[varargin{:}].';%构造迭代函数phi=['x-' char(tF)];eval(['phi=@(x)' phi ';']);err=inf; %无穷大xold=phi(x0);n=0;while err>exnew=phi(xold);%用本次结果与上次结果差地范数来衡量误差err=norm(xnew-xold);xold=xnew;n=n+1;%迭代次数大于10000是退出循环if (n>10000)break;endn%迭代次数endx=xold;运行结果分析newton_solve('[x1+2*x2-3;2*x1^2+x2^2-5]','[x1;x2]',[1.5;1],0.0001)n =2ans =1.48800.7560simnewton_solve('[x1+2*x2-3;2*x1^2+x2^2-5]','[x1;x2]',[1.5;1],0.0001) n =3ans =1.48800.7560newton_solve('[x1+2*x2-3;2*x1^2+x2^2-5]','[x1;x2]',[100;56],0.0001)n =10ans =1.48800.7560simnewton_solve('[x1+2*x2-3;2*x1^2+x2^2-5]','[x1;x2]',[100;56],0.0001)n =388ans =1.49380.7531上面地结果是牛顿法和简化牛顿法同精度同初值地解法以及不同初值同精度得出来地,我们利用迭代次数来比较它们运行地快慢(即运行地时间),我们本题地初值和精度可以任意取值,从而得出迭代次数以及结果.从结果可以看出,简化牛顿法相比起牛顿法迭代次数要多一些,而且简化牛顿法地值误差较大,因此用牛顿法解非线性方程组要比简化牛顿法要好.问题分析在我们参考了MATLAB 相关书籍之后,通过在网上地查阅,基本编写出牛顿法解非线性方程组地程序,在这个程序地基础上我们来改进用以实现简化牛顿法解非线性方程组,我们主要遇到地是(0)()J x 要怎么使它可以在程序中赋初值之后直接生成,最后这个没有解决,所以我们选择了赋初值后,直接把(0)()J x求出来,再把(0)()J x 地值作为常量带入程序中求解.总结本次地程序设计,我们用MATLAB 编写了牛顿法解非线性方程以及简化地牛顿法解非线性方程地程序.牛顿法是通过牛顿迭代法地公式:x (k+1)=x (k)-F’(x (k))-1F(x (k)) ,带入初值及给定精度地范围,得出方程组地解.简化牛顿法,实在牛顿法地基础上,把雅可比矩阵地逆地初始矩阵算出来,再通过迭代地出地解.我们选取了不同地初值解非线性方程组.并且对于同初值同精度问题,分别用牛顿法和简化地牛顿法解得简化地牛顿法迭代地次数更多.说明简化地牛顿法迭代精度更低而且求地地解误差较大.这与理论是相符合地.牛顿法和简化牛顿法都有优点也有缺点,我们在解决问题地时候,要结合自己地实力和自己所需地选择恰当地方法.我们从不懂到懂得这个过程让我们收获很多,通过不断地学习,查阅资料以及修改程序,一个从无到有地积累,我们不仅仅是在做题,也是在学习处理任何问题地方法.遇到困难不要轻易放弃,要善于利用和整合资源,这都是生活必不可少地.心得体会数值计算方法是一门应用范围很广地课程,是信息与计算科学专业地一门主要专业基础课程,通过这次实验上机才知道原来我们可以运用MATLAB和C语言以及其他地相关汇编语言来编辑程序解决数值计算方法里面很多问题.在学习了理论知识之后,如何去具体地处理数学中地问题,如何把我们地理论运用到实践中去,这样地课程设计为我们提供了这样一个实践平台.通过这次实验,我收获颇多.首先是对MATLAB软件地认识有了进一步地提升.它简单易学、计算功能强等.MATLAB具有强大地矩阵运算、数据处理地功能,它输出地结果可视化.编程效率高,比C语言简单,让我们比较容易接受,所以我们在解决这道题地时候选择了使用matlab这种高级编程语言.我们也通过这次上机实验对《数值计算方法》有了更进一步地巩固.其次,通过这次上机实验,我对牛顿法有了更深一层地理解.牛顿法是一种重要迭代法,他是逐步线性化方法地典型代表.为了减少计算量,牛顿法还衍生出许多地变格形式,比如下降牛顿法、阻尼牛顿法、简化牛顿法、修正牛顿法、拟牛顿法等等,这里我们主要是用了牛顿法和简化牛顿法来解非线性方程组,并对这两种方法做了一个比较,通过精度地分析,迭代次数地比较得出牛顿法迭代次数比较少,但计算量大;简化地牛顿法迭代次数多但计算量相对较少.所以是各有所长,都能解决我们地问题.通过这次实验让我了解到合作地重要性,在处理问题地时候,当自己冥思苦想也想不出来解决方案地时候,不妨选择请教老师,和同学讨论.可以达到事半功倍地效果.我们地工作是一个团队地工作,团队需要个人,个人也离不开团队,必须发扬团结协作地精神.某个人地离群都可能导致整项工作地失败.实习中只有一个人知道原理是远远不够地,必须让每个人都知道,否则一个人地错误,就有可能导致整个工作失败.团结协作是我们实习成功地一项非常重要地保证.而这次实习也正好锻炼了我们地这一点,这对于我们地整个人生来说,都是非常宝贵地.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.0YujC。
《数值计算方法》电子教案

《数值计算方法》电子教案一、教学目标1.了解数值计算方法的基本概念和应用领域;2.掌握常用的数值计算方法,包括数值插值、数值积分、数值微分等;3.培养分析和解决实际问题的能力。
二、教学内容1.数值计算方法的基本概念和应用领域;2.数值插值方法及其应用;3.数值积分方法及其应用;4.数值微分方法及其应用。
三、教学过程1.引入:通过举例引入数值计算方法的基本概念和应用领域。
例如,让学生思考如何确定一个未知函数的近似值,或者如何计算一个无法求解的积分。
2.数值插值方法及其应用2.1数值插值的基本概念介绍数值插值的基本概念和思想。
讲解插值多项式的定义,并给出一个具体的例子进行讲解。
2.2常见的插值方法介绍常见的插值方法,包括拉格朗日插值法、分段线性插值法、牛顿插值法等。
详细讲解其中一个方法,并给出实际的应用例子进行讲解。
2.3数值插值的误差估计3.数值积分方法及其应用3.1数值积分的基本概念介绍数值积分的基本概念和思想。
讲解积分的几何意义和数值积分的定义,并给出一个具体的例子进行讲解。
3.2常见的数值积分方法介绍常见的数值积分方法,包括矩形法、梯形法、辛普森法等。
详细讲解其中一个方法,并给出实际的应用例子进行讲解。
3.3数值积分的误差估计4.数值微分方法及其应用4.1数值微分的基本概念介绍数值微分的基本概念和思想。
讲解导数的几何意义和数值微分的定义,并给出一个具体的例子进行讲解。
4.2常见的数值微分方法介绍常见的数值微分方法,包括中心差分法、前向差分法、后向差分法等。
详细讲解其中一个方法,并给出实际的应用例子进行讲解。
4.3数值微分的误差估计四、教学方法1.授课结合实例,通过实际问题引导学生思考;2.通过讨论和演示,培养学生的分析和解决问题的能力;3.在教学过程中引入多媒体技术和计算工具,提高学生的学习兴趣和动手能力。
五、教学评价1.课堂小测验,检查学生对基本概念的掌握情况;2.课后作业,巩固和扩展学生的知识;3.课堂讨论和演示,考察学生的应用能力和解决问题的能力。
数值计算方法教案

数值计算方法教案第一章:数值计算概述1.1 数值计算的定义与意义介绍数值计算的概念解释数值计算在科学研究与工程应用中的重要性1.2 数值计算方法分类介绍数值逼近、数值积分、数值微分、数值解方程等基本方法分析各种方法的适用范围和特点1.3 误差与稳定性解释误差的概念及来源讨论数值计算中误差的控制与减小方法介绍稳定性的概念及判断方法第二章:插值与逼近2.1 插值法的基本概念介绍插值的概念及意义解释插值函数的性质和条件2.2 常用的插值方法介绍线性插值、二次插值、三次插值等方法分析各种插值方法的优缺点及适用范围2.3 逼近方法介绍切比雪夫逼近、傅里叶逼近等方法解释逼近的基本原理及应用场景第三章:数值积分与数值微分3.1 数值积分的基本概念介绍数值积分的概念及意义解释数值积分的原理和方法3.2 常用的数值积分方法介绍梯形公式、辛普森公式、柯特斯公式等方法分析各种数值积分方法的适用范围和精度3.3 数值微分的基本概念与方法介绍数值微分的概念及意义解释数值微分的原理和方法第四章:线性方程组的数值解法4.1 线性方程组数值解法的基本概念介绍线性方程组数值解法的概念及意义解释线性方程组数值解法的原理和方法4.2 常用的线性方程组数值解法介绍高斯消元法、LU分解法、迭代法等方法分析各种线性方程组数值解法的优缺点及适用范围4.3 稀疏矩阵技术解释稀疏矩阵的概念及意义介绍稀疏矩阵的存储和运算方法第五章:非线性方程和方程组的数值解法5.1 非线性方程数值解法的基本概念介绍非线性方程数值解法的概念及意义解释非线性方程数值解法的原理和方法5.2 常用的非线性方程数值解法介绍迭代法、牛顿法、弦截法等方法分析各种非线性方程数值解法的优缺点及适用范围5.3 非线性方程组数值解法介绍消元法、迭代法等方法讨论非线性方程组数值解法的特点和挑战第六章:常微分方程的数值解法6.1 常微分方程数值解法的基本概念介绍常微分方程数值解法的概念及意义解释常微分方程数值解法的原理和方法6.2 初值问题的数值解法介绍欧拉法、改进的欧拉法、龙格-库塔法等方法分析各种初值问题数值解法的适用范围和精度6.3 边界值问题的数值解法介绍有限差分法、有限元法、谱方法等方法讨论边界值问题数值解法的特点和挑战第七章:偏微分方程的数值解法7.1 偏微分方程数值解法的基本概念介绍偏微分方程数值解法的概念及意义解释偏微分方程数值解法的原理和方法7.2 偏微分方程的有限差分法介绍显式差分法、隐式差分法、交错差分法等方法分析各种有限差分法的适用范围和精度7.3 偏微分方程的有限元法介绍有限元法的原理和步骤讨论有限元法的适用范围和优势第八章:数值模拟与计算可视化8.1 数值模拟的基本概念介绍数值模拟的概念及意义解释数值模拟的原理和方法8.2 计算可视化技术介绍计算可视化的概念及意义解释计算可视化的原理和方法8.3 数值模拟与计算可视化的应用讨论数值模拟与计算可视化在科学研究与工程应用中的重要作用第九章:数值计算软件与应用9.1 数值计算软件的基本概念介绍数值计算软件的概念及意义解释数值计算软件的原理和方法9.2 常用的数值计算软件介绍MATLAB、Mathematica、Python等软件的特点和应用领域9.3 数值计算软件的应用案例分析数值计算软件在科学研究与工程应用中的典型应用案例第十章:数值计算方法的改进与新发展10.1 数值计算方法的改进讨论现有数值计算方法的局限性介绍改进数值计算方法的研究现状和发展趋势10.2 新的数值计算方法介绍近年来发展起来的新型数值计算方法分析新型数值计算方法的优势和应用前景10.3 数值计算方法的未来发展探讨数值计算方法在未来可能的发展方向和挑战重点和难点解析一、数值计算概述难点解析:对数值计算概念的理解,误差来源及控制方法的掌握。
数值计算方法课程设计讲解

重庆邮电大学数理学院《数值计算方法》课程设计题目:_________小行星轨道问题____________组员:___1191301、徐鑫、2013213051__________ _ 1191301、闵子剑、2013213019__________指导教师:_________尹龙军_________________完成日期:______2014年12月28日_____________重庆邮电大学数理学院制目录一.课程设计目的 (3)二.课程设计题目 (3)三.理论知识和算法 (3)四.计算过程及计算结果截屏 (6)五.求解结果的分析和结论 (9)六.课程设计的心得与体会 (9)附录 (10)一、课程设计目的1)掌握线性方程组的求解。
2)掌握列主元、全主元高斯-约当消元法求方程的解。
3)利用编程实现列主元、全主元高斯-约当消元法的求解。
4)会使用Matlab 软件。
5)比较并分析这两种方法的区别。
二、课程设计及内容(题目)一个天文学家要确定一颗小行星绕太阳运行的轨道,他在轨道平面内建立以太阳为原点的直角坐标系,在五个不同的点对小行星作了五次观察,测得轨道上五个点的坐标数据(单位:万公里)如下表所由开普勒第一定律知,小行星轨道为一椭圆,椭圆的一般方程可表示为:012225423221=+++++y a x a y a xy a x a现需要建立椭圆的方程以供研究。
(1)分别将五个点的数据代入椭圆一般方程中,写出五个待定系数满足的等式,整理后写出线性方程组AX = b以及方程组的系数矩阵和右端项b ;(2)用列主元、全主元高斯-约当消元法求方程的解。
比较列主元、全主元高斯-约当消元法求方程的解优缺点及分析其误差。
三、问题的分析(含涉及的理论知识、算法等)1、在(1)问中,由Kepler (开普勒)第一定律知,小行星轨道为一椭圆.现需要建立椭圆的方程以供研究(注:椭圆的一般方程可表示为012225423221=+++++y a x a y a xy a x a .问题分析与建立模型 天文学家确定小行星运动的轨道时,他的依据是轨道上五个点的坐标数据:(x 1, y 1), (x 2, y 2), (x 3, y 3), (x 4, y 4), (x 5, y 5). 由Kepler 第一定律知,小行星轨道为一椭圆.而椭圆属于二次曲线,二次曲线的一般方程为012225423221=+++++y a x a y a xy a x a .为了确定方程中的五个待定系数,将五个点的坐标分别代入上面的方程,得⎪⎪⎪⎩⎪⎪⎪⎨⎧-=++++-=++++-=++++-=++++-=++++.1222122212221222122255542535522514544243442241353423333223125242232222211514213112211y a x a y a y x a x a ,y a x a y a y x a x a ,y a x a y a y x a x a ,y a x a y a y x a x a ,y a x a y a y x a x a这是一个包含五个未知数的线性方程组,写成矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡-----=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡11111222222222222222543215525552544244424332333232222222211211121a a a a a y x y y x x y x y y x x y x y y x x y x y y x x y x y y x x 再利用Matlab 计算出系数矩阵A 。
《数值计算方法》课程设计

《数值计算方法》课程设计《数值计算方法》课程设计非线性方程(组)的解法问题的提出分析比较Newton 法、Newton 法的变形格式。
然后分别用Newton 法、简化Newton 法、选取不同的初值求解下面方程组,对于相同的精度要求,比较这两种方法的运行时间。
⎩⎨⎧=-+==-+=052),(032),(222121221211x x x x f x x x x f背景分析牛顿法是一种重要迭代法,他是逐步线性化方法的典型代表,牛顿法的特点是每一步都需要计算()()k f x 以及'()()k f x ,其计算量比较大,为了减少计算量,提出简化牛顿法。
算法思想1、牛顿法设有非线性方程组 ()0F x = 其中12()((),(),...,())Tk F x f x f x f x =由()if x 偏导数作成的矩阵记为()J x ,称为()F x 的雅克比矩阵11()f x x ∂∂12()f x x ∂∂ ...1()nf x x ∂∂()J x ≡21()f x x ∂∂22()f x x ∂∂ ... 2()nf x x ∂∂... ... ...1()n f x x ∂∂2()n f x x ∂∂ ...()n nf x x ∂∂设*x 为()0F x =的解,且设()()()()12(,,...,)k k k k n xx x x =为*x 的近似解。
现利用多元函数()if x 在()k x 点的泰勒公式有()()2()()()()()11,11()()()1()()()...()()()()(1,2,...,)2k k n k k k k k i i i i i i n n j j l l i j l n j lf x f x f C f x f x x x x x x x x x P x R i n x x x x =∂∂∂=+-++-+--•≡+=∂∂∂∂∑其中,iC 在()k x 与x 的所连的线段内。
(完整版)数值计算方法教案

《计算方法》教案课程名称:计算方法适用专业:医学信息技术适用年级:二年级任课教师:***编写时间:2011年 8月新疆医科大学工程学院张利萍教案目录《计算方法》教学大纲 (4)一、课程的性质与任务 (4)二、课程的教学内容、基本要求及学时分配 (4)三、课程改革与特色 (5)四、推荐教材及参考书 (5)《计算方法》教学日历..................................... 错误!未定义书签。
第一章绪论 .. (6)第1讲绪论有效数字 (6)第2讲误差………………………………………………………………………………第二章线性方程组的直接法 (14)第3讲直接法、高斯消去法 (14)第4讲高斯列主元消去法 (22)第5讲平方根法、追赶法 (29)第三章插值法与最小二乘法 (31)第6讲机械求积、插值型求积公式 (32)第7讲牛顿柯特斯公式、复化求积公式 (37)第8讲高斯公式、数值微分 (42)第9讲第10讲第12讲第四章数值积分与数值微分 (48)第11讲欧拉公式、改进的欧拉公式 (48)第12讲龙格库塔方法、亚当姆斯方法 (52)第13讲收敛性与稳定性、方程组与高阶方程 (56)第14讲第15讲第五章微分常微分方程的差分方法 (59)第16讲迭代收敛性与迭代加速 (60)第17讲牛顿法、弦截法 (64)第18讲第19讲第20讲第六章线性方程组的迭代法 (67)第21讲迭代公式的建立 (68)第22讲第23讲第24讲向量范数、迭代收敛性 (71)第25讲《计算方法》教学大纲课程名称:计算方法/Computer Numerical Analysis B学时/学分:54/4先修课程:高等数学、线性代数、高级语言程序设计(如:Matlab语言)适用专业:计算机科学与技术、信息管理与信息系统开课学院(部)、系(教研室):医学工程技术学院、医学信息技术专业一、课程的性质与任务计算方法是一门专业必修课。
数值计算方法第二版教学设计

数值计算方法第二版教学设计一、教学目标本教材以数值计算方法为主线,重点介绍数值积分、求解非线性方程、插值和拟合、最优化方法和常微分方程数值解等计算方法,使学生掌握数值计算方法的基本思想、基本方法和基本技能,具备使用计算机完成科学和工程计算问题的能力,提高学生的实际动手能力和解决实际问题的能力。
二、教学内容第一章引论1.1 数值计算的概念和发展历程1.2 数值计算的基本思想和方法1.3 计算误差的概念和估计方法第二章数值求解非线性方程2.1 零点定理和解法的分类2.2 二分法、牛顿法、割线法、迭代法、单点迭代法的基本原理与形式2.3 解的存在唯一性和非线性方程组的求解第三章数值积分3.1 描述数值积分法的基本思想和原理3.2 复化求积公式和高斯求积公式3.3 自适应方法、迭代法和复杂区域积分的处理方法第四章插值与拟合4.1 插值多项式的存在唯一性和稳定性问题4.2 样条插值法的基本思想和原理4.3 最小二乘拟合和参数估计第五章最优化方法5.1 最优化问题的定义和分类5.2 无约束优化问题和约束优化问题的求解方法5.3 解的全局性和收敛性的判断方法,随机方法的基本思想和原理第六章常微分方程的数值解法6.1 基本理论和方法6.2 单步法、多步法和预测修正法的基本思想和原理6.3 初值问题和边值问题的求解方法三、教学方法本课程采用讲授、实验、实践教学相结合的方法。
教师在讲述基础理论和概念的同时,注重引导学生探究、思考、分析问题,指导学生进行数值计算方法的算法设计和实现过程。
教师将安排实验和实践环节,让学生亲自动手掌握计算机编程和计算方法的应用,完成一些小型计算项目,提高学生的实际动手能力和解决实际问题的能力。
四、教学评价本课程采用多元化的教学评价手段。
除了一般的考试,还将从平时教学活动、作业质量、实验和课程设计等多个方面进行评价,综合考察学生的基础理论知识、计算能力和实践操作能力。
同时,本课程将根据实际需要,安排一些综合实践活动,进一步考察学生成果。
数值计算方法第二版课程设计

数值计算方法第二版课程设计一、需求分析本次课程设计主要涉及以下内容:•迭代法求解方程组•插值和逼近•数值微积分在实现上述内容的过程中,需要掌握以下技能:•Python编程基础•矩阵运算基础•熟悉常用的数值计算库,如numpy等二、迭代法求解方程组对于一般的非线性方程组,不存在通式解,因此需要借助迭代法求解。
常用的迭代法有以下两种:1. 不动点迭代法对于方程组$$ \\begin{cases} x_1=f_1(x_1,x_2,\\cdots,x_n)\\\\x_2=f_2(x_1,x_2,\\cdots,x_n)\\\\ \\quad \\quad\\cdots \\\\x_n=f_n(x_1,x_2,\\cdots,x_n) \\end{cases} $$其中,每个x i的迭代公式为$$x_i^{(k+1)}=f_i(x_1^{(k)},x_2^{(k)},\\cdots,x_n^{(k)}),i=1,2,\\cdo ts,n$$我们可以将其改写成形如下面的形式$$ \\begin{cases} x_1=\\varphi_1(x_1,x_2,\\cdots,x_n)\\\\x_2=\\varphi_2(x_1,x_2,\\cdots,x_n)\\\\ \\quad \\quad\\cdots \\\\ x_n=\\varphi_n(x_1,x_2,\\cdots,x_n) \\end{cases} $$其中,每个x i的迭代公式为$$x_i^{(k+1)}=\\varphi_i(x_1^{(k)},x_2^{(k)},\\cdots,x_n^{(k)}),i=1, 2,\\cdots,n$$如果$\\varphi(x)$在某个点的导数小于1,则可以保证以这个点为初值迭代,最终一定会收敛于解。
不动点迭代法最大的优点在于,其收敛速度较快。
2. 牛顿迭代法牛顿迭代法是一种使用一阶或二阶泰勒展开的迭代方法,其思想在于通过不断迭代,将一个非线性方程组转化为一个线性方程组。
数值计算方法教案

数值计算方法教案一、教学目标1.了解数值计算方法的意义和应用2.掌握常见的数值计算方法,如牛顿迭代法、二分法等3.能够使用数值计算方法解决实际问题二、教学内容1.数值计算方法的基本概念和理论a.什么是数值计算方法b.为什么需要数值计算方法c.数值计算方法的分类和应用领域2.牛顿迭代法a.原理和推导b.算法的步骤和流程c.算法的收敛性和收敛速度d.算法的应用案例3.二分法a.原理和推导b.算法的步骤和流程c.算法的收敛性和收敛速度d.算法的应用案例4.数值计算方法的误差分析a.绝对误差和相对误差的定义和计算b.截断误差和舍入误差的定义和计算c.误差的传播和累积三、教学步骤1.导入a.引入数值计算方法和其应用的背景和意义b.激发学生对数值计算方法的兴趣和好奇心2.讲授a.介绍数值计算方法的基本概念和理论b.讲解牛顿迭代法的原理、推导和应用案例c.讲解二分法的原理、推导和应用案例d.介绍数值计算方法的误差分析方法和步骤3.实践a.给出数值计算方法的练习题,让学生自己实践应用b.引导学生分析和解决实际问题,如方程求根、函数逼近等4.归纳总结a.通过学生的实践活动和讨论,整理和总结数值计算方法的要点和关键步骤5.拓展应用a.引导学生思考和探索数值计算方法在其他领域中的应用,如图像处理、信号处理等b.给予学生相关参考资料和案例,鼓励学生进行创新和探索四、教学评估1.结合练习题和实践活动,对学生的掌握程度进行评估2.收集学生的反馈和意见,及时调整和改进教学方法3.鼓励学生进行小组讨论和分享,提高合作意识和团队精神五、教学反思1.教案内容的组织是否合理,是否能够满足学生的学习需求2.教学过程中是否能够激发学生的学习兴趣和积极参与3.是否有利于学生将所学知识与实际应用相结合,培养实际问题解决能力4.是否能够充分发挥学生的主体性和主动性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值计算方法》课程设计设计题目:非线性方程(组)的解法设计时间:2010-6-11至2010-6-18指导教师:题目非线性方程(组)的数值解法--求解非线性方程组的几种方法问题的提出分析比较Newton 法、Newton 法的变形格式。
然后分别用Newton 法、简化Newton 法、选取不同的初值求解下面方程组,对于相同的精度要求,比较这两种方法的运行时间。
背景分析牛顿法是一种重要迭代法,他是逐步线性化方法的典型代表,牛顿法的特点是每一步都需要计算()()k f x 以及'()()k f x ,其计算量比较大,为了减少计算量,提出简化牛顿法。
算法思想1、牛顿法设有非线性方程组 ()0F x =其中 12()((),(),...,())T k F x f x f x f x =由()i f x 偏导数作成的矩阵记为()J x ,称为()F x 的雅克比矩阵11()f x x ∂∂ 12()f x x ∂∂ ... 1()nf x x ∂∂ ()J x ≡21()f x x ∂∂ 22()f x x ∂∂ ... 2()n f x x ∂∂ ... ... ...1()n f x x ∂∂ 2()n f x x ∂∂ ... ()n nf x x ∂∂ 设*x 为()0F x =的解,且设()()()()12(,,...,)k k k k n x x x x =为*x 的近似解。
现利用多元函数()i f x 在()k x 点的泰勒公式有()()2()()()()()11,11()()()1()()()...()()()()(1,2,...,)2k k n k k k k k i i i i i i n n j j l l i j l n j lf x f x f C f x f x x xx x x x x x P x R i n x x x x =∂∂∂=+-++-+--∙≡+=∂∂∂∂∑ 其中,i C 在()k x与x 的所连的线段内。
如果用上式中的线性函数()i P x 近似替代()i f x ,并将线性方程组()()()()()111()()()()()...()0k k k k k i i i i n n nf x f x P x f xx x x x x x ∂∂≡+-++-=∂∂ (1)的解作为*x 的第1k +次近似解记为(1)k x+将(1)式写成矩阵形式,即 ()()()()()()0k k k F x J x x x +-=()()k J x 为非奇异矩阵,则牛顿迭代公式: (0)1(1)()()()()*()k k k k x xxJ x F x -+⎡⎤=-⎣⎦ ……………………………(2 )(0,1,2)k =⋅⋅⋅⋅⋅⋅求解非线性方程组()0F x =牛顿方法为(0)()()()(1)()()()()k k k k k k x J x x F x x x x +=-=+2、简化牛顿法在牛顿法的基础上,为了减少计算量,将()()k J x 均取为(0)()J x ,得如下简化牛顿公式:(0)1(1)()(0)()()*()k k k x xxJ x F x -+⎡⎤=-⎣⎦ …………………(3 )(0,1,2)k =⋅⋅⋅⋅⋅⋅其中(2)(3)式均为线性收敛的。
算法设计将一个非线性方程组写成向量的形式有: F (x ) = 0牛顿迭代法的公式就是: x (k+1)=x (k)-F ’(x (k))-1F (x (k))其中F ’(x (k))为Jacobi 矩阵,我写的这段程序就是根据这个公式来的。
运用MATLAB 中的j acobian 求出F 的雅克比矩阵,用inv 求逆 matrix=@(varargin)[varargin{:}]构造迭代函数在比较牛顿法和简化牛顿法运行时间方面,我们主要是通过比较迭代次数。
程序清单牛顿法源程序:function x=newton_solve(F,v,x0,e)if (~ischar(F) || ~ischar(v)) %定义类型error('Parameter F and v should be char type!');endif (~isnumeric(x0) || ~isnumeric(e))error('Parameter x0 and e should be numeric type!');endF=sym(F);v=sym(v);dF=jacobian(F,v);tF=inv(dF)*Ffor index=1:numel(v)tF=subs(tF,v(index),['x(' num2str(index) ')']); %把x分量化,把x1变成x(1),把x2变成x(2)endmatrix=@(varargin)[varargin{:}].';%构造迭代函数phi=['x-' char(tF)];eval(['phi=@(x)' phi ';']);err=inf; %无穷大xold=phi(x0);n=0;while err>exnew=phi(xold);%用本次结果与上次结果差的范数来衡量误差err=norm(xnew-xold);xold=xnew;n=n+1;%迭代次数大于10000是退出循环if (n>10000)break;endn%迭代次数endx=xold;简化牛顿法的源程序:function x=simnewton_solve (F,v,x0,e)if (~ischar(F) || ~ischar(v)) %定义类型error('Parameter F and v should be char type!');endif (~isnumeric(x0) || ~isnumeric(e))error('Parameter x0 and e should be numeric type!');endF=sym(F);v=sym(v);dF=jacobian(F,v);tF=inv(dF)%dF的逆矩阵tF11= -x0(2)/(-x0(2)+4*x0(1));tF12=1/(-x0(2)+4*x0(1));tF21= 2*x0(1)/(-x0(2)+4*x0(1));tF22=-1/2/(-x0(2)+4*x0(1));tF=[tF11,tF12;tF21, tF22]%把dF的逆矩阵用初始值x0代入,得到一常数矩阵,(简化牛顿法的思想)tF=tF*F;for index=1:numel(v)tF=subs(tF,v(index),['x(' num2str(index) ')']); %把x分量化,把x1变成x(1),把x2变成x(2)endmatrix=@(varargin)[varargin{:}].';%构造迭代函数phi=['x-' char(tF)];eval(['phi=@(x)' phi ';']);err=inf; %无穷大xold=phi(x0);n=0;while err>exnew=phi(xold);%用本次结果与上次结果差的范数来衡量误差err=norm(xnew-xold);xold=xnew;n=n+1;%迭代次数大于10000是退出循环if (n>10000)break;endn%迭代次数endx=xold;运行结果分析newton_solve('[x1+2*x2-3;2*x1^2+x2^2-5]','[x1;x2]',[1.5;1],0.0001)n =2ans =1.48800.7560simnewton_solve('[x1+2*x2-3;2*x1^2+x2^2-5]','[x1;x2]',[1.5;1],0.0001)n = 3ans =1.48800.7560newton_solve('[x1+2*x2-3;2*x1^2+x2^2-5]','[x1;x2]',[100;56],0.0001)n =10 ans =1.48800.7560simnewton_solve('[x1+2*x2-3;2*x1^2+x2^2-5]','[x1;x2]',[100;56],0.0001)n =388 ans =1.4938 0.7531上面的结果是牛顿法和简化牛顿法同精度同初值的解法以及不同初值同精度得出来的,我们利用迭代次数来比较它们运行的快慢(即运行的时间),我们本题的初值和精度可以任意取值,从而得出迭代次数以及结果。
从结果可以看出,简化牛顿法相比起牛顿法迭代次数要多一些,而且简化牛顿法的值误差较大,因此用牛顿法解非线性方程组要比简化牛顿法要好。
问题分析在我们参考了MATLAB 相关书籍之后,通过在网上的查阅,基本编写出牛顿法解非线性方程组的程序,在这个程序的基础上我们来改进用以实现简化牛顿法解非线性方程组,我们主要遇到的是(0)()J x要怎么使它可以在程序中赋初值之后直接生成,最后这个没有解决,所以我们选择了赋初值后,直接把(0)()J x求出来,再把(0)()J x 的值作为常量带入程序中求解。
总结本次的程序设计,我们用MATLAB 编写了牛顿法解非线性方程以及简化的牛顿法解非线性方程的程序。
牛顿法是通过牛顿迭代法的公式:x (k+1)=x (k)-F ’(x (k))-1F (x (k)) ,带入初值及给定精度的范围,得出方程组的解。
简化牛顿法,实在牛顿法的基础上,把雅可比矩阵的逆的初始矩阵算出来,再通过迭代的出的解。
我们选取了不同的初值解非线性方程组。
并且对于同初值同精度问题,分别用牛顿法和简化的牛顿法解得简化的牛顿法迭代的次数更多。
说明简化的牛顿法迭代精度更低而且求的的解误差较大。
这与理论是相符合的。
牛顿法和简化牛顿法都有优点也有缺点,我们在解决问题的时候,要结合自己的实力和自己所需的选择恰当的方法。
我们从不懂到懂得这个过程让我们收获很多,通过不断地学习,查阅资料以及修改程序,一个从无到有的积累,我们不仅仅是在做题,也是在学习处理任何问题的方法。
遇到困难不要轻易放弃,要善于利用和整合资源,这都是生活必不可少的。
参考文献《数值计算方法》郑继明重庆大学出版社2005《数值分析》翟瑞彩和谢伟松天津大学出版社2000《matlab 工程数学应用》许波和刘征清华大学出版社2000心得体会何靖(08120304):为期一周的《数值计算方法》的课程设计结束了,与其说是一个星期,实质只有四天,中间有三天放假,所以我们在上机设计的时间里抓得很紧。