数值分析课程设计实验报告基本格式

合集下载

数值分析实验报告

数值分析实验报告

数值分析实验报告【引言】数值分析是一门研究利用计算机和数学方法解决实际问题的学科,它在工程、科学和经济领域中有着广泛的应用。

在这个实验报告中,我将分享我在数值分析实验中的一些发现和结果。

【实验目的】本次实验的目的是通过数值方法对给定的问题进行求解,并分析数值方法的精确性和稳定性。

我们选择了经典的插值和数值积分问题来进行实验。

【实验过程】在插值问题中,我使用了拉格朗日插值和样条插值两种方法。

通过使用已知的数据点,这些方法能够通过构造多项式函数来逼近原始函数,从而能够在未知点上进行预测。

通过比较两种插值方法的结果,我发现拉格朗日插值在低维数据上表现更好,而样条插值在高维数据上更能保持插值曲线的平滑性。

在数值积分问题中,我使用了复合梯形公式和复合辛普森公式来进行数值积分。

这两种方法可以将复杂的区间上的积分问题转化为对若干个小区间进行数值积分的问题。

实验结果表明,复合辛普森公式在使用相同的步长时,其数值积分结果更为精确。

【实验结果】我以一个实际问题作为例子来展示实验结果。

问题是计算半径为1的圆的面积。

通过离散化的方法,我将圆划分为多个小的扇形区域,并使用数值积分方法计算每个扇形的面积。

最后将每个扇形的面积相加,即可得到圆的近似面积。

通过调整离散化的精度,我发现随着扇形数量的增加,计算得到的圆的面积越接近真实的圆的面积。

在插值问题中,我选择了一段经典的函数进行插值研究。

通过选择不同的插值节点和插值方法,我发现当插值节点越密集时,插值结果越接近原函数。

同时,样条插值方法在高阶导数连续的情况下能够更好地逼近原始函数。

【实验总结】通过这次实验,我对数值分析中的插值和数值积分方法有了更深入的理解。

我了解到不同的数值方法在不同的问题中有着不同的适用性和精确度。

在实际应用中,我们需要根据具体问题选择合适的数值方法,并进行必要的数值计算和分析,以获得准确可靠的结果。

总的来说,数值分析作为一种重要的工具和方法,在科学研究和工程实践中具有广泛的应用,并且不断发展和创新。

数值分析实验报告2

数值分析实验报告2

实验报告实验项目名称函数逼近与快速傅里叶变换实验室数学实验室所属课程名称数值逼近实验类型算法设计实验日期班级学号姓名成绩512*x^10 - 1280*x^8 + 1120*x^6 - 400*x^4 + 50*x^2 - 1并得到Figure,图像如下:实验二:编写程序实现[-1,1]上n阶勒让德多项式,并作画(n=0,1,…,10 在一个figure中)。

要求:输入Legendre(-1,1,n),输出如a n x n+a n-1x n-1+…多项式。

在MATLAB的Editor中建立一个M-文件,输入程序代码,实现勒让德多项式的程序代码如下:function Pn=Legendre(n,x)syms x;if n==0Pn=1;else if n==1Pn=x;else Pn=expand((2*n-1)*x*Legendre(n-1)-(n-1)*Legendre(n-2))/(n);endx=[-1:0.1:1];A=sym2poly(Pn);yn=polyval(A,x);plot (x,yn,'-o');hold onend在command Windows中输入命令:Legendre(10),得出的结果为:Legendre(10)ans =(46189*x^10)/256 - (109395*x^8)/256 + (45045*x^6)/128 - (15015*x^4)/128 + (3465*x^2)/256 - 63/256并得到Figure,图像如下:实验三:利用切比雪夫零点做拉格朗日插值,并与以前拉格朗日插值结果比较。

在MATLAB的Editor中建立一个M-文件,输入程序代码,实现拉格朗日插值多项式的程序代码如下:function [C,D]=lagr1(X,Y)n=length(X);D=zeros(n,n);D(:,1)=Y';for j=2:nfor k=j:nD(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1));endendC=D(n,n);for k=(n-1):-1:1C=conv(C,poly(X(k)));m=length(C);C(m)= C(m)+D(k,k);end在command Windows 中输入如下命令:clear,clf,hold on;k=0:10;X=cos(((21-2*k)*pi)./22); %这是切比雪夫的零点Y=1./(1+25*X.^2);[C,D]=lagr1(X,Y);x=-1:0.01:1;y=polyval(C,x);plot(x,y,X,Y,'.');grid on;xp=-1:0.01:1;z=1./(1+25*xp.^2);plot(xp,z,'r')得到Figure ,图像如下所示:比较后发现,使用切比雪夫零点做拉格朗日插值不会发生龙格现象。

数值分析课程实验报告-二分法和牛顿迭代法

数值分析课程实验报告-二分法和牛顿迭代法
《数值分析》课程实验报告
用二分法和牛顿迭代法求方程的根
算法名称用二分法和牛顿迭代法求方程的根
学科专业机械工程
作者姓名xxxxxx
作者学号xxxBiblioteka xx作者班级xxxxxxxx
xx大学
二〇一五年十二月
《数值分析》课程实验报告
实验名称
用二分法和牛顿迭代法求方程的根
成绩
一、问题背景
在科学研究与工程计算中,常遇到方程(组)求根问题。若干个世纪以来,工程师和数学家花了大量时用于探索求解方程(组),研究各种各样的方程求解方法。对于方程f(x)=0,当f(x)为线性函数时,称f(x)=0为线性方程;当f(x)为非线性函数时,称式f(x)=0为非线性方程。对于线性方程(组)的求解,理论与数值求法的成果丰富;对于非线性方程的求解,由于f(x)的多样性,尚无一般的解析解法。当f(x)为非线性函数时,若f(x)=0无解析解,但如果对任意的精度要求,设计迭代方程,数值计算出方程的近似解,则可以认为求根的计算问题已经解决,至少能够满足实际要求。
fx=subs(ff,x,xk);
fa=subs(ff,x,a);
k=k+1;
iffx==0
y(k)=xk;
break;
elseiffa*fx<0
b=xk;
else
a=xk;
end
y(k)=xk;
end
plot(y,'.-');
gridon
(2)牛顿迭代法程序:
functionx=newton(xx,n)
对二分法和牛顿迭代法的观察和分析我们可以知道,二分法的优点是方法比较简单,编程比较容易,只是二分法只能用于求方程的近似根,不能用于求方程的复根,且收敛速度慢。而牛顿迭代法的收敛速度明显大于二分法的速度。

数值分析实验报告

数值分析实验报告

一、实验目的1. 理解数值分析的基本概念和常用算法;2. 掌握数值方法在求解实际问题中的应用;3. 培养编程能力,提高对数值分析软件的使用熟练度。

二、实验内容本次实验主要涉及以下内容:1. 拉格朗日插值法;2. 牛顿插值法;3. 线性方程组的求解方法;4. 方程求根的数值方法;5. 最小二乘法曲线拟合。

三、实验步骤1. 拉格朗日插值法(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。

(2)计算拉格朗日插值多项式L(x)。

(3)利用L(x)计算待求点x0的函数值y0。

2. 牛顿插值法(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。

(2)计算牛顿插值多项式N(x)。

(3)利用N(x)计算待求点x0的函数值y0。

3. 线性方程组的求解方法(1)输入数据:给定线性方程组的系数矩阵A和常数向量b。

(2)采用高斯消元法求解线性方程组Ax=b。

4. 方程求根的数值方法(1)输入数据:给定函数f(x)和初始值x0。

(2)采用二分法求解方程f(x)=0的根。

5. 最小二乘法曲线拟合(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。

(2)建立线性最小二乘模型y=F(x)。

(3)利用最小二乘法求解模型参数。

四、实验结果与分析1. 拉格朗日插值法与牛顿插值法的比较通过实验,我们发现牛顿插值法的精度高于拉格朗日插值法。

这是因为牛顿插值法在计算过程中考虑了前一项的导数信息,从而提高了插值多项式的平滑性。

2. 线性方程组的求解方法高斯消元法在求解线性方程组时,计算过程较为繁琐,但稳定性较好。

在实际应用中,可根据具体问题选择合适的方法。

3. 方程求根的数值方法二分法在求解方程时,收敛速度较慢,但具有较好的稳定性。

对于初始值的选择,应尽量接近真实根。

4. 最小二乘法曲线拟合最小二乘法在拟合曲线时,误差较小,适用于数据点较多的情况。

数值分析实验报告

数值分析实验报告

数值分析实验报告篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告数值分析实验报告课题一:解线性方程组的直接方法1.实验目的:1、通过该课题的实验,体会模块化结构程序设计方法的优点;2、运用所学的计算方法,解决各类线性方程组的直接算法;3、提高分析和解决问题的能力,做到学以致用;4、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。

2.实验过程:实验代码:#include &quot;stdio.h&quot;#include &quot;math.h&quot;#includeiostreamusing namespace std;//Gauss法void lzy(double **a,double *b,int n) {int i,j,k;double l,x[10],temp;for(k=0;kn-1;k++){for(j=k,i=k;jn;j++){if(j==k)temp=fabs(a[j][k]);else if(tempfabs(a[j][k])){temp=fabs(a[j][k]);i=j;}}if(temp==0){cout&quot;无解\n; return;}else{for(j=k;jn;j++){temp=a[k][j];a[k][j]=a[i][j];a[i][j]=temp;}temp=b[k];b[k]=b[i];b[i]=temp;}for(i=k+1;in;i++) {l=a[i][k]/a[k][k];for(j=k;jn;j++)a[i][j]=a[i][j]-l*a[k][j]; b[i]=b[i]-l*b[k];}if(a[n-1][n-1]==0){cout&quot;无解\n;return;}x[n-1]=b[n-1]/a[n-1][n-1];for(i=n-2;i=0;i--){temp=0;for(j=i+1;jn;j++)temp=temp+a[i][j]*x[j];x[i]=(b[i]-temp)/a[i][i];}for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]); printf(&quot;\n&quot;);}}//平方根法void pfg(double **a,double *b,int n)int i,k,m;double x[8],y[8],temp;for(k=0;kn;k++){temp=0;for(m=0;mk;m++)temp=temp+pow(a[k][m],2);if(a[k][k]temp)return;a[k][k]=pow((a[k][k]-temp),1.0/2.0);for(i=k+1;in;i++){temp=0;for(m=0;mk;m++)temp=temp+a[i][m]*a[k][m]; a[i][k]=(a[i][k]-temp)/a[k][k]; }temp=0;for(m=0;mk;m++)temp=temp+a[k][m]*y[m];y[k]=(b[k]-temp)/a[k][k];}x[n-1]=y[n-1]/a[n-1][n-1];for(k=n-2;k=0;k--){temp=0;for(m=k+1;mn;m++)temp=temp+a[m][k]*x[m];x[k]=(y[k]-temp)/a[k][k];}for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]);printf(&quot;\n&quot;);}}//追赶法void zgf(double **a,double *b,int n){int i;double a0[10],c[10],d[10],a1[10],b1[10],x[10],y[10]; for(i=0;in;i++){a0[i]=a[i][i];if(in-1)c[i]=a[i][i+1];if(i0)d[i-1]=a[i][i-1];}a1[0]=a0[0];for(i=0;in-1;i++){b1[i]=c[i]/a1[i];a1[i+1]=a0[i+1]-d[i+1]*b1[i];}y[0]=b[0]/a1[0];for(i=1;in;i++)y[i]=(b[i]-d[i]*y[i-1])/a1[i];x[n-1]=y[n-1];for(i=n-2;i=0;i--)x[i]=y[i]-b1[i]*x[i+1];for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]); printf(&quot;\n&quot;);}}int main(){int n,i,j;double **A,**B,**C,*B1,*B2,*B3;A=(double **)malloc(n*sizeof(double)); B=(double **)malloc(n*sizeof(double));C=(double **)malloc(n*sizeof(double));B1=(double *)malloc(n*sizeof(double));B2=(double *)malloc(n*sizeof(double));B3=(double *)malloc(n*sizeof(double));for(i=0;in;i++){A[i]=(double *)malloc((n)*sizeof(double));B[i]=(double*)malloc((n)*sizeof(double));C[i]=(double*)malloc((n)*sizeof(double)); }cout&quot;第一题(Gauss列主元消去法):&quot;endlendl; cout&quot;请输入阶数n:&quot;endl;cinn;cout&quot;\n请输入系数矩阵:\n\n&quot;;for(i=0;in;i++)for(j=0;jn;j++){篇三:数值分析实验报告(包含源程序) 课程实验报告课程实验报告。

数值分析实验报告

数值分析实验报告

《数值分析》实验报告2019年5月一、问题的提出由于计算机的实质计算是在一个有限的浮点数集合上进行的,在大量运算中的误差积累会使得计算过程出现不稳定,通过实验深入了解高斯消元法从理论算法到数值算法,能稳定的关键是选主元。

二、实验名称运用MATLAB编程实现高斯消去法和高斯列主元消去法。

三、实验目的1、熟悉了解高斯消去法和高斯列主元消去法的算法。

2、学习MATLAB软件的功能。

四、基本原理五、实验环境操作环境:Windows实验平台:Matlab软件六、实验设计1 高斯顺序消去法(1)算例:课本p10例1(2)程序清单高斯消去法的MATLAB函数文件gauss.m如下:clcclear allA=[1,1,1;0,4,-1;2,-2,1];r=[6;5;1];[row,col]=size(A);n=row;%-------------------------------------------------------------------B=A;b=r;C=B;c=b;for i=1:n[maxi,row]=max(abs(C(:,i)));if C(row,i)<0maxi=-maxi;endB(i,:)=C(row,:);B(row,:)=C(i,:);b(i)=c(row);b(row)=c(i);B(i,:)=B(i,:)/maxi;b(i)=b(i)/maxi;C=B;for j=i+1:nB(j,:)=B(j,:)-C(j,i)*B(i,:);b(j)=b(j)-C(j,i)*b(i);endC=B;C(i,:)=0;C(:,i)=0;c=b;end%-------------------------------------------------------------------x(n)=b(n);for i=n-1:-1:1sum=0;for j=i+1:nsum=sum+B(i,j)*x(j);endx(i)=(1/B(i,i))*(b(i)-sum);end%-------------------------------------------------------------------% Input% Ax=rdisp(' 输入 Ax=r') disp('输入矩阵 A =')disp(A)disp(' r =')disp(r)% Output% Bx=bdisp(' 输出 Bx=b')disp(' 上三角矩阵 B =') disp(B)disp(' b=')disp(b)disp(' 求得方程组的解 :') x=x'(3)实验结果及分析:Ax=r输入矩阵 A =1 1 10 4 -12 -2 1r =651输出 Bx=b上三角矩阵 B =1.0000 -1.0000 0.5000 0 1.0000 -0.2500 0 0 1.0000b=0.50001.25003.0000求得方程组的解 :x =232 列主元消去法(1)算例:课本p10页例1(2)程序清单高斯列主元消去法的MATLAB函数文件gauss_lie.m如下:function x=gauss_lie(A,b)%采用高斯列主元法求解方程组Ax=bn=length(b);p=1:n;lu=A;y=[];for k=1:n[c,i]=max(abs(lu(k:n,k)));ik=i+k-1;if ik~=km=p(k);p(k)=p(ik);p(ik)=m;ck=lu(k,:);lu(k,:)=lu(ik,:);lu(ik,:)=ck;endif k==nbreak;lu(k+1:n,k)=lu(k+1:n,k)/lu(k,k);lu(k+1:n,k+1:n)=lu(k+1:n,k+1:n)-lu(k+1:n,k)*lu(k,k+1:n);endl=diag(ones(n,1))+tril(lu,-1);u=triu(lu);y(1)=b(p(1));for i=2:ny(i)=b(p(i))-l(i,1:i-1)*y(1:i-1)';endx(n)=y(n)/u(n,n);for i=n-1:-1:1x(i)=(y(i)-u(i,i+1:n)*x(i+1:n)')/u(i,i);endx=x';(3)实验结果及分析:>> A=[1,1,1;0,4,-1;2,-2,1];>> b=[6;5;1];>> gauss_lie (A,b);ans =13七、结果说明用消去法解方程组的基本思想都是设法消去方程组的系数矩阵A的主对角线下的元素,将AX=b化为等价的上三角形方程组,然后再通过回代过程获得方程组的解。

数值分析课程实验报告

数值分析课程实验报告

数值分析课程实验报告
《数值分析》课程实验报告
实验名称用二分法和迭代法求方程的根
成绩
一、实验目的
掌握利用二分法以及迭代法求方程近似根的方法,并学会运用matlab软件编写程序,求解出方程的根,对迭代法二分法进一步认识并灵活运用。

二、实验内容
比较求方程50xxe的根,要求精确到小数点后的第4位1.在区间[0,1]内用二分法;
2.用迭代法1/5kxkxe,取初值00.25x.三、算法描述
1、二分法:二分法是最简单的求根方法,它是利用连续函数的零点定理,将汗根区间逐次减半缩小,取区间的中点构造收敛点列{}来逼近根x.
2、迭代法:迭代法是一种逐次逼近的方法,其步骤是首先给定一个粗糙的初始值,然后用一个迭代公式反复修正这个值,知道满足要求为止。

四、实验步骤
11、二分法:
(1)计算f(x)在区间[0,1]端点处的值f(0)和f(1)的值;
(2)计算f(x)在区间【0,1】的中点(0+1)/2=1/2处的
值f((a+b)/2);
(3)如果函数值f(1/2)=0,则1/2是f(x)=0的实根,输出根x,终止;
否则继续转(4)继续做检验。

由于f(1/2)≠0,所以继续做检验。

(4)如果函数值f(0)*f(1/2)。

数值分析绪论实验报告

数值分析绪论实验报告

一、实验目的1. 了解数值分析的基本概念和主要内容;2. 掌握数值计算的基本方法,如插值、求根、数值积分等;3. 培养使用计算机进行数值计算的能力;4. 增强对数值分析在实际问题中的应用意识。

二、实验内容1. 插值法:拉格朗日插值、牛顿插值;2. 求根法:二分法、牛顿法、不动点迭代法;3. 数值积分:矩形法、梯形法、辛普森法。

三、实验步骤1. 插值法实验(1)编写拉格朗日插值程序,以x1, x2, ..., xn为节点,y1, y2, ..., yn为函数值,求插值多项式P(x)。

(2)编写牛顿插值程序,以x1, x2, ..., xn为节点,y1, y2, ..., yn为函数值,求插值多项式P(x)。

2. 求根法实验(1)编写二分法程序,求方程f(x) = 0在区间[a, b]上的根。

(2)编写牛顿法程序,求方程f(x) = 0在初始值x0附近的根。

(3)编写不动点迭代法程序,求方程f(x) = 0在初始值x0附近的根。

3. 数值积分实验(1)编写矩形法程序,求定积分∫f(x)dx在区间[a, b]上的近似值。

(2)编写梯形法程序,求定积分∫f(x)dx在区间[a, b]上的近似值。

(3)编写辛普森法程序,求定积分∫f(x)dx在区间[a, b]上的近似值。

四、实验结果与分析1. 插值法实验(1)使用拉格朗日插值法,以x1, x2, ..., xn为节点,y1, y2, ..., yn为函数值,求插值多项式P(x)。

(2)使用牛顿插值法,以x1, x2, ..., xn为节点,y1, y2, ..., yn为函数值,求插值多项式P(x)。

2. 求根法实验(1)使用二分法,求方程f(x) = 0在区间[a, b]上的根。

(2)使用牛顿法,求方程f(x) = 0在初始值x0附近的根。

(3)使用不动点迭代法,求方程f(x) = 0在初始值x0附近的根。

3. 数值积分实验(1)使用矩形法,求定积分∫f(x)dx在区间[a, b]上的近似值。

数值分析课程设计实验报告

数值分析课程设计实验报告

院系:数学与统计学学院专业:信息与计算科学年级: 11级课程名称:数值分析课程设计 2014年6月11日一摘要从设计图形用户界面的框架结构及实现人机交互人手,着重说明用MATLAB语言进行图形用户界面程序设计时数值分析算法动态演示系统界面及集成测试,并以具体实例,详细论述制作图形用户界面时回调函数的编写方法。

本文探讨了数值分析算法动态演示系统界面和系统集成及测试。

将数值分析课程设计所需要的输入和结果用GUI界面显示出来,自动生成所需要的生成报告,将结果用图形和文本输出的两种方式展示出来,方便老师的批阅同时也是学生自己一目了然。

关键词:MATLAB;图形用户界面;动态演示;集成测试;控件设计;回调函数二引言MATLAB是一套高性能的数值分析和可视化的科技应用软件。

它集高效的数值分析、完备的信号处理和图像处理、功能丰富的应用工具箱为一体,构成了一个方便快捷,界面友好的用户环境,是一种适应多种硬件平台的数学计算工具,它的出现给各课程的计算机辅助教学带来了福音。

特别是它的集成图形用户界面GUIDE(Graphical User Interface Development Environment),包含了窗口菜单、对话框、按钮和文本等各种控件的用户界面,用户通过键盘或鼠标操作,就可以设计出具有自己独特风格的图形界面,再通过编写回调函数皆可以实现GUI与用户之间的交互,为教学课件的制作提供了极大的方便,GUIDE程序设计分两步进行,一是静态图形界面制作,二是控件回调函数编程。

1 静态图形界面制作在matlab 的命令窗口中键入“guide”命令,启动GUIDE 的GUI 编辑器,GUI 控制面板包括了所有的图形界面控件uicontrol,如按钮(Push Butter)、滑动条(Slider)、单选按钮(Radio Butter)、复选框(Check box)、文本框(Edit Text)、文本标签(Ststic Text)、下拉菜单(PopupMenu)、下拉列表框(List box)、双位按钮(Toggle Butter)、坐标轴(Axes)等,用户选中需要的控件,拖移到空白处,即可创建出相应的控件,并通过拖拉可调整其大小,如图1所示。

数值分析实验报告写作范本

数值分析实验报告写作范本

学号:
姓名:
实验二插值法
实验2.1(多项式插值的振荡现象)
问题提出:考虑一个固定的区间上用插值逼近一个函数。

显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。

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

龙格给出了一个极著名例子。

设区间[-1,1]上函数
f(x)=1/(1+25x^2)
实验内容:考虑区间[-1,1]的一个等距划分,分点为:
x(i)=-1+2i/n,i=0,1,2…,n
则拉格朗日插值多项式为:
L(x)=∑l(i)(x)/(1+25x(j)^2 ) i=0,1,…n
其中l(i)(x), i=0,1,…n,n是n次拉格朗日插值基函数。

实验要求:
⑴选择不断增大的分点数目n=2,3…,画出f(x)及插值多项式函数L(x)在[-1,1]上的图象,比较分析实验结果。

(2)选择其它的函数,例如定义在区间[-5,5]上的函数
h(x)=x/(1+x^4) , g(x)=arctanx
重复上述的实验看其结果如何。

(3)区间[a,b]上切比雪夫点的定义为:
x k=(b+a)/2+((b-a)/2)cos((2k-1)π/(2(n+1))),k=1,2,^,n+1
以x1,x2^x(n+1)为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。

实验过程:
程序:。

数值实验结果及分析:。

讨论。

实验总结:。

《数值分析》实验研究报告

《数值分析》实验研究报告

《数值分析》实验报告册
姓名:
学号:
专业:
年级:
武汉科技大学理学院
信息与计算科学系
学年第学期
说明:
1、实验目的要写清楚为什么要做这个实验,其目的是什么,做完这个实验要达到什么
结果,实验的注意事项是什么等;
2、实验题目一栏要填写清楚具体的实验题目;
3、实验原理要将实验所涉及的基础理论、算法原理详尽列出;
4、实验内容列出实验的实施方案、步骤、数据准备、算法流程图以及可能用到的实验
设备(硬件和软件);
5、实验结果应包括实验的原始数据、中间结果及最终结果,复杂的结果可用表格或图
形形式实现,较为简单的结果可以与实验结果分析合并出现;
6、实验结果分析要对实验的结果进行认真的分析,进一步明确实验所涉及的算法的优
缺点和使用范围,要求实验结果应能在计算机上实现或演示,由实验者独立编程实现,程序清单以附录的形式给出;
7、报告填写用“宋体”(小四)格式字体。

实验一
实验二
实验三
实验四
1111
4
5335 111⎥⎥⎥
----⎥


实验五 14114⎥⎥--⎥⎥-⎦ 55⎥⎥⎥⎥⎦。

《数值分析》上机实验报告

《数值分析》上机实验报告

数值分析上机实验报告《数值分析》上机实验报告1.用Newton 法求方程 X 7-X 4+14=0在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。

1.1 理论依据:设函数在有限区间[a ,b]上二阶导数存在,且满足条件{}αϕ上的惟一解在区间平方收敛于方程所生的迭代序列迭代过程由则对任意初始近似值达到的一个中使是其中上不变号在区间],[0)(3,2,1,0,)(')()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20)()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f ab c f x f b a x f b f x f k k k k k k ==-==∈≤-≠>+令)9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3225333647>⋅''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f故以1.9为起点⎪⎩⎪⎨⎧='-=+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。

当前后两个的差<=ε时,就认为求出了近似的根。

本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码:#include<stdio.h>#include<math.h>main(){double x2,f,f1;double x1=1.9; //取初值为1.9do{x2=x1;f=pow(x2,7)-28*pow(x2,4)+14;f1=7*pow(x2,6)-4*28*pow(x2,3);x1=x2-f/f1;}while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);}1.3 运行结果:1.4 MATLAB上机程序function y=Newton(f,df,x0,eps,M)d=0;for k=1:Mif feval(df,x0)==0d=2;breakelsex1=x0-feval(f,x0)/feval(df,x0);ende=abs(x1-x0);x0=x1;if e<=eps&&abs(feval(f,x1))<=epsd=1;breakendendif d==1y=x1;elseif d==0y='迭代M次失败';elsey= '奇异'endfunction y=df(x)y=7*x^6-28*4*x^3;Endfunction y=f(x)y=x^7-28*x^4+14;End>> x0=1.9;>> eps=0.00001;>> M=100;>> x=Newton('f','df',x0,eps,M);>> vpa(x,7)1.5 问题讨论:1.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

数值分析实验报告

数值分析实验报告
{
x0[i] = 0.01*i;//采用循环对数组变量x[100]赋值
}
rk_getback(x0, y0, 0.01, -50);//调用R-K函数计算得到每一个x(n)对应的y(n)值
CSeries embro = (CSeries)m_chart.Series(0);//使用画图控件Teechart进行画图
}
for (i = 0; i <= 200; i++)//利用插值多项式计算201个数值用于绘图
{
a1[i] = u + i*0.01;
b1[i] = 1 / (1 + 25 * a1[i] * a1[i]);
y[i] = Lagrange(a1[i], n, a2, b2);
}
m_chart.AddSeries(0);//用teechart绘制插值多项式函数图像
m3 = m.transpose()*y;//计算Y矩阵
m4 = m2*m3;//计算系数矩阵
CSeries serdemo = (CSeries)m_mchart.Series(0);//创建CSeries对象
MatrixXd m5(1, 4),m6(1,1);//创建1*4和1*1的矩阵
int i;
考虑在一个固定的区间上用插值逼近一个函数。显然Lagrange插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。Runge给出的一个例子是极著名并富有启发性的。设区间[-1,1]上函数
考虑区间[-1,1]的一个等距划分,分点为
则拉格朗日插值多项式为
int i, n =19;
double j = 2.0 / (n ), u = -1.0, v = 1.0;

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告数值分析上机实验报告一、引言数值分析是一门研究利用计算机进行数值计算的学科。

通过数值分析,我们可以使用数学方法和算法来解决实际问题,例如求解方程、插值和逼近、数值积分等。

本次上机实验旨在通过编程实现数值计算方法,并应用于实际问题中。

二、实验目的本次实验的目的是掌握数值计算方法的基本原理和实现过程,加深对数值分析理论的理解,并通过实际应用提高编程能力。

三、实验内容1. 数值求解方程首先,我们使用二分法和牛顿迭代法分别求解非线性方程的根。

通过编写程序,输入方程的初始值和精度要求,计算得到方程的根,并与理论解进行对比。

2. 数值插值和逼近接下来,我们使用拉格朗日插值和最小二乘法进行数据的插值和逼近。

通过编写程序,输入给定的数据点,计算得到插值多项式和逼近多项式,并绘制出插值曲线和逼近曲线。

3. 数值积分然后,我们使用梯形法和辛普森法进行定积分的数值计算。

通过编写程序,输入被积函数和积分区间,计算得到定积分的近似值,并与解析解进行比较。

四、实验步骤1. 数值求解方程(1)使用二分法求解非线性方程的根。

根据二分法的原理,编写程序实现二分法求解方程的根。

(2)使用牛顿迭代法求解非线性方程的根。

根据牛顿迭代法的原理,编写程序实现牛顿迭代法求解方程的根。

2. 数值插值和逼近(1)使用拉格朗日插值法进行数据的插值。

根据拉格朗日插值法的原理,编写程序实现数据的插值。

(2)使用最小二乘法进行数据的逼近。

根据最小二乘法的原理,编写程序实现数据的逼近。

3. 数值积分(1)使用梯形法进行定积分的数值计算。

根据梯形法的原理,编写程序实现定积分的数值计算。

(2)使用辛普森法进行定积分的数值计算。

根据辛普森法的原理,编写程序实现定积分的数值计算。

五、实验结果与分析1. 数值求解方程通过二分法和牛顿迭代法,我们成功求解了给定非线性方程的根,并与理论解进行了对比。

结果表明,二分法和牛顿迭代法都能够较好地求解非线性方程的根,但在不同的问题中,二者的收敛速度和精度可能会有所差异。

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

水手、猴子和椰子问题
实验题目:有五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。

由于旅途的颠簸,大家都很疲倦,很快就入睡了。

第一个水手醒来后,把椰子平分成五堆,并将多余的一个椰子给了猴子,他私藏了一堆后便又去睡了。

第二、第三、第四、第五个水手也陆续起来,和第个水手一样,把椰子平分成五堆后,将恰好多的一个也给猴子,并私藏了一堆,再去入睡。

天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一个再给猴子。

试问原先共有几个椰子?
试分析椰子数目变化的规律,利用逆向递推的方法求解这一问题。

(必要时可简写为实验一、1.2,教材P13)
一、 实验目的
掌握利用逆向递推求解问题的方法,熟悉matlab 的循环操作。

二、 实验原理简述
求解这一问题可以用递推算法。

首先分析椰子数目的变化规律,设最初的椰子数为p 0,即第一个水手所处理之前的椰子数,用p 1、p 2、p 3、p4、p 5 分别表示五个水手对椰子动了手脚以后剩余的椰子数目,则根据问题有
)
4,3,2,1,0(,)1(541=-=+k p p k k
再用x 表示最后每个水手平分得到的椰子数,于是有
)1(515-=
p x
所以 p5 = 5x +1
利用逆向递推的方法,有
)
0,1,2,3,4(,1451=+=+k p p k k
有了逆向递推关系式,求解这一问题似乎很简单,但由于椰子数为一正整数,用任意的x 作为初值递推出的p0数据不一定是合适的。

这里用 for 循环语句结合 break 语句来寻找合适的 x 和 p0 ,对任意的 x 递推计算出 p0 ,当计算结果为正整数时,结果正确,否则选取另外的 x 再次重新递推计算,直到计算出的结果 p0 为正整数为止。

三、 实验结果
运行这段程序后,屏幕出现要求从键盘输入 x 数据的信息input n ,输入1200后,MATLAB 计算出合适的 x 和 p0 的值为:
1023 15621
四、 实验分析
由于:
44545)45()45()45()45(451451)1)1)1)1)15(4
5(45(45(45(4514556
5654325610-+=++++++=++++++=+=x x x p p
所以
4)1(4556
0-+=x p
要使得最初的椰子数p0为整数,必须取 (x +1) 为 4 5( =1024)的倍数,一种简单的处理可取 x = 1023。

五、 实验程序(含必要注释)
程序如下
%%
%% FIX Round towards zero.
%% FIX(X) rounds the elements of X to the nearest integers
%% towards zero.
n=input('input n:'); %%输入必要的n 值
for x=1:n %%外循环
p=5*x+1;
for k=1:5 %%内循环
p=5*p/4+1;
end
if p== fix(p) %%判断p 是否为整数
break
end
end
disp([x,p]) %%显示结果。

相关文档
最新文档