数值实验报告Word版

合集下载

数值分析实验报告

数值分析实验报告

实验2.1 多项式插值的振荡现象实验目的:在一个固定的区间上用插值逼近一个函数,显然Lagrange 插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时,Ln(x)是否也更加靠近被逼近的函数。

Runge 给出的一个例子是极著名并富有启发性的。

实验容:设区间[-1,1]上函数 f(x)=1/(1+25x 2)。

考虑区间[-1,1]的一个等距划分,分点为 x i = -1 + 2i/n ,i=0,1,2,…,n ,则拉格朗日插值多项式为201()()125nn i i i L x l x x ==+∑. 其中,l i (x),i=0,1,2,…,n 是n 次Lagrange 插值基函数。

实验步骤与结果分析:实验源程序function Chap2Interpolation% 数值实验二:“实验2.1:多项式插值的震荡现象”% 输入:函数式选择,插值结点数% 输出:拟合函数及原函数的图形promps = {'请选择实验函数,若选f(x),请输入f,若选h(x),请输入h,若选g(x),请输入g:'};titles = 'charpt_2';result = inputdlg(promps,'charpt 2',1,{'f'});Nb_f = char(result);if(Nb_f ~= 'f' & Nb_f ~= 'h' & Nb_f ~= 'g')errordlg('实验函数选择错误!');return;endresult = inputdlg({'请输入插值结点数N:'},'charpt_2',1,{'10'});Nd = str2num(char(result));if(Nd <1)errordlg('结点输入错误!');return;endswitch Nb_fcase 'f'f=inline('1./(1+25*x.^2)'); a = -1;b = 1;case 'h'f=inline('x./(1+x.^4)'); a = -5; b = 5;case 'g'f=inline('atan(x)'); a = -5; b= 5;endx0 = linspace(a, b, Nd+1); y0 = feval(f, x0);x = a:0.1:b; y = Lagrange(x0, y0, x);fplot(f, [a b], 'co');hold on;plot(x, y, 'b--');xlabel('x'); ylabel('y = f(x) o and y = Ln(x)--');%--------------------------------------------------------------------function y=Lagrange(x0, y0, x);n= length(x0); m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif(j ~= k)p = p*(z - x0(j))/(x0(k) - x0(j));endends = s + p*y0(k);endy(i) = s;end实验结果分析(1)增大分点n=2,3,…时,拉格朗日插值函数曲线如图所示。

胡克定律实验报告Word版

胡克定律实验报告Word版

胡克定律及其拓展(传统实验)实验目的1.探究弹性限度内引起弹簧形变的外力F与弹簧的形变量x之间是否成正比,即验证F∝x是否成立;2.探究弹性限度内弹簧的劲度系数与其匝数之间是否成反比,即验证k∝1N是否成立。

3.用作图标记法直接获取F-X的图像实验原理胡克定律的表达式为F=-k·x或△F=-k·Δx,其中k是常数,是物体的劲度(倔强)系数。

在国际单位制中,F的单位是牛,x的单位是米,它是形变量(弹性形变),k的单位是牛/米。

劲度系数在数值上等于弹簧伸长(或缩短)单位长度时的弹力。

弹性定律是胡克最重要的发现之一,也是力学最重要基本定律之一。

胡克的弹性定律指出:弹簧在发生弹性形变时,弹簧的弹力F和弹簧的伸长量(或压缩量)x成正比,即F= -k·x 。

k是物质的弹性系数,它由材料的性质所决定,负号表示弹簧所产生的弹力与其伸长(或压缩)的方向相反。

1.用弹簧挂钩上加一定质量的钩码,使得弹簧发生形变,其形变量(伸长量)为x,通过计算验证F∝x;2.控制弹簧的匝数N,然后通过计算求出弹簧的劲度系数k并验证k∝1N。

3.用作图标记法画出F-X图像实验器材刻度尺、铁架台(带铁夹)四个弹簧白板卷尺钩码实验步骤课题一:1.固定弹簧,用刻度尺测出弹簧长度l;2.在其弹性限度内用钩码在弹簧挂钩上加一个力F1,用刻度尺测出弹簧此时长度l1;3.仿照步骤2,得到F2,F3,F4,F5,F6和l2,l3,l4,l5,l6;4.换用另一根弹簧,重复1-3步;5.整理器材。

课题二:1.固定弹簧,用刻度尺测出弹簧长度l;2.使弹簧匝数为N1,在其弹性限度内用钩码在弹簧挂钩上加一个力F1,用刻度尺测出弹簧此时长度l1;3.仿照步骤2,得到N2,N3,N4,N5,N6,F2,F3,F4,F5,F6和l2,l3,l4,l5,l6;4.换用另一根弹簧,再重复1-3步5次;5.整理器材。

图一图二图三课题三:1.将四个弹簧悬挂在铁架台上,用毫米刻度尺量出弹簧的长度。

数值计算基础实验报告(3篇)

数值计算基础实验报告(3篇)

第1篇一、实验目的1. 理解数值计算的基本概念和常用算法;2. 掌握Python编程语言进行数值计算的基本操作;3. 熟悉科学计算库NumPy和SciPy的使用;4. 分析算法的数值稳定性和误差分析。

二、实验内容1. 实验环境操作系统:Windows 10编程语言:Python 3.8科学计算库:NumPy 1.19.2,SciPy 1.5.02. 实验步骤(1)Python编程基础1)变量与数据类型2)运算符与表达式3)控制流4)函数与模块(2)NumPy库1)数组的创建与操作2)数组运算3)矩阵运算(3)SciPy库1)求解线性方程组2)插值与拟合3)数值积分(4)误差分析1)舍入误差2)截断误差3)数值稳定性三、实验结果与分析1. 实验一:Python编程基础(1)变量与数据类型通过实验,掌握了Python中变量与数据类型的定义方法,包括整数、浮点数、字符串、列表、元组、字典和集合等。

(2)运算符与表达式实验验证了Python中的算术运算、关系运算、逻辑运算等运算符,并学习了如何使用表达式进行计算。

(3)控制流实验学习了if-else、for、while等控制流语句,掌握了条件判断、循环控制等编程技巧。

(4)函数与模块实验介绍了Python中函数的定义、调用、参数传递和返回值,并学习了如何使用模块进行代码复用。

2. 实验二:NumPy库(1)数组的创建与操作通过实验,掌握了NumPy数组的基本操作,包括创建数组、索引、切片、排序等。

(2)数组运算实验验证了NumPy数组在数学运算方面的优势,包括加、减、乘、除、幂运算等。

(3)矩阵运算实验学习了NumPy中矩阵的创建、操作和运算,包括矩阵乘法、求逆、行列式等。

3. 实验三:SciPy库(1)求解线性方程组实验使用了SciPy库中的线性代数模块,通过高斯消元法、LU分解等方法求解线性方程组。

(2)插值与拟合实验使用了SciPy库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。

完整word版一元多项式求和实验报告范文_

完整word版一元多项式求和实验报告范文_

完整word版一元多项式求和实验报告范文_实验一、线性结构综合应用一、实验题目:顺序表的应用二、实验内容:一元多项式求和。

把任意给定的两个一元多项式P(某),Q(某)输入计算机,计算它们的和并输出计算结果。

三、设计分析:实现要定义的一元多项式应采用链式存储结构。

根据一元多项式相加的运算法则,对于两个多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成新多项式的一项;对于两个多项式中所有指数不同的项,分别复制到新多项式中。

新多项式不必另外生成,而是在原来的两个多项式中摘取结点即可。

采用顺序存储结构存储多项式系数A,使多项式的某些运算变得更简洁。

但在实际使用时,多项式的阶数可能很高,不同的多项式阶数可能相差很大,这使顺序存储结构的最大长度难以确定。

而且,最高次幂与最低次幂项之间缺项很多时,采用顺序存储结构显然十分浪费存储空间,因此,一般情况下多采用链式存储结构来存储高阶多项式。

在用线性链表来存储一个多项式时,多项式中的每个非零项系数对应一个结点,结点由数据元素项和指针组成。

数据元素项中包含系数和指数值,设计中先定义定义数据元素中的数据,其中有指数、系数级指针ne某t等。

并要先构造一元多项式。

在定义输出、删除、合并等模块。

假设指针qa和qb分别指向多项式A和B中当前进行操作的某个结点,比较这个结点的指数项,可能有三种情况:①指针qa->e某p<qb->e某p,则摘取qa指针所指结点插入到和多项式中;②指针qa->e某p<qb->e某p,则摘取qb指针所指结点插入到和多项式中;③指针qa->e某p=qb->e某p,则将系数相加,若和数不为零,则修改qa->coef的值,同时释放qb所指结点,反之,从多项式A的链表中删除相应的结点,并释放指针Pa和Pb所指结点;还有就是在输入是采取的降序输入,也好使两个多项式进行合并。

并输出。

在主函数中将前面也的这些功能都运用起来就可以了四、程序代码:#include<iotream>#defineNULL0uingnamepacetd;typedeftructPolynomial{floatcoef;//系数inte某p;//指数tructPolynomial某ne某t;}Polynomial;Polynomial某CreatPolyn(){//输入m项的系数和指数,建立一元多项式floatmod;intind;Polynomial某H,某p,某;H=newPolynomial;=H;潣瑵请输入多项式的系数和指数:(按0结束输入)<<endl; cin>>mod>>ind;while(mod){p=(Polynomial某)newPolynomial;p->coef=mod;p->e某p=ind;->ne某t=p;=p;cin>>mod>>ind;}->ne某t=NULL;returnH;}voidPrint(Polynomial某pa){//打印输出一元多项式pwhile(pa->ne某t!=NULL){pa=pa->ne某t;cout<<pa->coef<<某某^<<pa->e某p;if(pa->ne某t!=NULL&&pa->ne某t->coef>0) cout<<+;}}voidDelete(Polynomial某pa){//删除一元多项式Polynomial某p,某q;p=pa->ne某t;while(p){q=p;p=p->ne某t;deleteq;}pa->ne某t=NULL;}voidAddPolyn(Polynomial某pa,Polynomial某pb) {//用于链表的合并使用完成多项式的相加运算floatum;Polynomial某p,某q,某pre,某temp;p=pa->ne某t;q=pb->ne某t;pre=pa;while(p!=NULL&&q!=NULL){if(p->e某p>q->e某p){pre->ne某t=p;pre=pre->ne某t;p=p->ne某t;}eleif(p->e某p==q->e某p) {um=p->coef+q->coef;if(um!=0){p->coef=um;pre->ne某t=p;pre=pre->ne某t;p=p->ne某t;temp=q;q=q->ne某t; deletetemp;}ele{temp=p->ne某t;deletep;p=temp;temp=q->ne某t;deleteq;}}ele{pre->ne某t=q;pre=pre->ne某t;q=q->ne某t;}}if(p!=NULL)//将多项式A中剩余的结点加入到和多项式中pre->ne某t=p;elepre->ne某t=q;}intmain(){intc;intt=1;cout<<某某某某某某某某某某某某某某某某某某菜单某某某某某某某某某某某某某某某某某<<endl<<endl;cout<<.创建并显示一元多项式A和B,计算一元多项式A加B并显示和<<endl<<endl;cout<<.退出程序.<<endl;cin>>c;witch(c){cae1:Polynomial某p1,某p2;p1=CreatPolyn();潣瑵一元多项式A是:;Print(p1);cout<<endl;p2=CreatPolyn();潣瑵一元多项式B是:;Print(p2);cout<<endl;AddPolyn(p1,p2);潣瑵一元多项式A加B的和是:;Print(p1);cout<<endl;Delete(p1);break;cae2:t=0;break;}}ytem(paue);return0;}五、测试用例:六、实验总结通过这次实验,对于链表的应用知识有了更加深刻的认识,虽然中间出了很多问题,但是经过调试以后都得以解决。

(完整word版)数据挖掘与实验报告(word文档良心出品)

(完整word版)数据挖掘与实验报告(word文档良心出品)

中科大数据挖掘实验报告姓名樊涛声班级软设一班学号SA15226248实验一K邻近算法实验一实验内容使用k近邻算法改进约会网站的配对效果。

海伦使用约会网址寻找适合自己的约会对象,约会网站会推荐不同的人选。

她将曾经交往过的的人总结为三种类型:(1)不喜欢的人(2)魅力一般的人(3)极具魅力的人尽管发现了这些规律,但依然无法将约会网站提供的人归入恰当的分类。

使用KNN算法,更好的帮助她将匹配对象划分到确切的分类中。

二实验要求(1)独立完成kNN实验,基本实现可预测的效果(2)实验报告(3)开放性:可以自己增加数据或修改算法,实现更好的分类效果三实验步骤(1)数据源说明实验给出的数据源为datingTestSet.txt,共有4列,每一列的属性分别为:①percentage of time spenting playing vedio games;②frequent flied miles earned per year;③liters of ice cream consumed per year;④your attitude towars this people。

通过分析数据源中的数据,得到规律,从而判断一个人的前三项属性来得出划分海伦对他的态度。

(2)KNN算法原理对未知属性的某数据集中的每个点一次执行以下操作①计算已知类别数据集中的每一个点和当前点的距离②按照距离递增依次排序③选取与当前点距离最小的k个点④确定k个点所在类别的出现频率⑤返回k个点出现频率最高的点作为当前点的分类(3)KNN算法实现①利用python实现构造分类器首先计算欧式距离然后选取距离最小的K个点代码如下:def classify(inMat,dataSet,labels,k):dataSetSize=dataSet.shape[0]#KNN的算法核心就是欧式距离的计算,一下三行是计算待分类的点和训练集中的任一点的欧式距离diffMat=tile(inMat,(dataSetSize,1))-dataSetsqDiffMat=diffMat**2distance=sqDiffMat.sum(axis=1)**0.5#接下来是一些统计工作sortedDistIndicies=distance.argsort()classCount={}for i in range(k):labelName=labels[sortedDistIndicies[i]]classCount[labelName]=classCount.get(labelName,0)+1;sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0]②解析数据输入文件名,将文件中的数据转化为样本矩阵,方便处理代码如下:def file2Mat(testFileName,parammterNumber):fr=open(testFileName)lines=fr.readlines()lineNums=len(lines)resultMat=zeros((lineNums,parammterNumber))classLabelVector=[]for i in range(lineNums):line=lines[i].strip()itemMat=line.split('\t')resultMat[i,:]=itemMat[0:parammterNumber]classLabelVector.append(itemMat[-1])fr.close()return resultMat,classLabelVector;返回值为前三列属性被写入到resultMat二维数组中,第四列属性作为标签写入到classLableVector中③归一化数据不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,使各指标处于同一数量级。

数值分析实验报告5篇

数值分析实验报告5篇
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -13 -14
1.69376699767424 0.92310666706964 0.08471614569741 0.40804026409411
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
讨论:
利用这种方法进行这类实验,可以很精确的扰动敏感性的一般规律。即 当对扰动项的系数越来越小时,对其多项式扰动的结果也就越来越小, 即扰动敏感性与扰动项的系数成正比,扰动项的系数越大,对其根的扰 动敏感性就越明显,当扰动的系数一定时,扰动敏感性与扰动的项的幂 数成正比,扰动的项的幂数越高,对其根的扰动敏感性就越明显。
解线性方程组的直接方法
实验 (主元的选取与算法的稳定性) 问题提出:Gauss消去法是我们在线性代数中已经熟悉的。但由于计算 机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保 Gauss消去法作为数值算法的稳定性呢?Gauss消去法从理论算法到数值 算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它 却是数值分析中十分典型的问题。 实验内容:考虑线性方程组 编制一个能自动选取主元,又能手动选取主元的求解线性方程组的 Gauss消去过程。 实验要求: (1)取矩阵,则方程有解。取n=10计算矩阵的条件数。让程序自动选 取主元,结果如何? (2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最 小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去 过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。 (3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析 不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元

(完整word版)Matlab数学实验报告

(完整word版)Matlab数学实验报告

Matlab 数学实验报告一、实验目的通过以下四组实验,熟悉MATLAB的编程技巧,学会运用MATLAB的一些主要功能、命令,通过建立数学模型解决理论或实际问题。

了解诸如分岔、混沌等概念、学会建立Malthu模型和Logistic 模型、懂得最小二乘法、线性规划等基本思想。

二、实验内容2.1实验题目一2.1.1实验问题Feigenbaum曾对超越函数y=λsin(πx)(λ为非负实数)进行了分岔与混沌的研究,试进行迭代格式x k+1=λsin(πx k),做出相应的Feigenbaum图2.1.2程序设计clear;clf;axis([0,4,0,4]);hold onfor r=0:0.3:3.9x=[0.1];for i=2:150x(i)=r*sin(3.14*x(i-1));endpause(0.5)for i=101:150plot(r,x(i),'k.');endtext(r-0.1,max(x(101:150))+0.05,['\it{r}=',num2str(r)]) end加密迭代后clear;clf;axis([0,4,0,4]);hold onfor r=0:0.005:3.9x=[0.1];for i=2:150x(i)=r*sin(3.14*x(i-1));endpause(0.1)for i=101:150plot(r,x(i),'k.');endend运行后得到Feigenbaum图2.2实验题目二2.2.1实验问题某农夫有一个半径10米的圆形牛栏,长满了草。

他要将一头牛拴在牛栏边界的桩栏上,但只让牛吃到一半草,问拴牛鼻子的绳子应为多长?2.2.2问题分析如图所示,E为圆ABD的圆心,AB为拴牛的绳子,圆ABD为草场,区域ABCD为牛能到达的区域。

问题要求区域ABCD等于圆ABC的一半,可以设BC等于x,只要求出∠a和∠b就能求出所求面积。

数值分析实验报告模板

数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。

本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。

利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。

即若x0 偏离所求根较远,Newton法可能发散的结论。

并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。

前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。

掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收敛,但精度不够。

熟悉Matlab语言编程,学习编程要点。

体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。

数学原理:对于一个非线性方程的数值解法很多。

在此介绍两种最常见的方法:二分法和Newton法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk)产生逼近解x*的迭代数列{xk},这就是Newton法的思想。

当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。

另外,若将该迭代公式改进为xk?1?xk?rf(xk) 'f(xk)其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。

程序设计:本实验采用Matlab的M文件编写。

其中待求解的方程写成function的方式,如下function y=f(x);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京XX大学计算机与通信工程学院实验报告实验名称:《数值计算方法》课程实验学生姓名:_____________XX_______________专业:________计算机科学与技术________班级:_____________XXXX____________学号:_____________XXXXXX___________指导教师:_____________XXXXX_____________实验成绩:________________________________实验地点:__________XXXXXXX____________实验时间:____2017____年___6___月___6___日一、实验目的与实验要求1、实验目的实验1:探究非线性方程的解法,比较不同解法的优劣性,针对具体问题对解法进行实践,并迭代达到指定的精确度。

实验2:探究一般化曲线拟合的方法,采用最小二乘法对含有多项式,指数和对数多种形式的函数进行拟合,确定拟合结果中的系数。

实验3:探究多种积分的数值解法,根据给定的精度,选择恰当的数值积分方法,确定迭代步数与步长,分析积分数值解法的优劣性。

2、实验要求实验1:采用两种算法求解非线性方程,比较两种算法的性能。

实验2:用最小二乘法拟合由不超过三阶多项式和指数、对数函数线性组合成的符合函数,确定各个项的系数实验3:自选一种数值积分方法求解积分值,根据要求的精度给出最终的迭代步数和步长,分析优缺点。

二、实验设备(环境)及要求实验1,3采用C语言编写,编译环境为DEV C++。

实验2涉及矩阵操作,故采用MATLAB编写。

三、实验内容与步骤1、实验1(1)实验内容·采用至少两种不同的算法求解ex+3*x3-x2-2=0在[0,1]范围内的一个根,要求两次迭代误差小于10-4。

·根据实验结果,比较分析不同算法的性能。

(2)主要步骤本实验由C 语言实现。

在两种不同的算法上选用简单迭代法和牛顿迭代法。

简单迭代法是将方程化成一个与原方程同解的方程,方程一端化成自变量x ,然后判断迭代函数是否收敛,如果收敛的话,不停地迭代将使x 趋于一个定值,这个定值就是原方程的近似解。

而牛顿迭代法是直接给出形如x k+1=x k −f(x k )f (x k )的迭代函数进行迭代,如果满足两个端点异号,f ’(x)在[a,b]上不等于零,f ’’(x)在[a,b]上不变号且初值x 0满足条件f(x 0) f ’’(x 0)≥0,则由牛顿迭代法产生的序列单调收敛于[a,b]内的唯一根。

两种算法在理论上,牛顿迭代法的收敛速度要大于简单迭代法,以下进行迭代解非线性方程组并验证收敛速度的差异。

1.简单迭代法:将x 3移项,整理,得到迭代函数如下: x =√−e x +x 2+233,选取收敛的初值点x 0=0。

在实现上利用for 循环进行迭代,直到相邻两次的误差小于10−4。

C 语言代码如下:简单迭代函数:2.牛顿迭代法:根据牛顿迭代法迭代函数的一般形式可以得到具体的迭代函数如下:x−e x+3x3−x2−2,选取与简单迭代法相同的初值x0=0。

C语言代码如下:e x+9x2−2x牛顿迭代函数:主函数中牛顿迭代法的部分:两个迭代法完整C语言代码如下:执行程序,结果如下:可见,牛顿迭代法的收敛速度大于简单迭代法,具体详见实验结果与分析。

2、实验2(1)实验内容·已知如下数据:x: 1.0000 1.4000 1.8000 2.2000 2.6000 3.00003.4000 3.80004.2000 4.60005.0000y: 2.7183 6.6448 15.3667 30.1867 52.6542 84.5925 128.1972 186.2022 262.1349 360.7020 488.3660·数据可能来自于不超过3阶多项式和指数、对数函数线性组合形成的复合函数([1, x, x2, x3, ex, ln(x)]),请采用最小二乘算法确定复合函数中各个函数项的系数。

(2)主要步骤最小二乘法是在确定函数形式的情况下,找出一条最靠近所有数据点的直线,其判定规则是∑w i δi 2m i=0达到最小。

在求解的过程中,用最小二乘法拟合复合函数的过程实际上就是求法方程组的过程。

分别写出各项的内积(φj ,φk )和(f,φk )然后求解方程组[(φ0,φ0)⋯(φ0,φn)⋮⋱⋮(φn,φ0)⋯(φn,φn)][a0⋮a n]=[(f,φ0)⋮(f,φn)]根据题目中给出的数据点和复合函数形式,可以定义出如下的6种基函数,具体的MATLAB代码如下:然后在M命令文件中调用上述函数,并输入相应的n。

整个法方程组的系数矩阵可以用一个三重for循环实现,等号右侧的矩阵用另一个二重循环实现,实现系数矩阵的MATLAB代码如下:等式右边的矩阵的MATLAB代码如下:完整的MATLAB代码如下:得出的结果如下:所以,拟合出的复合函数应为f(x)=−2.0006+0.0006x−1x2+3x3+e x−5.0008ln⁡(x)3、实验3(1)实验内容·选择一种数值积分方法求解下列函数在区间[0,2]内的积分值,要求精度小于10-5:f(x) = (3x-x2+x3+ex)0.5·给出迭代步数和最终的步长,并分析你所采用方法的优缺点。

(2)主要步骤在积分难求出解析解时通常用数值解的方法求积分结果的近似值,在本题的实现方法上选用复合Simpson公式进行数值积分的计算,并从步数n=2,步长h=12开始逐步细化步长,增大步数,直到精度满足题目中的要求10−5。

首先在定义一个题目中给出的待积分的函数,C语言代码如下:然后编写复合Simpson公式,将其定义在一个独立的函数中,C代码如下:最后在主函数中定义初始步数n为2,初始步长h为0.5,并通过for循环逐步增大n,直到相邻两次误差小于10−5,具体的C代码如下:程序执行的结果如下:可见,在迭代步数n为10时,即步长为0.1时,精度达到要求,且此时的积分数值约为4.941104。

优劣性分析见实验结果与分析。

四:实验结果与分析实验1:通过采用简单迭代法和牛顿迭代法处理同一问题,观察达到指定精度时所需的不同迭代次数,简单迭代法经过7步之后误差小于10−4,牛顿迭代法经过6步之后误差小于10−4,所以在收敛速度上来讲,牛顿迭代法的性能优于简单迭代法。

实验2:通过采用最小二乘法拟合一个由不超过3阶多项式和指数、对数函数线性组合形成的复合函数,通过解法方程组求解,在求解过程中熟悉了最小二乘法的求解方法和基本概念,包括最小二乘法和插值的区别所在。

在计算机中可以通过循环较容易地求得各个基函数的内积,从而构建求解法方程组。

实验3:通过用数值积分方法求解一个函数在一个积分区间的积分值,并根据具体的精度要求给出迭代步数和最终步长。

在方法上我选用了复合Simpson公式法,复合Simpson公式在Simpson公式的基础上提高了求积的精度,将[a,b]等分成n个子区间,在每个子区间上使用低阶求积公式计算,然后把所有子区间上的计算结果求和。

复合Simpson公式的优点在于通过增加子区间的个数可以缩小误差提高精度,这一点比单纯的Simpson公式,梯形公式和Cotes公式要好。

但是缺点在于复合Simpson公式是4阶收敛的,在收敛速度上没有复合Cotes公式收敛的快,所以需要n=10时才能达到精度要求。

五:结论(讨论)1、实验结论在本次数值计算实验课中一共完成了三个实验,分别对应理论课程中三章的内容,分别复习并实践了非线性方程的迭代解法,插值与拟合,积分的数值解法等内容。

这三个实验涉及到了数值计算方法的主要内容,熟悉了数值计算方法的理论知识,并加以应用,在有一定创新度并结合各种具体编程环境的基础上,在实践中体会到了数值计算方法在实际问题中的作用。

在具体实现上,分别用C语言实现了1,3两个实验,用MATLAB实现了第2个实验,锻炼了把数值计算方法结合到不同应用场景的能力,为今后在各领域的使用打下基础。

在具体的实验上,在第一个实验中,应用了简单迭代法和牛顿迭代法解常见的非线性方程,熟悉了各种非线性方程的解法,包括二分法,简单迭代法,牛顿迭代法弦截法和牛顿下山法等。

其中应用简单迭代法和牛顿迭代法求解了题目中的问题,理解了两者的区别,牛顿迭代法直接通过迭代函数的一般形式给出具体的迭代函数,且收敛速度比简单迭代法要快。

在第二个实验中,应用了最小二乘法拟合一个由不超过3阶多项式和指数、对数函数线性组合形成的复合函数,熟悉了最小二乘法的概念及求解方法,通过构造法方程组来求解最小二乘法拟合的问题,并在一定程度上了解了最小二乘法拟合后平方误差的计算方法。

在第三个实验中,应用了数值积分方法中的复合Simpson公式法解一个函数在固定区间中的积分值。

由于复杂的函数在一定情况下难以找到解析解,所以要通过数值积分的方法求数值解。

在求数值解的方法上主要有梯形公式,Simpson 公式,Cotes公式,复合梯形公式,复合Simpson公式,复合Cotes公式等,其中复合的公式通过在区间内等分子区间提高数值积分的精度,子区间个数越多,精度越高,直到达到目标的精度为止。

在实验中主要应用了复合Simpson公式求解积分,熟悉并理解了相关的理论知识并加以实践,在一定程度上掌握了相关的方法。

2、讨论在本次数值计算实验课程中,完成了课程中要求的实验,进一步掌握了实验中涉及的知识点,包括非线性方程的解法,最小二乘法拟合,数值积分法等等,但是对于实验题目中未涉及到的内容仍有些掌握不牢,比如说线性方程组的解法,插值,常微分方程的数值解法等等,所以我认为实验课中涉及的知识点可以覆盖到各章最好,这将在熟悉知识点上提供很大的帮助。

六、教师评审(注:可编辑下载,若有不当之处,请指正,谢谢!)。

相关文档
最新文档