《数值计算方法》实验 (6)
数值计算方法实验报告

数值计算方法实验报告一、实验介绍本次实验是关于数值计算方法的实验,旨在通过计算机模拟的方法,实现对于数值计算方法的掌握。
本次实验主要涉及到的内容包括数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等。
二、实验内容1. 数值微积分数值微积分是通过计算机模拟的方法,实现对于微积分中的积分运算的近似求解。
本次实验中,我们将会使用梯形公式和辛普森公式对于一定区间上的函数进行积分求解,并比较不同公式的计算误差。
2. 线性方程组的求解线性方程组求解是数值计算领域中的重要内容。
本次实验中,我们将会使用高斯消元法、LU分解法等方法对于给定的线性方程组进行求解,并通过比较不同方法的计算效率和精度,进一步了解不同方法的优缺点。
3. 插值与拟合插值与拟合是数值计算中的另一个重要内容。
本次实验中,我们将会使用拉格朗日插值法和牛顿插值法对于给定的数据进行插值求解,并使用最小二乘法对于给定的函数进行拟合求解。
4. 常微分方程的数值解常微分方程的数值解是数值计算中的难点之一。
本次实验中,我们将会使用欧拉法和龙格-库塔法等方法对于给定的常微分方程进行数值解的求解,并比较不同方法的计算精度和效率。
三、实验结果通过本次实验,我们进一步加深了对于数值计算方法的理解和掌握。
在数值微积分方面,我们发现梯形公式和辛普森公式都能够有效地求解积分,但是辛普森公式的计算精度更高。
在线性方程组求解方面,我们发现LU分解法相对于高斯消元法具有更高的计算效率和更好的数值精度。
在插值与拟合方面,我们发现拉格朗日插值法和牛顿插值法都能够有效地进行插值求解,而最小二乘法则可以更好地进行函数拟合求解。
在常微分方程的数值解方面,我们发现欧拉法和龙格-库塔法都能够有效地进行数值解的求解,但是龙格-库塔法的数值精度更高。
四、实验总结本次实验通过对于数值计算方法的模拟实现,进一步加深了我们对于数值计算方法的理解和掌握。
在实验过程中,我们了解了数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等多个方面的内容,在实践中进一步明确了不同方法的特点和优缺点,并可以通过比较不同方法的计算效率和数值精度来选择合适的数值计算方法。
数值计算基础实验报告(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库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。
数值计算方法实验报告

数值计算方法实验报告实验目的:通过实验验证不同数值计算方法在求解数学问题时的精度和效率,并分析其优缺点。
实验原理:实验内容:本实验选取了三个典型的数值计算问题,并分别采用了二分法、牛顿迭代法和梯度下降法进行求解。
具体问题和求解方法如下:1. 问题一:求解方程sin(x)=0的解。
-二分法:利用函数值的符号变化将解空间不断缩小,直到找到满足精度要求的解。
-牛顿迭代法:通过使用函数的斜率来逼近方程的解,并不断逼近真实解。
-梯度下降法:将方程转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,进而找到方程的解。
2.问题二:求解函数f(x)=x^2-3x+2的极小值点。
-二分法:通过确定函数在一个区间内的变化趋势,将极小值所在的区间不断缩小,从而找到极小值点。
-牛顿迭代法:通过使用函数的导数和二阶导数来逼近极小值点,并不断逼近真实解。
-梯度下降法:将函数转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,进而找到函数的极小值点。
3. 问题三:求解微分方程dy/dx = -0.1*y的解。
-二分法:通过离散化微分方程,将微分方程转化为一个差分方程,然后通过迭代计算不同点的函数值,从而得到函数的近似解。
-牛顿迭代法:将微分方程转化为一个积分方程,并通过迭代计算得到不同点的函数值,从而得到函数的近似解。
-梯度下降法:将微分方程转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,从而得到函数的近似解。
实验步骤:1.编写代码实现各个数值计算方法的求解过程。
2.对每个数值计算问题,设置合适的初始值和终止条件。
3.运行程序,记录求解过程中的迭代次数和每次迭代的结果。
4.比较不同数值计算方法的精度和效率,并分析其优缺点。
实验结果:经过实验测试,得到了如下结果:-问题一的二分法迭代次数为10次,求解结果为x=0;牛顿迭代法迭代次数为4次,求解结果为x=0;梯度下降法迭代次数为6次,求解结果为x=0。
-问题二的二分法迭代次数为10次,求解结果为x=1;牛顿迭代法迭代次数为3次,求解结果为x=1;梯度下降法迭代次数为4次,求解结果为x=1-问题三的二分法迭代次数为100次,求解结果为y=e^(-0.1x);牛顿迭代法迭代次数为5次,求解结果为y=e^(-0.1x);梯度下降法迭代次数为10次,求解结果为y=e^(-0.1x)。
数值计算方法答案

1数值计算方法习题一(2)习题二(6)习题三(15)习题四(29)习题五(37)习题六(62)习题七(70)2009.9,92习题一1.设x>0相对误差为2%,4x的相对误差。
解:由自变量的误差对函数值引起误差的公式:(())(())'()()()()f x xf x f x xf x f xδδ∆=≈得(1)()f x=11()()*2%1%22x xδδδ≈===;(2)4()f x x=时444()()'()4()4*2%8%xx x x xxδδδ≈===2.设下面各数都是经过四舍五入得到的近似数,即误差不超过最后一位的半个单位,试指出他们各有几位有效数字。
(1)12.1x =;(2)12.10x =;(3)12.100x =。
解:由教材9P关于1212.m nx a a a bb b=±型数的有效数字的结论,易得上面三个数的有效数字位数分别为:3,4,53.用十进制四位浮点数计算(1)31.97+2.456+0.1352;(2)31.97+(2.456+0.1352)哪个较精确?解:(1)31.97+2.456+0.1352≈21((0.3197100.245610)0.1352)fl fl⨯+⨯+=2(0.3443100.1352)fl⨯+=0.3457210⨯(2)31.97+(2.456+0.1352)21(0.319710(0.245610))fl fl≈⨯+⨯= 21(0.3197100.259110)fl⨯+⨯=0.3456210⨯易见31.97+2.456+0.1352=0.345612210⨯,故(2)的计算结果较精确。
4.计算正方形面积时,若要求面积的允许相对误差为1%,测量边长所允许的相对误差限为多少?3解:设该正方形的边长为x,面积为2()f x x=,由(())(())'()()()()f x xf x f x xf x f xδδ∆=≈解得(())()()'()f x f xxxf xδδ≈=2(())(())22f x x f xx xδδ==0.5%5.下面计算y的公式哪个算得准确些?为什么?(1)已知1x<<,(A)11121xyx x-=-++,(B)22(12)(1)xyx x=++;(2)已知1x>>,(A)y=,(B)y=;(3)已知1x<<,(A)22sin xyx=,(B)1cos2xyx-=;(4)(A)9y=(B)y=解:当两个同(异)号相近数相减(加)时,相对误差可能很大,会严重丧失有效数字;当两个数相乘(除)时,大因子(小除数)可能使积(商)的绝对值误差增大许多。
数值计算方法实验大纲

数学实验课程实验大纲
大纲制定时间:2009年8月
实验课程名称:数值计算方法实验(Mathematics Experiment )
课程负责人:邹昌文
课程分类:专业基础课课程类型:选修
适用专业:信息与计算科学
课程总学时:96 课程总学分:5
实验学时:32 实验学分:1
开课单位:理学院
大纲执笔人:邹昌文
一、实验的性质、目的与任务
本实验大纲内容是与理论课相配套的,是为了让同学通过一系列的上机实习,进一步掌握课堂上所学的内容,并有所扩充。
基本任务是让同学掌握matlab的基本应用,并在此基础上要求同学能完成一定难度的编程实验。
三、教材:《数值计算方法实验指导书》邹昌文 2009
参考书:《数值计算方法》李庆扬
四、考核方式:提交符合规定的实验报告
五、使用说明:
大纲制定人:邹昌文
大纲审定人:。
数值计算方法课后实验-李维国

实验3.1 Gauss消去法的数值稳定性实验实验目的:观察和理解高斯消元过程中出现小主元(即|a(k)kk|很小)时引起方程组解数值不稳定性.实验内容:求解方程组Ax=b,其中实验要求:(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的.(2)用高斯列主元消去法求得L和U及解向量x1,x2 .(3)用不选主元的高斯消去法求得L和U及解向量x1,x2 .(4)观察小主元并分析对计算结果的影响.解:(1)cond(A1)=68.4296cond(A2)=8.9939A1矩阵条件数远大于1,A1矩阵为病态;A2矩阵条件数没有远远大于1,A2矩阵为良态。
(2)高斯列主元消去法:程序如下ClearA1=[0.3*power(10,-15),59.14,3,1;5.291,-6.130,-1,2;11.2,9,5,2;1,2,1,1];b1=[59.17;46.18;1;2];% A1=[1,2,-1,1;1,1,2,-1;3,-1,1,1;2,1,3,-1];%b1=[1;-2;6;-1];A2=[10,-7,0,1;-3,2.0999********,6,2;5,-1,5,-1;0,1,0,2];b2=[8;5.900000000001;5;1];A=A1; b=b1;n=input('n=');for k=1:n-1 [a,b3]=max(A(k:n,k)); A([k k-1+b3],:)=A([k-1+b3 k],:); b([k k-1+b3],:)=b([k-1+b3 k],:); if A(k,k)~=0A(k+1:n,k)=A(k+1:n,k)./A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); else stop end endA; b; L=tril(A,-1);U=triu(A,0); for i=1:1:n L(i,i)=1;end L; for j=1:n-1 b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);end b(n)=b(n)/L(n,n); b; y=b;for j=n:-1:2 y(j)=y(j)/U(j,j); y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);end y(1)=y(1)/U(1,1);结果如下:方程组一:L1: U1:解向量x1结果如下:方程组二结果如下:L2:U2:解向量x2结果如下:(3)不选主元的分解程序如下:ClearA1=[0.3*power(10,-15),59.14,3,1;5.291,-6.130,-1,2;11.2,9,5,2;1,2,1,1]; b1=[59.17;46.18;1;2];%A1=[6,2,1,-1;2,4,1,0;1,1,4,-1;-1,0,-1,3];%b1=[6;-1;5;-5];A2=[10,-7,0,1;-3,2.0999********,6,2;5,-1,5,-1;0,1,0,2];b2=[ 8;5.900000000001;5;1]; A=A2; b=b2; n=input('n='); for k=1:n-1A(k+1:n,k)= A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); end L=tril(A,-1); U=triu(A,0); for i=1:1:n L(i,i)=1; end L ;for j=1:n-1 b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); end b(n)=b(n)/L(n,n); b; y=b;for j=n:-1:2 y(j)=y(j)/U(j,j); y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j); end y(1)=y(1)/U(1,1);方程组一结果:L1: U1:解向量x1结果如下:方程组二结果:L2: U2:解向量x2结果如下:(4) 观察方程在两种不同方法下的结果可知:由于计算机字长是一定的,小主元会造成大数除以小数的结果超出字长,结果发生很大的变化。
数值计算方法实验报告

一、实验目的1. 熟悉数值计算的基本概念和方法;2. 掌握数值计算的基本原理和算法;3. 提高编程能力和数值计算能力;4. 通过实验,加深对数值计算方法的理解和应用。
二、实验内容1. 矩阵运算2. 线性方程组求解3. 函数求值4. 微分方程求解三、实验步骤1. 矩阵运算(1)编写程序实现矩阵的加法、减法、乘法运算;(2)编写程序实现矩阵的转置运算;(3)编写程序实现矩阵的逆运算。
2. 线性方程组求解(1)编写程序实现高斯消元法求解线性方程组;(2)编写程序实现雅可比迭代法求解线性方程组;(3)编写程序实现高斯-赛德尔迭代法求解线性方程组。
3. 函数求值(1)编写程序实现牛顿迭代法求函数的零点;(2)编写程序实现二分法求函数的零点;(3)编写程序实现割线法求函数的零点。
4. 微分方程求解(1)编写程序实现欧拉法求解一阶微分方程;(2)编写程序实现龙格-库塔法求解一阶微分方程;(3)编写程序实现龙格-库塔-法求解二阶微分方程。
四、实验结果与分析1. 矩阵运算(1)矩阵加法、减法、乘法运算结果正确;(2)矩阵转置运算结果正确;(3)矩阵逆运算结果正确。
2. 线性方程组求解(1)高斯消元法求解线性方程组,结果正确;(2)雅可比迭代法求解线性方程组,结果正确;(3)高斯-赛德尔迭代法求解线性方程组,结果正确。
3. 函数求值(1)牛顿迭代法求函数的零点,结果正确;(2)二分法求函数的零点,结果正确;(3)割线法求函数的零点,结果正确。
4. 微分方程求解(1)欧拉法求解一阶微分方程,结果正确;(2)龙格-库塔法求解一阶微分方程,结果正确;(3)龙格-库塔-法求解二阶微分方程,结果正确。
五、实验总结本次实验通过对数值计算方法的学习和实践,使我对数值计算有了更深入的了解。
以下是我对本次实验的总结:1. 矩阵运算是数值计算的基础,熟练掌握矩阵运算对于解决实际问题具有重要意义;2. 线性方程组求解是数值计算中常见的问题,高斯消元法、雅可比迭代法和高斯-赛德尔迭代法是常用的求解方法;3. 函数求值是数值计算中另一个常见问题,牛顿迭代法、二分法和割线法是常用的求解方法;4. 微分方程求解是数值计算中的难点,欧拉法、龙格-库塔法和龙格-库塔-法是常用的求解方法。
《数值计算方法》试题集及答案(1-6)-2..

《计算方法》期中复习试题一、填空题:1、已知3.1)3(,2.1)2(,0.1)1(===f f f ,则用辛普生(辛卜生)公式计算求得⎰≈31_________)(dx x f ,用三点式求得≈')1(f 。
答案:2.367,0.252、1)3(,2)2(,1)1(==-=f f f ,则过这三点的二次插值多项式中2x 的系数为 ,拉格朗日插值多项式为 。
答案:-1,)2)(1(21)3)(1(2)3)(2(21)(2--------=x x x x x x x L3、近似值*0.231x =关于真值229.0=x 有( 2 )位有效数字;4、设)(x f 可微,求方程)(x f x =的牛顿迭代格式是( );答案)(1)(1n n n n n x f x f x x x '---=+5、对1)(3++=x x x f ,差商=]3,2,1,0[f ( 1 ),=]4,3,2,1,0[f ( 0 );6、计算方法主要研究( 截断 )误差和( 舍入 )误差;7、用二分法求非线性方程 f (x )=0在区间(a ,b )内的根时,二分n 次后的误差限为( 12+-n a b );8、已知f (1)=2,f (2)=3,f (4)=5.9,则二次Newton 插值多项式中x 2系数为( 0.15 ); 11、 两点式高斯型求积公式⎰1d )(xx f ≈(⎰++-≈1)]3213()3213([21d )(f f x x f ),代数精度为( 5 );12、 为了使计算32)1(6)1(41310---+-+=x x x y 的乘除法次数尽量地少,应将该表达式改写为11,))64(3(10-=-++=x t t t t y ,为了减少舍入误差,应将表达式19992001-改写为199920012+ 。
13、 用二分法求方程01)(3=-+=x x x f 在区间[0,1]内的根,进行一步后根的所在区间为 0.5,1 ,进行两步后根的所在区间为 0.5,0.75 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学《数值计算方法》
实
验
报
告
s1+=(*f)(temp1);/*公式(22)*/
s2+=(*f)(temp2);/*公式(22)*/ }
s=h/6.f*((*f)(a)+4*s1+2*s2+(*f)(b));/*复化辛卜生公式*/
printf("S(%d)=%11.10f\n",n,s);
fprintf(fp,"S(%d)=%11.10f\n",n,s);
deta=s-s0; /*前后两值的间距*/
if(fabs(deta)>eps)/*判断前后所求值的间距是否已满足精度*/
{ n++;/*区间等分数加1*/
s1=0;
s2=0;
s0=s; }
else
break;
}
○3数据处理与分析
当a=0,b=1,eps=1e-6;时
S(1)=0.7833333333,S(2)=0.7853921569
S(3)=0.7853979452,S(4)=0.7853981256
从计算结果看n=4时满足精度要求,即n=4时达到6为有效数字。
当a=0,b=1,eps=5e-10时
S(1)=0.7833333333,S(2)=0.7853921569,S(3)=0.7853979452
S(4)=0.7853981256,S(5)=0.7853981535,S(6)=0.7853981601
S(7)=0.7853981621,S(8)=0.7853981628,S(9)=0.7853981631
从计算结果看n=9时满足精度要求。
在n=7时有9位有效数字,而同时可知n=4时也已达到7位有效数字。
MATLAB绘图
temp2=a+h/2.;
c2=(*f)(temp2);/*公式(25)在k=0下的值*/
temp3=a+3*h/4.;
c3=(*f)(temp3);/*公式(26)在k=0下的值*/
for(k=1;k!=n;k++)
temp1=a+k*h+h/4.;
{
temp2=a+k*h+h/2;
temp3=a+k*h+3*h/4;
temp4=a+k*h;
c1+=(*f)(temp1);/*公式(24)*/
c2+=(*f)(temp2);/*公式(25)*/
c3+=(*f)(temp3);/*公式(26)*/
c4+=(*f)(temp4);/*公式(27)*/ }
c=h/90.f*(7*(*f)(a)+32*c1+12*c2+32*c3+14*c4+7*(*f)(b));/*复化复化柯特斯公式*/ printf("C(%d)=%11.10f\n",n,c);
fprintf(fp,"C(%d)=%11.10f\n",n,c);
deta=c-c0;/*前后两值的间距*/
if(fabs(deta)>eps)/*判断前后所求值的间距是否已满足精度*/
{ n++;/*区间等分数加1*/
c1=0;
c2=0;
c3=0;
c4=0;
c0=c; }
else
break;
}
○3数据处理与分析
当a=0,b=1,eps=1e-6;时
t1=t2;
h/=2.0;/*把区间n等分,每个区间的长度*/
}
else
break;
}
○3数据处理与分析
当a=0,b=1,eps=1e-6;时
T(2)=0.7750000000,T(4)=0.7827941176,T(8)=0.7847471236
T(16)=0.7852354030,T(32)=0.7853574733,T(64)=0.7853879909
T(128)=0.7853956203,T(256)=0.7853975276,T(512)=0.7853980045
从计算结果看n=512时满足精度要求,即n=512时达到6位有效数字。
当a=0,b=1,eps=5e-10时
T(2)=0.7750000000,T(4)=0.7827941176,T(8)=0.7847471236
T(16)=0.7852354030,T(32)=0.7853574733,T(64)=0.7853879909
T(128)=0.7853956203,T(256)=0.7853975276,T(512)=0.7853980045
T(1024)=0.7853981237,T(2048)=0.7853981535,T(4096)=0.7853981609
T(8192)=0.7853981628,T(16384)=0.7853981632
从计算结果看n=16384,满足精度要求,在n=4096时达到8位有效数字。
f 12121212,,,,/2,*2r r c c s s t t h n ======
○
2主要程序代码 while(1)
{
temp=0;
for(k=0;k!=n;k++)
{
x=a+k*h+h/2.;/*公式(31)*/
temp+=(*f)(x);/*公式(32)*/
}
t2=(t1+temp*h)/2.f;/*公式(33)*/
s2=t2+(t2-t1)/3;/*公式(34)*/
/*核心算法中c 步*/
if(n>=2)
{
c2=s2+(s2-s1)/15; }
/*核心算法中d 步*/
if(n>=4)
{
r2=c2+(c2-c1)/63;
/*核心算法中e 步*/
printf("R(%d)=%11.10f\n",n/4,r2);
fprintf(fp,"R(%d)=%11.10f\n",n/4,r2);
deta1=r2-r1;
if(fabs(deta1)<eps)break;
}
r1=r2;c1=c2;s1=s2;t1=t2;h/=2.0;n*=2;/*核心算法中f 步*/
}
○3数据处理与分析
当a=0,b=1,eps=1e-6;时
R(1)=0.7853964459,R(2)=0.7853981596,R(4)=0.7853981634
从计算结果看n=4时满足精度要求,而n=2时已有6位有效数字
当a=0,b=1,eps=5e-10时
R(1)=0.7853964459,R(2)=0.7853981596
R(4)=0.7853981634,R(8)=0.7853981634
从计算结果看n=8时满足精度要求,在n=4时已有至少9位有效数字。
4.实验结论:
○1由图7与图8及计算结果在n=45和n=505下都只达到6为有效数字知复化梯形求积公式其逼近真值方式是来回振荡的。
同时在满足精度要求算得的值不一定是有效的。
但从图6知各个计算所得数据位数逐渐稳定,而从数据看知当计算结果某位数与真值相同该位固定知其一般无效位是后几位。
○2从复化求积公式计算结果中对同一积分函数求解在满足精度要求下看,知其收敛最快的是复化柯特斯公式,其次是复化辛卜生公式,最后是复化梯形求积公式。
○3从自适应梯形公式计算结果看,其并没有出现来回振荡现象,且在初次达6位有效数字时以复化辛卜生公式和复化柯特斯公式具有相同的有效数字,再从图10逼近规律看知各个计算所得数据位数逐渐稳定且从各计算结果看知计算某位数与真值相同该位就固定,可见其计算通常不会出现振荡情况。
○4从对同积分函数所用的各方法看知龙贝格算法收敛最快。
报告评分:
指导教师签字:。