数值分析-课程设计doc
数值分析导论第三版课程设计

数值分析导论第三版课程设计介绍本文档是关于数值分析导论第三版课程设计的说明。
本课程设计旨在帮助学生初步掌握数值分析的基础知识和方法,并且能够通过程序实现对数值计算问题的求解。
本课程设计包括以下内容:1.基本数值方法的实现2.数值微积分的求解3.数值代数方程组的求解4.课程设计报告的撰写实验环境本课程设计需要使用以下软件:1.Python编程语言(版本3.6以上)2.Jupyter Notebook(版本4.0以上)实验基本要求1.课程设计可组队,每组不超过3人。
2.课程设计需要完成以下内容:–基本数值方法的实现•包括二分法、牛顿法、割线法等方法的实现•可以针对不同的数值计算问题,选择合适的数值方法进行实现–数值微积分的求解•包括梯形公式、辛普森公式等方法的实现•可以针对不同的数值微积分问题,选择合适的数值方法进行实现–数值代数方程组的求解•包括高斯消元法、LU分解法等方法的实现•可以针对不同的数值代数方程组问题,选择合适的数值方法进行实现–课程设计报告的撰写•报告需要包括以下内容:实验目的、实验方法、实验结果、代码清单实验题目1.二分法求根–实现二分法求方程f(x)=0的根。
–可以选择针对不同的目标函数进行求解。
2.牛顿法求根–实现牛顿法求方程f(x)=0的根。
–可以选择针对不同的目标函数进行求解。
3.割线法求根–实现割线法求方程f(x)=0的根。
–可以选择针对不同的目标函数进行求解。
4.梯形公式求积分–实现梯形公式求解目标函数f(x)的定积分。
–可以选择针对不同的目标函数进行求解。
5.辛普森公式求积分–实现辛普森公式求解目标函数f(x)的定积分。
–可以选择针对不同的目标函数进行求解。
6.高斯消元法求解线性方程组–实现高斯消元法求解线性方程组Ax=b。
–可以选择不同的系数矩阵A和方程组右侧的常向量b进行求解。
实验过程1.确定目标函数–根据实验要求选择合适的目标函数,或者自定义目标函数。
2.理解目标函数的性质–分析目标函数的连续性、可导性、多峰性、收敛性等性质,为选择合适的数值方法提供依据。
大学数值分析课程设计

大学数值分析课程设计一、课程目标知识目标:1. 理解数值分析的基本概念,掌握数值计算方法及其数学原理;2. 掌握线性代数、微积分等基本数学工具在数值分析中的应用;3. 学会分析数值算法的稳定性和误差,评估数值结果的正确性。
技能目标:1. 能够运用数值分析方法解决实际工程和科学研究问题;2. 掌握常用数值分析软件的使用,提高数据处理和问题求解的效率;3. 培养编程实现数值算法的能力,提高解决复杂问题的技能。
情感态度价值观目标:1. 培养学生对数值分析的浓厚兴趣,激发学习积极性;2. 培养学生的团队合作精神,提高沟通与协作能力;3. 增强学生的数学素养,使其认识到数学在科学研究和社会发展中的重要性。
课程性质分析:本课程为大学数值分析课程,旨在教授学生数值计算的基本理论和方法,培养学生解决实际问题的能力。
学生特点分析:学生具备一定的高等数学基础,具有较强的逻辑思维能力和抽象思维能力。
教学要求:1. 注重理论与实践相结合,提高学生的实际操作能力;2. 鼓励学生主动参与讨论,培养学生的创新意识和解决问题的能力;3. 结合实际案例,强化学生对数值分析在工程和科研中的应用认识。
二、教学内容1. 数值分析基本概念:包括误差分析、稳定性、收敛性等;教材章节:第一章 数值分析概述2. 数值线性代数:矩阵运算、线性方程组求解、特征值与特征向量计算等;教材章节:第二章 线性代数的数值方法3. 数值微积分:数值积分、数值微分、常微分方程数值解等;教材章节:第三章 微积分的数值方法4. 非线性方程与系统求解:迭代法、牛顿法、弦截法等;教材章节:第四章 非线性方程与系统的数值解法5. 优化问题的数值方法:线性规划、非线性规划、最小二乘法等;教材章节:第五章 优化问题的数值方法6. 数值模拟与数值实验:蒙特卡洛方法、有限元方法、差分方法等;教材章节:第六章 数值模拟与数值实验7. 数值软件应用:MATLAB、Python等数值计算软件在数值分析中的应用;教材章节:第七章 数值软件及其应用教学进度安排:第1-2周:数值分析基本概念第3-4周:数值线性代数第5-6周:数值微积分第7-8周:非线性方程与系统求解第9-10周:优化问题的数值方法第11-12周:数值模拟与数值实验第13-14周:数值软件应用及综合案例分析教学内容确保科学性和系统性,注重理论与实践相结合,提高学生的实际操作能力。
《数值分析》课程教案

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

数值分析课程设计一、题目描述在本次数值分析课程设计中,我们需要实现下列内容:给定一个函数f(x),任取一个初值x0,使用牛顿法求出f(x)=0的一个根。
二、算法实现在数值计算中,牛顿法(Newton’s method) 是一种迭代算法,可以快速地求解方程的数值解,对于一般的实数函数,牛顿法可以用来求方程f(x)=0的根。
设x n是f(x)的根的一个近似值,y=f(x n)是对应的函数值,则用f(x)的一阶泰勒展开式$$ f(x) \\approx f(x_n)+f'(x_n)(x-x_n) $$且令上式等于零,得到牛顿迭代公式:$$ x_{n+1}=x_n-\\frac{f(x_n)}{f'(x_n)} $$若x0是f(x)的一个根的初始近似值,则$$ x_{n+1}=x_n-\\frac{f(x_n)}{f'(x_n)}, \\ n=0,1,2,\\cdots $$是迭代序列,如果 $\\lim\\limits_{n\\rightarrow \\infty}x_n=\\alpha$,且 $f(\\alpha)=0$,则 $\\alpha$ 是方程的一个根。
三、实验步骤1.确定初始值x0,计算f(x0)和f′(x0)。
2.按照牛顿法迭代公式计算x n+1。
3.如果满足指定的条件,则停止迭代,并输出x n+1。
4.否则,返回第二步迭代计算x n+2,直至满足指定的条件。
四、实验代码def newton_method(f, df, x0, eps=1e-8, max_iter=1000):'''利用牛顿法求解非线性方程f(x)=0的根。
:param f: 函数:param df: 导函数:param x0: 初值:param eps: 容差:param max_iter: 最大迭代次数:return:近似解'''n =1while True:x1 = x0 - f(x0) / df(x0)if abs(x1 - x0) < eps or n > max_iter:return x1x0 = x1n +=1五、实验结果我们使用上述实现的牛顿法来解决如下问题:$$ f(x) = x^2-3, \\ x_0=2 $$则f′(x)=2x。
数值分析课程设计

摘要实验一 拉格朗日插及数值求解1.1 实验目的了解 Lagranger 差值的基本原理和方法 通过实例掌握用 MATLAB 求插值的方法 根据实际计算理论,利用 Lagranger 插值多项式计算1.2 实验原理设已知 x0, x1, x2 ,..., xn及 yi=f( xi)(i=0,1, ,n), Ln (x)为不超过 n 次多项式且满足Ln(xi) yi(i=0,1,...n ).易知L n (x) l 0(x)y 0 ... l n (x)y n其中, li(x)均为 n 次多项式,再由 xj(j i )为 n 次多项式 li(x)的 n 个根知 nl i (x) c x x jj0i i. 最后,由nl i (x j ) c (x i x j ) 1j0 ji1 n(x i x j )j0 ji,i=0,1,...,n.n总之,L n (x)=i 0li(x)yinx x jj.j 0 x i x jli (x)= j i式为 n 阶 Lagrange 插值公式,其 中, li (x)(i=0,1,...n )称为 n 阶 Lagrange 插值的基函数l i (x )(x x 0)...(x x i 1)(x x i 1 )...( x x n )(x i x 0 )...(x i x i 1)(x i x i 1)...(x i x n )0,1,2...,n1.3 实验内容 function y = lagranger(x0,y0,x);%UNTITLED Summary of this function goes here% Detailed explanation goes here n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:nli=1.0;for j=1:nif j~=kli=li*(z-x0(j))/(x0(k)-x0(j));endends=li*y0(k)+s;endy(i)=s;end1.4实验案例及结果分析(1)输入:x0=[4,5,6];y0=[10,5.25,1];x=5;y=lagranger(x0,y0,x)2)输入:X0=[1,4,8];y0=[6,3.2,4];x=4;y=lagranger(x0,y0,x)实验二LU 分解法解线性方程组2.1实验目的1.了解LU 分解法解线性方程组的基本原理;2.熟悉计算方法的技巧和过程,能用LU 分解法解实际问题;3.用matlab 实现LU 分解。
数值分析课程设计

郑州轻工业学院课程设计任务书一、基本要求及主要内容1.1项目一:数值问题的数据结构分析与实现数值问题的雅可比迭代:设方程组Ax b = 的系数矩阵对角线元素0(1,2,...,)iia i n ≠=,M 为最大迭代次数,ε为容许误差。
雅可比(Jacobi )迭代法解方程组算法步骤如下:1. 取初始向量(0)(0)(0)12(,,...,)T n x x x x = ,令0k =. 2. 对1,2,...,i n =,计算(1)()11()nk k i i ij j j ii j ix b a x a +=≠=-∑ .3. 如果(1)()1nk k i i i x x ε+=-<∑,则输出(1)k x + ,结束;否则执行4.4. 如果k M ≥,则不收敛,终止程序;否则1k k ←+,转2.1.2项目二:实际问题的数据结构分析与实现。
个人通讯录的制作:要求每条信息至包含姓名(name )城市(city )电话(tel )QQ 号(qq ),完成如下功能:(1) 输入信息—— enter(); (2) 显示信息——display( );(3) 查找以姓名作为关键字 ——search( ); (4) 删除信息——delete( );(5) 存盘(将数据保存在文件中,此功能选做)——save ( ).二、主要参考文献[1] 施吉林, 刘淑珍等. 计算机数值方法(第三版)[M]. 北京: 高等教育出版社,2009.[2] 李根强,谢月娥等. 数据结构(C++版)[M]. 北京: 中国水利水电出版社, 2005. [3] 刘斌,王忠. 面向对象程序设计Visual C++[M]. 北京: 清华大学出版社, 2003. [4] 李根强等. 数据结构(C++描述)习题解答及实验[M]. 北京: 中国水利水电出版社, 2002.[5] 唐宁九, 游洪跃等. 数据结构与算法(C++版)[M]. 北京: 清华大学出版社,2009.[6]郭学军. 非线性方程组牛顿的离散化及固定点形式的转化[J]. 安阳工学院报2009(04).[7]热比亚·努尔, 穆塔里夫·阿赫迈德. 基于Excel的连续梁内力有限元数值迭代计算. 机械与电子, Machinery & Electronics, 编辑部邮箱2007, 02.[8]杜豫川, 孙立军, 黄仕进等. 基于有限元方法的连续型交通分配模型解法. 同济大学学报(自然科学版), Journal of Tongji University, 编辑部邮箱2005,01.[9]翁蓝天, 王禹民等.链表拓扑环境下基于配网结构特点的多源有环短路计算.电工技术学报, Transactions of China Electrotechnical Society, 编辑部邮箱2010, 10.[10]刘丽赏, 刘洪娜等. 用于生物检测的链霉亲和素修饰γ-Fe_2O_3@Au复合颗粒的制备与表征. 化学学报, Acta Chimica Sinica, 编辑部邮箱2010年20期.[11]杨善红. 小议结构体变量的字节对齐. 民营科技, 编辑部邮箱2010年09期.[12]颜伟, 黄正波等. 潮流计算中的二层链表与有序节点关联信息生成法. 电网技术, Power System Technology, 编辑部邮箱2010年11期[13]马燕, 王朝阳等. 阿片肽链中L-苯丙氨酸的保护全合成及表征. 精细与专用化学品, Fine and Specialty Chemicals, 编辑部邮箱2010年01期.[14]钟治初. 在C语言中集合类型数据的定义及集合运算的实现. 嘉应大学学报.2000,18(6).完成期限:2011.1.7指导教师签名:课程负责人签名:2011.1.7摘要利用c++语言的数据结构来实现数值问题的雅可比迭代和实际问题中的通讯录的实现。
《数值分析》课程设计

1.直接三角形分解#include<stdio.h>#include<math.h>#define N 10double a[N][N],b[N],X[N],Y[N],u[N][N],v[N][N],c[N][N];int n;void input(){int i,j;printf("请输入矩阵的阶数n=");scanf("%d",&n);printf("请输入矩阵的各项元素(按矩阵形式输入以空格隔开)a[n][n]:\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%lf",&a[i][j]);printf("请输入矩阵的常数列:\n");for(i=0;i<n;i++)scanf("%lf",&b[i]);}void solveUandV(){int i,j,k;double temp1,temp2;for(i=n-1;i>=0;i--){for(j=i;j>=0;j--){temp1=0;for(k=i+1;k<n;k++){temp1+=u[j][k]*v[k][i];}u[j][i]=a[j][i]-temp1;temp2=0;for(k=i+1;k<N;k++){temp2+=u[i][k]*v[k][j];}v[i][j]=(a[i][j]-temp2)/u[i][i];}}printf("上三角u为:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%lf\t",u[i][j]);printf("\n");}printf("下三角单位矩阵v为:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%lf\t",v[i][j]);printf("\n");}}void substituting(){int i,j;double temp1,temp2;printf("中间解Y=\n");for(i=n-1;i>=0;i--){temp1=0;for(j=i+1;j<n;j++)temp1+=Y[j]*u[i][j];Y[i]=(b[i]-temp1)/u[i][i];printf("%lf\t\t",Y[i]);}printf("\n");for(i=0;i<n;i++){temp2=0;for(j=0;j<i;j++){temp2+=X[j]*v[i][j];}X[i]=Y[i]-temp2;}}void verification(){int i,j,k;double t;for(i=0;i<n;i++){for(j=0;j<n;j++){t=0;for(k=0;k<n;k++)t+=u[i][k]*v[k][j];c[i][j]=t;}}printf("原系数矩阵为:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%lf\t",c[i][j]);printf("\n");}}void output(){int i;printf("方程的解为:\n");for(i=0;i<n;i++)printf("x[%d]= %lf\n",i,X[i]); }void main(){input();solveUandV();substituting();verification();output();}结果:#include"iostream.h"#include"math.h"#define e 0.00000000000001 double f(double x){double y;if (x==0){return y=1.0;}else y=sin(x)/x;return y;}void romberg(double a,double b) {int n=1,k=0;double h,T2,S2=0,C2=0,R2=0,T1,C1,S1,R1;h=(b-a)/2;T2=h*(f(a)+f(b));while (fabs((R2-R1))>e){R1=R2;T1=T2;S1=S2;C1=C2;double sum=0;int i;for(i=1;i<=n;i++){sum=sum+f(a+(2*i-1)*h);}T2=T1/2+sum*h;S2=(4*T2-T1)/3;C2=(16*S2-S1)/15;R2=(64*C2-C1)/63;n=n*2;k++;h=h/2;}cout<<"*****最后结果为:"<<"I="<<R2<<endl;}void main(){double a,b;cout<<"***输入上下限a,b的值用空格隔开***"<<endl;cin>>a>>b;cout<<"***下限a="<<a<<endl;cout<<"***上限b="<<b<<endl;cout<<"***被积函数为:y=sin(x)/x"<<endl;cout<<"*********************结果如下*********************"<<endl;romberg(a,b);}牛顿插值:#include <iostream.h>#include <math.h>void main(){int n,i,j;double A[50][50];double x[50],y[50];double K=1,X=0,N=0,P;cout<<"请输入所求均差阶数:";cin>>n;for(i=0;i<=n;i++){cout<<"请输入x"<<i<<"=";cin>>x[i];cout<<"请输入y"<<i<<"=";cin>>y[i];A[i][0]=x[i]; A[i][1]=y[i];}for(j=2;j<=n+1;j++){for(i=1;i<=n;i++){A[i][j]=(A[i][j-1]-A[i-1][j-1])/(A[i][0]-A[i-j+1][0]);}}for(i=0;i<=n;i++){cout<<"输出第"<<i<<"阶均差为:"<<A[i][i+1]<<endl;}cout<<"请所要代入计算的x的值:X=";cin>>X;for(i=0;i<n;i++){K*=X-x[i];N+=A[i+1][i+2]*K;P=A[0][1]+N;}cout<<"所要求的函数值为:y="<<P<<endl;}(1)Jacobi迭代法#include<stdio.h>#include<math.h>void main(){float a[10][11],x1[10],x2[10],temp=0,fnum=0; int i,j,n,bk=0;printf("输入方程组的未知数的个数(n<10):\nn="); scanf("%d",&n);for(i=1;i<n+1;i++)x1[i]=0;printf("\n输入方程组的系数矩阵:\n");for(i=1;i<n+1;i++){j=1;while(j<n+1){printf("a%d%d=",i,j);scanf("%f",&a[i][j]);j++;}}printf("输入方程组的常数项:\n");for(i=1;i<n+1;i++){printf("b%d=",i);scanf("%f",&a[i][n+1]);}printf("\n");while(bk!=1){for(i=1;i<n+1;i++){for(j=1;j<n+1;j++){if (j!=i)temp=a[i][j]*x1[j]+temp;}x2[i]=(a[i][n+1]-temp)/a[i][i]; temp=0;}for(i=1;i<n+1;i++){fnum=float(fabs(x1[i]-x2[i])); if(fnum>temp) temp=fnum;}if(temp<=pow(10,-4)) bk=1;for(i=1;i<n+1;i++)x1[i]=x2[i];}printf("原方程组的解为:\n");for(i=1;i<n+1;i++){printf("x%d=%7.4f ",i,x1[i]); printf("\n");}}(2)Gauss-Seidel迭代法# include <stdio.h># include <math.h>double sd(double c[3][3],double d[3],int n,double x[3],double ep,int ip,int nmax) {int i,j,k;double emax,s;k=0;do{emax=0;for(i=0;i<n;i++){s=d[i];for(j=0;j<n;j++){s=s+c[i][j]*x[j];}if(fabs(s-x[i])>emax) emax=fabs(s-x[i]);x[i]=s;}k=k+1;}while((emax>ep)&&(k<nmax));if(k>=nmax) ip=-1;else ip=1;return(x[0],x[1],x[2]);}void main(){double ep;int n,ip,nmax;double c[3][3]={{0,0.2,0.1},{0.2,0,0.1},{0.2,0.4,0}};static double d[3]={0.3,1.5,2};static double x[3]={0,0,0};n=3;ip=1;ep=0.000001;nmax=10;sd(c,d,3,x,ep,ip,nmax);if(ip==1){printf("Guass-Seideln");printf("the solution of equestion:n");printf("x1=%1.10fnx2=%1.10fnx3=%1.10fn",x[0],x[1],x[2]);} else printf("seidel method is failure");}。
(完整word版)数值分析课程设计含代码

成绩评定表学生姓名班级学号专业信息与计算课程设计题目数值分析算法案科学例评语组长签字:成绩日期20年月日课程设计任务书学院理学院专业信息与计算科学学生姓名班级学号课程设计题目数值分析算法案例实践教学要求与任务 :要求:格式以学校毕业论文格式要求为准,不准粘贴图片,尤其公式。
对每个试验,要求有:实验基本原理,实验目的,实验内容及数据来源和实验结论。
以班级为单位统一装订封皮。
6 月 25 日,十八周的周二交论文每人至少四个实验,最少15 页任务(实验项目):线性方程组数值解法参考题目:( 1) 列主元 Gauss 消去法( 2) LU 分解法插值法和数据拟合参考题目:( 1) Lagrange 插值( 2) Newton 插值( 3)最小二乘拟合数值积分参考题目:(1)复化Simpon积分(2)变步长的梯形积分公式(3)龙贝格求积公式常微分方程数值解Runge-Kutta 方法数值方法实际应用用数值方法解决实际问题(自选)工作计划与进度安排:线性方程组数值解法(4 学时)插值法和数据拟合(4 学时)数值积分(4 学时)常微分方程数值解(4 学时)数值方法实际应用(4 学时)答辩(4 学时)指导教师:专业负责人:学院教学副院长:201年月日201年月日201年月日实验方法与理论方法是推动科学技术发展的两大基本方法,但有局限性。
许多研究对象,由于空间或时间的限制,既不可能用理论精确描述,也不能用实验手段实现。
数值模拟或称为科学计算突破了实验和理论科学的局限,在科技发展中起到越来越重要的作用。
可以认为,科学计算已于实验、理论一起成为科学方法上不可或缺的三个主要手段。
计算数学的研究是科学计算的主要组成部分,而数值分析则是计算数学的核心。
数值计算是研究使用计算机来解决各种数学问题的近似计算方法与理论,其任务是提供在计算机上可解的、理论可靠的、计算复杂性低的各种常用算法。
数值分析的主要内容:1)、数值代数:求解线性和非线性方程组的解,分直接方法和间接方法两大类;2)、插值、曲线拟合和数值逼近;3)、数值微分和数值积分;4)、常微分和偏微分方程数值解法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程名称数值分析课题名称数值积分专业信息与计算科学班级学号姓名指导教师2015 年12 月20 日湖南工程学院课程设计任务书课程名称数值分析课题数值积分专业班级信息与计算科学0901班学生姓名学号指导老师辉审批任务书下达日期2015 年12 月7 日任务完成日期2015 年12 月20日设计内容与设计要求1. 设计内容:非奇异矩阵矩阵A ∈R n*n ,已知A -1的一个近似矩阵D (0)∈R n*n ,则由矩阵公式:⎪⎩⎪⎨⎧+=-=--)()1()1(KK KK KF I DD ADI F , K=0,1,2,3...........(1).已知矩阵A 及其逆矩阵的一个近似D (k)为:A=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--------7.49.43.49.19.47.11.88.78.26.21.27.07.37.08.38.1D= ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---------185.0061.0388.0293.0199.0009.0046.0230.0089.0016.0169.0035.0270.0163.0460.0211.0 用以上方法计算序列{D (k)}迭代次数超过100次时结束。
(2)分析最后得到的D (k)是否A 的一个较好的近似逆矩阵2.设计要求:● 课程设计报告正文内容a. 问题的描述及算法设计;b. 算法的流程图(要求画出模块图);c. 算法的理论依据及其推导;d. 相关的数值结果(通过程序调试),;e. 数值计算结果的分析;f. 附件(所有程序的原代码,要求对程序写出必要的注释)。
● 书写格式a.要求用A4纸打印成册b.正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
c.正文的内容:正文总字数要求在3000字左右(不含程序原代码)。
d.封面格式如下页。
●考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。
具体考核标准包含以下几个部分:a.平时出勤(占10%)b.系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)c.程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)d.设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。
e.独立完成情况(占10%)。
●课程设计验收要求基本要求:黑板上的文字说明。
a.判定算法设计的合理性,运行相关程序,获得正确的数值结果。
b.回答有关问题。
c.提交课程设计报告。
d.提交文档(源程序、设计报告文档)。
e.依内容的创新程度,完善程序情况及对程序讲解情况打分。
目录任务书 (1)目录 (5)问题提出 (6)问题分析 (10)程序代码 (21)程序界面 (23)程序结果 (24)心得 (24)课程设计评分表 (25)摘要:在数值分析中,数值积分在实际生活运用当中十分广泛,比如在大气科学和动力气象学中有着举足轻重的地位。
本文举了两个例子,一阶积分和二阶积分。
在一阶积分中我们使用复合梯形法、复合辛普森法、复合高斯法、龙贝格法;在二阶积分中我们使用复合梯形法、复合辛普森法、复合高斯法。
以上算法都是用C 语言来实现的。
关键词:数值积分; 复化求积公式;程序设计一、所求解问题及其背景描述非奇异矩阵矩阵A ∈R n*n ,已知A -1的一个近似矩阵D (0)∈R n*n ,则由矩阵公式:⎪⎩⎪⎨⎧+=-=--)()1()1(KK KK KF I DD ADI F , K=0,1,2,3...........(2).已知矩阵A 及其逆矩阵的一个近似D (k)为:A=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--------7.49.43.49.19.47.11.88.78.26.21.27.07.37.08.38.1D= ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---------185.0061.0388.0293.0199.0009.0046.0230.0089.0016.0169.0035.0270.0163.0460.0211.0 用以上方法计算序列{D (k)}迭代次数超过100次时结束。
(2)分析最后得到的D (k)是否A 的一个较好的近似逆矩阵。
二、问题分析与算法描述这是一个矩阵迭代问题,程序包括两个读取数组的代码,一组输入语句和运行公式的代码。
以下是程序代码。
三、程序代码package .hekai;import java.util.Scanner;import com.sun.jndi.url.iiopname.iiopnameURLContextFactory;public class Test {/*** @param args*/public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入行:");int row = scanner.nextInt();System.out.println("请输入列:");int list = scanner.nextInt();System.out.println("请输入迭代次数:");int num = scanner.nextInt();FileRead frFileRead = new FileRead("c.txt");double [] array = frFileRead.getArray();double[][] A = new double[row][list];int k1 = 0 ;for (int i = 0; i <row; i++) {for (int j = 0; j < list; j++) {A[i][j] = array[k1];k1++;}}FileRead fr = new FileRead("d.txt");double [] array2 = fr.getArray();double[][][] D = new double[row][list][1000];int k2 = 0 ;for (int i = 0; i <row; i++) {for (int j = 0; j < list; j++) {D[i][j][0] = array2[k2];k2++;}}//读取数组double [][] I = new double[row][list];for (int j = 0; j < row; j++) {for (int j2 = 0; j2 < list; j2++) {if (j == j2) {I[j][j2]=1;}else {I[j][j2]=0;}}}//读取数组double [][][] F = new double[row][list][1000];for (int k = 0; k < num; k++) {double [][] s = new double[row][list];for(int i=0;i<row;i++){for(int k11=0;k11<list;k11++){for(int j=0;j<row;j++){s[i][k11]+=A[i][j]*D[j][k11][k];}//公式计算}}for (int j = 0; j < row; j++) {for (int j2 = 0; j2 < list; j2++) {F[j][j2][k+1] = I[j][j2]-s[j][j2];} //公式计算}double [][] s1 =new double[row][list];for (int j = 0; j < row; j++) {for (int j2 = 0; j2 <list; j2++) {s1[j][j2] = I[j][j2]+F[j][j2][k+1];}//公式计算}for(int i=0;i<row;i++){for(int k11=0;k11<list;k11++){for(int j=0;j<list;j++){D[i][k11][k+1]+=D[i][j][k]*s1[j][k11];}//行列式相乘}}}for (int j = 0; j < row; j++) {for (int j2 = 0; j2 < list; j2++) {System.out.print(F[j][j2][num]+" ");}//输出F矩阵System.out.println();}System.out.println();System.out.println();for (int j = 0; j < row; j++) {for (int j2 = 0; j2 < list; j2++) {System.out.print(D[j][j2][num]+" ");}//输出D矩阵System.out.println();}}}2.测试类:package .hekai;import java.util.Scanner;import org.w3c.dom.ls.LSException;public class Test1 {/*** @param args*/public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入行:");int row = scanner.nextInt();System.out.println("请输入列:");int list = scanner.nextInt();FileRead frFileRead = new FileRead("c.txt");double [] array = frFileRead.getArray();double[][] A = new double[row][list];int k1 = 0 ;for (int i = 0; i <row; i++) {for (int j = 0; j < list; j++) {A[i][j] = array[k1];k1++;}}FileRead fr = new FileRead("e.txt");double [] array2 = fr.getArray();double[][][] D = new double[row][list][1000];int k2 = 0 ;for (int i = 0; i <row; i++) {for (int j = 0; j < list; j++) {D[i][j][0] = array2[k2];k2++;}}double [][] s =new double[row][list];for(int i=0;i<row;i++){for(int k=0;k<list;k++){for(int j=0;j<list;j++){s[i][k]+=A[i][j]*D[j][k][0];}}}for (int j = 0; j < row; j++) {for (int j2 = 0; j2 < list; j2++) {System.out.print(s[j][j2]+" ");}System.out.println();}}}五、程序结果六、课程设计心得:这个题目最重要的地方就是公式代码的构建,虽然花费了很多时间,但是到做出来的那一刻感觉还是很值得的。