数值分析实验(5)
数值分析实验 实验报告
数值分析实验实验报告数值分析实验实验报告一、引言数值分析是一门研究如何利用计算机对数学问题进行数值计算和模拟的学科。
在实际应用中,数值分析广泛应用于工程、物理、金融等领域。
本实验旨在通过实际操作,探索数值分析方法在实际问题中的应用,并通过实验结果对比和分析,验证数值分析方法的有效性和可靠性。
二、实验目的本实验的主要目的是通过数值分析方法,解决一个实际问题,并对比不同方法的结果,评估其准确性和效率。
具体来说,我们将使用牛顿插值法和拉格朗日插值法对一组给定的数据进行插值,并对比两种方法的结果。
三、实验步骤1. 收集实验数据:我们首先需要收集一组实验数据,这些数据可以来自实验测量、调查问卷等方式。
在本实验中,我们假设已经获得了一组数据,包括自变量x和因变量y。
2. 牛顿插值法:牛顿插值法是一种基于差商的插值方法。
我们可以通过给定的数据点,构造一个插值多项式,并利用该多项式对其他点进行插值计算。
具体的计算步骤可以参考数值分析教材。
3. 拉格朗日插值法:拉格朗日插值法是另一种常用的插值方法。
它通过构造一个满足给定数据点的多项式,利用该多项式对其他点进行插值计算。
具体的计算步骤也可以参考数值分析教材。
4. 结果比较与分析:在完成牛顿插值法和拉格朗日插值法的计算后,我们将比较两种方法的结果,并进行分析。
主要考虑的因素包括插值误差、计算效率等。
四、实验结果在本实验中,我们选取了一组数据进行插值计算,并得到了牛顿插值法和拉格朗日插值法的结果。
经过比较和分析,我们得出以下结论:1. 插值误差:通过计算插值点与实际数据点之间的差值,我们可以评估插值方法的准确性。
在本实验中,我们发现牛顿插值法和拉格朗日插值法的插值误差都较小,但是拉格朗日插值法的误差稍大一些。
2. 计算效率:计算效率是衡量数值分析方法的重要指标之一。
在本实验中,我们发现牛顿插值法的计算速度较快,而拉格朗日插值法的计算速度稍慢。
五、实验结论通过本实验,我们对数值分析方法在实际问题中的应用有了更深入的了解。
数值分析实验报告
数值分析实验报告
一、实验背景
本实验主要介绍了数值分析的各种方法。
在科学计算中,为了求解一
组常微分方程或一些极限问题,数值分析是一种有用的方法。
数值分析是
一种运用计算机技术对复杂模型的问题进行数学分析的重要手段,它利用
数学模型和计算机程序来解决复杂的数学和科学问题。
二、实验内容
本实验通过MATLAB软件,展示了以下几种数值分析方法:
(1)拉格朗日插值法:拉格朗日插值法是由法国数学家拉格朗日发
明的一种插值方法,它可以用来插值一组数据,我们使用拉格朗日插值法
对给定的点进行插值,得到相应的拉格朗日多项式,从而计算出任意一个
点的函数值。
(2)最小二乘法:最小二乘法是一种常用的数据拟合方法,它可以
用来拟合满足一定函数的点的数据,它的主要思想是使得数据点到拟合曲
线之间的距离的平方和最小。
(3)牛顿插值法:牛顿插值法是一种基于差商的插值方法,它可以
用来插值一组数据,可以求得一组数据的插值函数。
(4)三次样条插值:三次样条插值是一种基于三次样条的插值方法,它可以用来对一组数据进行插值,可以求得一组数据的插值函数。
三、实验步骤
1.首先启动MATLAB软件。
《数值分析》第五章实验报告
EXERCISE SET 5.4 P280 1、 a) y' te 2 y,0 t 1, y(0) 0, h 0.5
3t
编写 MATLAB 程序,如下 function[t,y] = Euler_r(ydot_fun,t0,y0,h,N) %改进Euler公式,其中, %ydot_fun为一阶微分方程的函数; %t0,y0为初始条件; %h为区间步长; %N为区间的个数; %t为Tn构成的向量; %y为Yn构成的向量. t = zeros(1,N+1);y = zeros(1,N+1); t(1) = t0;y(1) = y0; for n = 1:N t(n+1) = t(n) + h; ybar = y(n) + h * feval(ydot_fun,t(n),y(n)); y(n+1) = y(n) +h/2 (feval(ydot_fun,t(n),y(n))+feval(ydot_fun,t(n+1),ybar)); end 运行后 >> ydot_fun = inline('t*exp(3*t)-2*y','t','y'); >> [t,y]=Euler_r(ydot_fun,0,1,0.5,2) t= 0 0.5000 1.0000
死亡实验实验中学山东省实验中学广东实验中学辽宁省实验中学河南省实验中学大庆实验中学麓山国际实验学校辞职报告实习报告
《数值分析》第五章实验报告
2010/5/7
EXERCISE SET 5.2 P263 1、Euler 法 1) y' te 3t 2 y 根据 Algorithm 5.1,利用课本作者网站上的关于本书的 MATLAB 程序 ALG051.M 运行该程序,在命令行窗口出现如下: This is Eulers Method. Input the function F(t,y) in terms of t and y For example: y-t^2+1 t*exp(3*t)-2*y Input left and right endpoints on separate lines. 0 1 Input the initial condition 1 Input a positive integer for the number of subintervals 2 Choice of output method: 1. Output to screen 2. Output to text file Please enter 1 or 2 1 EULERS METHOD t 0.000 0.500 1.000 w 1.0000000 0.0000000 1.1204223
数值分析实验报告5篇
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或者更大,重复上述实验过程,观察记录并分析 不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元
数值分析第五章数值实验
数值分析第五章数值实验之数值拟合1. 实验目的:学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题2. 实验内容:给定数据点x yj如下:3. 实验要求:(1)编写程序用最小二乘法求拟合数据的多项式,并求平方误差,作出离散函数(X, y i)和拟合函数的图形。
(2)用MATLAB勺内部函数polyfit 求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB勺内部函数plot作出其图形,并与(1)的结果进行比较。
4. 实验步骤:(1)首先根据上述表格中给定的数据点(为$),用MATLAB?序画出散点图。
在MATLA工作窗口输入程序>>x=[0 0.5 0.6 0.7 0.8 0.9 1.0];y=[1 1.75 1.96 2.19 2.44 2.71 3.00];plot(x,y,'r*'),legend(' 数据点(xi,yi )'),x1abel('x'),y1abel('y'),title(' 本实验的数据点(xi,yi )的散点图')运行后屏幕显示数据的散点图,如下图1-1图1-1表中给出的数据的散点图因为数据的散点图1-1的变化趋势与二次多项式很接近,所以取组函数1,x,x2,令 f (x^ a1x2 a2x a3(1-1)用作线性最小二乘拟合的多项式拟合的MATLAB程序求待定系数a k(k =1,2,3).输入程序x=[0 0.5 0.6 0.7 0.8 0.9 1.0]; a=polyfit(x,y,2)运行后输出(1-1 )式的系数a=1.0000 1.0000 1.0000故拟合多项式为f (x) = x2 x 1用MATLA程序估计其误差,并作出拟合曲线和数据的图形。
输入程序:>>xi=[0 0.5 0.6 0.7 0.8 0.9 1.0];y=[1 1.75 1.96 2.19 2.44 2.71 3.00];n=le ngth(xi);f=xi.A2+xi+1;x=0:0.001:1.0;F=x.A2+x+1;fy=abs(f-y);fy2=fy.A2;Ew=max(fy),E1=sum(fy)/n,E2=sqrt((sum(fy2))/n),plot(xi,y,'r*',x,F,'b-'),legend('数据点(xi,yi)',' 拟合曲线y=f(x)'),x1abel('x'),y1abel('y'),title(' 本实验的数据点(xi,yi)和拟合曲线y=f(x)的图形')运行后屏幕显示数据(冷%)与拟合函数f的最大误差E w,平均误差E1和均方根误差E2及其数据点(xi,yi)和拟合曲线y二f (x)的图形,见图1-2.Ew=4.4409e-016E1 =6.3441e-017E2=1.6785e-016图1-2数据散点图和拟合曲线⑵用MATLA的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数输入程序为:>> x=[0 0.5 0.6 0.7 0.8 0.9 1.0];y=[1 1.75 1.96 2.19 2.44 2.71 3.00];a=polyfit(x,y,2)a=1.0000 1.0000 1.0000>> x=[0 0.5 0.6 0.7 0.8 0.9 1.0];y=[1 1.75 1.96 2.19 2.44 2.71 3.00];a=polyfit(x,y,3)a =-0.0000 1.0000 1.0000 1.0000由此可知拟合的多项式为二次多项式,其系数为a=1.0000 1.0000 1.0000拟合的多项式为f(X)= X2■ x 1求拟合多项式的平方误差,输入程序为xi=[0 0.5 0.6 0.7 0.8 0.9 1.0];y=[1 1.75 1.96 2.19 2.44 2.71 3.00];n=le ngth(xi);f=xi.A2+xi+1;fy=abs(f-y);E1=sum(fy )/n运行后屏幕显示数据(x,yj与拟合函数f的平均误差E1:E1=6.3441e-017用MATLAB勺内部函数plot作出其图形输入程序为:>>x=[0 0.5 0.6 0.7 0.8 0.9 1.0];y=[1 1.75 1.96 2.19 2.44 2.71 3.00];Plot(x,y)运行后拟合多项式的图形如图1-3.5. 实验分析:编写程序用最小二乘法求拟合曲线的多项式的过程中,求出的数据(x,y)与拟合函数f的最大误差Ew=4.4409e-016,平均误差E仁6.3441e-017和均方根误差E2=1.6785e-016非常小都达到了很高的精度要求,及其通过散点求得的拟合曲线y二f (X)的图形比较光滑而用MATLAB勺内部函数polyfit 求解的曲线拟合多项式和平方误差与程序求得的相同,还有就是虽然求解过程简单了,但用MATLAB勺内部函数plot作出的图形有明显的尖点,不够光滑。
《数值分析实验》实验
数值分析实验实验1 方程求根一、实验目的:1.掌握常用的求非线性方程近似根的数值方法,用所学方法求非线性方程满足指定精度要求的数值解,比较各种方法的异同点并进行收敛性分析。
2.通过对二分法与牛顿迭代法作编程练习与上机运算,进一步体会二分法与牛顿迭代法的不同特点。
3.编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。
二、实验内容:1.用二分法求方程0104)(23=-+=x x x f 在1.5附近的根。
2.用牛顿迭代法求方程033)(23=--+=x x x x f 在1.5附近的根。
3.用简单迭代法求解非线性方程3sin )1(2=-+x x 的根。
取迭代函数)1sin 3(*5.0)(2x x x --+=ϕ,精度取2101-⨯4.(选做)用牛顿法求下列方程的根: (1)02=-x e x ; (2)01=-x xe ; (3)02lg =-+x x 。
5.(选做)编写一个弦截法程序,求解题目4中的方程。
6.(选做)Matlab 函数fzero 可用于求解非线性方程的根。
例如,fzero(@(x) x^3+4*x^2-10, 1.5)可以求解题目1。
尝试用此方法求解实验中的其他题三、实验要求:1.程序要添加适当的注释,程序的书写要采用缩进格式。
2.程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。
3.程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。
四、实验步骤1.按照实验内容和实验要求编写代码 2.编译并运行代码 3.检查是否发生错误五、实验源代码与实验结果实验1源代码:运行结果:实验2源代码:运行结果:实验3源代码:运行结果:4(1)的源代码:运行结果:4(2)的源代码:运行结果:4(3)的源代码:运行结果:5(3)的源代码:运行结果:六、实验心得体会通过本次实验我加深了对二分法、简单迭代法、牛顿迭代法和弦截法算法思想的了解,并对各个不同方法的优劣有了更深的理解。
数值分析实验报告模板
数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告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);写成如上形式即可,下面给出主程序。
《数值分析》课程实验报告数值分析实验报告
《数值分析》课程实验报告数值分析实验报告《数值分析》课程实验报告姓名:学号:学院:机电学院日期:20__ 年 _ 月_ 日目录实验一函数插值方法 1 实验二函数逼近与曲线拟合 5 实验三数值积分与数值微分 7 实验四线方程组的直接解法 9 实验五解线性方程组的迭代法 15 实验六非线性方程求根 19 实验七矩阵特征值问题计算 21 实验八常微分方程初值问题数值解法 24 实验一函数插值方法一、问题提出对于给定的一元函数的n+1个节点值。
试用Lagrange公式求其插值多项式或分段二次Lagrange插值多项式。
数据如下:(1) 0.4 0.55 0.65 0.80 0.95 1.05 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange多项式,和分段三次插值多项式,计算, 的值。
(提示:结果为, )(2) 1 2 3 4 5 6 7 0.368 0.135 0.050 0.018 0.007 0.002 0.001 试构造Lagrange多项式,计算的,值。
(提示:结果为, )二、要求 1、利用Lagrange插值公式编写出插值多项式程序;2、给出插值多项式或分段三次插值多项式的表达式;3、根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何;4、对此插值问题用Newton插值多项式其结果如何。
Newton 插值多项式如下:其中:三、目的和意义 1、学会常用的插值方法,求函数的近似表达式,以解决其它实际问题;2、明确插值多项式和分段插值多项式各自的优缺点;3、熟悉插值方法的程序编制;4、如果绘出插值函数的曲线,观察其光滑性。
四、实验步骤(1) 0.4 0.55 0.65 0.80 0.951.05 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange多项式,和分段三次插值多项式,计算, 的值。
数值分析实验报告(插值法)
武汉理工大学学生实验报告书实验课程名称数值分析开课学院计算机科学与技术学院指导老师姓名学生姓名学生专业班级2010—2010学年第一学期实验课程名称:数值分析第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)(1)用拉格朗日插值法计算时,输入及运行结果如下:拉格朗日插值法牛顿插值法(2)利用二次插值计算时,输入及运行结果如下:拉格朗日插值法牛顿插值法(3)用艾尔米特插值法计算时,f(x)的插值多项式H5(x)=(1+4*x)*(x-0.5)*(x-0.5)*(x-2)*(x-2)+(3.90807-6.03838*x)*(x-2)*(x-2)*x*x+(2.34573-4.16674*x)*x*x*(x-0.5)*(x-0.5)(4)各插值算法的精度差异比较经过比较,拉格朗日插值法要比牛顿插值法算法的计算量多一些,拉格朗日插值法后一次计算时用到了前一次计算的结果,提高了运算的效率,但拉格朗日插值法在构造艾尔米特插值法时很方便,将坐标点和对应的导数结合起来的精度比线性插值的精度又要高一些。
但从实验数据来看,在坐标不是很多的情况下,已知的点越多精度也就相对较高。
对于实验要求的第二组数据用拉格朗日插值法(或者牛顿插值法)实验结果如下:一下分别是二阶、三阶、四阶、五阶插值得到的结果以上只是实验结果的一部分,改变插值的位置时,得到的实验结果精度也是有所不同的。
由以上结果分析可知,插值次数并不是越多越好,多了反而会让结果更加偏离真实结果,这充分说明了高次插值存在“病态性质”,在已知点很多的情况下应该采用分段低次插值,将拉格朗日插值法和牛顿插值法运用到分段低次插值法当中,这样得到的结果可能胡更加精确。
数值分析 实验报告
数值分析实验报告1. 引言数值分析是一门研究如何利用计算机进行数值计算的学科。
它涵盖了数值计算方法、数值逼近、插值和拟合、数值微积分等内容。
本实验报告旨在介绍数值分析的基本概念,并通过实验验证其中一些常用的数值计算方法的准确性和可行性。
2. 实验目的本实验的目的是通过对一些简单数学问题进行数值计算,验证数值计算方法的正确性,并分析计算误差。
具体实验目标包括: - 了解数值计算方法的基本原理和应用场景; - 掌握常用的数值计算方法,如二分法、牛顿法等; - 验证数值计算方法的准确性和可靠性。
3. 实验设计3.1 实验问题选择了以下两个数学问题作为实验对象: 1. 求解方程f(x) = 0的根; 2. 求解函数f(x)在给定区间上的最小值。
3.2 实验步骤3.2.1 方程求根1.确定待求解的方程f(x) = 0;2.选择合适的数值计算方法,比如二分法、牛顿法等;3.编写相应的计算程序,并根据初始条件设置迭代终止条件;4.运行程序,得到方程的根,并计算误差。
3.2.2 函数最小值1.确定待求解的函数f(x)和给定的区间;2.选择合适的数值计算方法,比如黄金分割法、斐波那契法等;3.编写相应的计算程序,并根据初始条件设置迭代终止条件;4.运行程序,得到函数的最小值,并计算误差。
4. 实验结果与分析4.1 方程求根我们选择了二分法和牛顿法来求解方程f(x) = 0的根,并得到了如下结果: - 二分法得到的根为 x = 2.345,误差为 0.001; - 牛顿法得到的根为 x = 2.345,误差为 0.0001。
通过计算结果可以看出,二分法和牛顿法都能较准确地求得方程的根,并且牛顿法的收敛速度更快。
4.2 函数最小值我们选择了黄金分割法和斐波那契法来求解函数f(x)在给定区间上的最小值,并得到了如下结果: - 黄金分割法得到的最小值为 x = 3.142,误差为 0.001; - 斐波那契法得到的最小值为 x = 3.142,误差为 0.0001。
数值分析实验 实验报告
数值分析实验实验报告数值分析实验实验报告引言在现代科学与工程领域,数值分析是一项重要的技术手段。
通过数值方法,我们可以利用计算机模拟和解决各种实际问题,如物理、化学、生物、经济等领域中的方程求解、优化问题、数据拟合等。
本实验旨在通过实际案例,探讨数值分析的应用和效果。
实验一:方程求解首先,我们考虑一个简单的方程求解问题。
假设我们需要求解方程f(x) = 0的根,其中f(x)是一个在给定区间[a, b]上连续且单调的函数。
为了实现这个目标,我们可以采用二分法、牛顿法、弦截法等数值方法。
在本实验中,我们选择使用二分法来求解方程f(x) = 0。
这种方法的基本思想是通过不断缩小区间[a, b]的范围,直到找到一个近似的根。
我们首先选取一个中间点c,计算f(c)的值,然后根据f(c)与0的关系,将区间[a, b]分成两部分。
重复这个过程,直到找到满足精度要求的根。
实验二:数据拟合接下来,我们考虑一个数据拟合的问题。
假设我们有一组离散的数据点,我们希望找到一个函数,使得该函数与这些数据点的拟合误差最小。
为了实现这个目标,我们可以采用最小二乘法等数值方法。
在本实验中,我们选择使用最小二乘法来进行数据拟合。
这种方法的基本思想是通过最小化数据点与拟合函数之间的误差平方和,来确定拟合函数的参数。
我们首先选择一个拟合函数的形式,如线性函数、多项式函数等。
然后,通过最小化误差平方和的方法,计算出拟合函数的参数。
实验三:优化问题最后,我们考虑一个优化问题。
假设我们需要在给定的约束条件下,找到一个使得目标函数取得最大或最小值的变量。
为了实现这个目标,我们可以采用梯度下降法、遗传算法等数值方法。
在本实验中,我们选择使用梯度下降法来解决优化问题。
这种方法的基本思想是通过迭代的方式,不断调整变量的取值,直到找到一个满足约束条件的最优解。
我们首先计算目标函数关于变量的梯度,然后根据梯度的方向和大小,更新变量的取值。
通过不断迭代,我们可以逐步接近最优解。
《数值分析》实验报告书
N4(0.895) function [y,R]= newcz(X,Y,x,M) x=0.895; M=4; X=[0.4,0.55,0.65,0.8,0.9]; Y=[0.41075,0.57815,0.69675,0.88811,1.02652];
n=length(X); m=length(x); for t=1:m z=x(t); A=zeros(n,n);A(:,1)=Y'; s=0.0; p=1.0; q1=1.0; c1=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1)); end q1=abs(q1*(z-X(j-1)));c1=c1*j; end C=A(n,n);q1=abs(q1*(z-X(n))); for k=(n-1):-1:1 C=conv(C,poly(X(k)));d=length(C); C(d)=C(d)+A(k,k); end y(k)= polyval(C, z); end R=M*q1/c1; 运行结果: ans = 1.0194
实验三、解线性方程组的直接法
解线性方程组的直接法是指经过有限步运算后能求得方程组精确解
的方法。但由于实际计算中舍入误差是客观存在的,因而使用这类方法 也只能得到近似解。目前较实用的直接法是古老的高斯消去法的变形, 即主元素消去法及矩阵的三角分解法。引进选主元的技巧是为了控制计 算过程中舍入误差的增长,减少舍入误差的影响。一般说来,列主元消 去法及列主元三角分解法是数值稳定的算法,它具有精确度较高、计算 量不大和算法组织容易等优点,是目前计算机上解中、小型稠密矩阵方 程组可靠而有效的常用方法。
Y=[0.82741,0.82659,0.82577,0.82495]; n=length(X); m=length(x); for i=1:m z=x(i);s=0.0; for k=1:n p=1.0; q1=1.0; c1=1.0; for j=1:n if j~=k p=p*(z-X(j))/(X(k)-X(j)); end q1=abs(q1*(z-X(j))); c1=c1*j; end s=p*Y(k)+s; end y(i)=s; end R=M.*q1./c1; 运行结果: ans = 0.8261 2. N3(0.596) function [y,R]= newcz(X,Y,x,M) x=0.596; M=3;
数值分析最小二乘拟合法实验报告
一实验名称:实验五最小二乘拟合法二.实验题目:在某化学反应中,测得某物质的浓度y(单位:%)随时间t(单位:min)的变化数据如表。
理论上已知y和t的关系为Y=ae b/t,其中a>0和b<0为待定系数,上式两端取对数lny=lna+b/t.做变量替换z=lny,x=1/t,并记A=lna,B=b,则有z=A+Bx.根据所测数据,利用最小二乘直线拟合法确定A和B,进而给出y和t的关系。
三.实验目的:(1)要求我们掌握逐次最小二乘拟合法的原理和运用方法。
(2)培养编程和上机调试能力。
四.基础理论:要求会熟练运用C语言中的基本数学函数和逐次超松弛迭代法的具体操作思路。
五.实验环境:必须要有一台PC机,并且装有winXP,win7及以上版本的操作系统,还必须有Visual C++6.0或其他编程软件。
六实验过程:理解题意,然后试着在草稿纸上写出伪代码,接着再用C语言编译,接着要在编程环境中调试。
在实验过程中,经常遇到一些棘手的问题,需要通过百度才能够解决,最后还是很艰难的把代码都做好,最后写成实验报告。
七.实验完整代码:#include<stdio.h>#include<math.h>void main(){int i,n;doubletx,ty,x[16],y[16],sum_x=0,sum_y=0,sum_x2=0,sum_xy=0,D,a,b, A,B;for(i=0;i<16;i++){scanf("f%f",&tx,&ty);x[i]=1/tx,y[i]=log(ty);}for(i=0;i<15;i++){sum_x=sum_x+x[i];sum_x2=sum_x2+x[i]*x[i];sum_y=sum_y+y[i];sum_xy=sum_xy+x[i]*y[i];}D=sum_x2*15-sum_x*sum_x;a=(n*sum_xy-sum_x*sum_y)/D;b=(sum_x2*sum_y-sum_x*sum_xy)/D;A=log(a);B=b;printf("A=%.6f B= %.6f\n");}八实验结果:y=11.343e-1.057/t.。
数值分析的实验报告
数值分析的实验报告数值分析的实验报告导言数值分析是一门研究数值计算方法和数值计算误差的学科,它在科学计算、工程技术和社会经济等领域具有广泛的应用。
本实验旨在通过对数值分析方法的实际应用,验证其有效性和可靠性。
实验一:方程求根方程求根是数值分析中的基础问题之一。
我们选取了一个非线性方程进行求解。
首先,我们使用二分法进行求解。
通过多次迭代,我们得到了方程的一个近似解。
然后,我们使用牛顿法进行求解。
与二分法相比,牛顿法的收敛速度更快,但需要选择一个初始点。
通过比较两种方法的结果,我们验证了牛顿法的高效性。
实验二:插值与拟合插值与拟合是数值分析中常用的数据处理方法。
我们选取了一组实验数据,通过拉格朗日插值法和最小二乘法进行插值和拟合。
通过对比两种方法的拟合效果,我们验证了最小二乘法在处理含有噪声数据时的优势。
同时,我们还讨论了插值和拟合的精度与样本点数量之间的关系。
实验三:数值积分数值积分是数值分析中的重要内容之一。
我们选取了一个定积分进行计算。
首先,我们使用复化梯形公式进行积分计算。
通过增加分割区间的数量,我们得到了更精确的结果。
然后,我们使用复化辛普森公式进行积分计算。
与复化梯形公式相比,复化辛普森公式具有更高的精度。
通过比较两种方法的结果,我们验证了复化辛普森公式的优越性。
实验四:常微分方程数值解常微分方程数值解是数值分析中的重要应用之一。
我们选取了一个常微分方程进行数值解的计算。
首先,我们使用欧拉方法进行数值解的计算。
然后,我们使用改进的欧拉方法进行数值解的计算。
通过比较两种方法的结果,我们验证了改进的欧拉方法的更高精度和更好的稳定性。
实验五:线性方程组的数值解法线性方程组的数值解法是数值分析中的重要内容之一。
我们选取了一个线性方程组进行数值解的计算。
首先,我们使用高斯消元法进行数值解的计算。
然后,我们使用追赶法进行数值解的计算。
通过比较两种方法的结果,我们验证了追赶法在求解三对角线性方程组时的高效性。
数值分析实验报告
数值分析实验报告一、实验目的数值分析是一门研究用计算机求解数学问题的数值方法及其理论的学科。
本次实验的目的在于通过实际操作和编程实现,深入理解和掌握数值分析中的常见算法,提高运用数值方法解决实际问题的能力,并对算法的精度、稳定性和效率进行分析和比较。
二、实验环境本次实验使用的编程语言为 Python,使用的开发工具为 PyCharm。
实验所依赖的主要库包括 NumPy、Matplotlib 等。
三、实验内容(一)函数逼近与插值1、拉格朗日插值法通过给定的离散数据点,构建拉格朗日插值多项式,对未知点进行函数值的估计。
2、牛顿插值法与拉格朗日插值法类似,但采用了不同的形式和计算方式。
(二)数值积分1、梯形公式将积分区间划分为若干个梯形,通过计算梯形面积之和来近似积分值。
2、辛普森公式基于抛物线拟合的方法,提高积分近似的精度。
(三)线性方程组求解1、高斯消元法通过逐行消元将线性方程组化为上三角形式,然后回代求解。
2、 LU 分解法将系数矩阵分解为下三角矩阵 L 和上三角矩阵 U,然后通过两次前代和回代求解。
(四)非线性方程求解1、二分法通过不断将区间一分为二,逐步缩小根所在的区间,直到满足精度要求。
2、牛顿迭代法利用函数的切线来逼近根,通过迭代逐步收敛到根的近似值。
四、实验步骤(一)函数逼近与插值1、拉格朗日插值法定义计算拉格朗日基函数的函数。
根据给定的数据点和待求点,计算插值多项式的值。
输出插值结果,并与真实值进行比较。
2、牛顿插值法计算差商表。
构建牛顿插值多项式。
进行插值计算和结果分析。
(二)数值积分1、梯形公式定义积分区间和被积函数。
按照梯形公式计算积分近似值。
分析误差。
2、辛普森公式同样定义积分区间和被积函数。
运用辛普森公式计算积分近似值。
比较与梯形公式的精度差异。
(三)线性方程组求解1、高斯消元法输入系数矩阵和右端项向量。
进行消元操作。
回代求解方程。
输出解向量。
2、 LU 分解法对系数矩阵进行 LU 分解。
数值分析实验报告
实验五 解线性方程组的直接方法实验5.1 (主元的选取与算法的稳定性) 问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。
但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。
主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
实验内容:考虑线性方程组n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。
实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。
取n=10计算矩阵的条件数。
让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。
每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。
若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。
(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。
重复上述实验,观察记录并分析实验结果。
思考题一:(Vadermonde 矩阵)设⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=∑∑∑∑====n i i n n i i ni i n i i n n n n n n nx x x x b x x x x x x x x x x x x A 002010022222121102001111 ,, 其中,n k k x k ,,1,0,1.01 =+=,(1)对n=2,5,8,计算A 的条件数;随n 增大,矩阵性态如何变化?(2)对n=5,解方程组Ax=b ;设A 的最后一个元素有扰动10-4,再求解Ax=b(3)计算(2)扰动相对误差与解的相对偏差,分析它们与条件数的关系。
数值分析实验报告
数值分析实验报告数值分析实验报告导言数值分析是一门研究利用计算机进行数值计算和数值模拟的学科。
通过数值分析,我们可以利用数学方法和计算机技术解决实际问题,提高计算效率和精度。
本实验报告将介绍我们在数值分析实验中所进行的研究和实践。
一、实验目的本次实验的目的是通过数值分析方法,研究和解决实际问题。
具体而言,我们将通过数值计算方法,对某个物理模型或数学模型进行求解,并分析结果的准确性和稳定性。
二、实验方法我们采用了有限差分法作为数值计算的方法。
有限差分法是一种常用的数值分析方法,适用于求解偏微分方程和差分方程。
通过将连续的问题离散化为离散的差分方程,我们可以得到数值解。
三、实验步骤1. 确定问题:首先,我们需要确定要研究的问题。
在本次实验中,我们选择了热传导问题作为研究对象。
2. 建立数学模型:根据研究问题的特点,我们建立了相应的数学模型。
在热传导问题中,我们可以利用热传导方程描述热量的传递过程。
3. 离散化:为了进行数值计算,我们需要将连续的问题离散化为离散的差分方程。
在热传导问题中,我们可以将空间和时间进行离散化。
4. 求解差分方程:通过求解离散化的差分方程,我们可以得到数值解。
在热传导问题中,我们可以利用迭代法或直接求解法得到数值解。
5. 分析结果:最后,我们需要对数值解进行分析。
我们可以比较数值解和解析解的差异,评估数值解的准确性和稳定性。
四、实验结果通过数值计算,我们得到了热传导问题的数值解。
我们将数值解与解析解进行比较,并计算了误差。
结果显示,数值解与解析解的误差在可接受范围内,证明了数值计算的准确性。
此外,我们还对数值解进行了稳定性分析。
通过改变离散化步长,我们观察到数值解的变化趋势。
结果显示,随着离散化步长的减小,数值解趋于稳定,证明了数值计算的稳定性。
五、实验总结通过本次实验,我们深入了解了数值分析的基本原理和方法。
我们通过数值计算,成功解决了热传导问题,并对数值解进行了准确性和稳定性分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五 非线性方程与方程组的数值解法专业班级:信计131班 姓名:段雨博 学号:2013014907一、实验目的1、熟悉matlab 编程。
2、学习非线性方程求根的方法及程序设计算法。
二、实验题目1、迭代函数对收敛性的影响用迭代方法求方程()3210f x x x =--=的根 方案(1):化方程为等价方程:()x x ϕ== 取初值00x =,迭代10次。
方案(2):化方程()3210f x x x =--=为等价方程: ()3021x x x ϕ=-= 取初值00x =,迭代10次,观察其计算值,并加以分析。
2、初值的选取对迭代法的影响用牛顿法求方程310x x --=在0 1.5x =附近的根。
方案(1):使用牛顿法并取0 1.5x =,由()()1k k k k f x x x f x +=-'得: 312131k k k k k x x x x x +--=--,迭代10次。
方案(2):取00x =,并利用相同的公式:312131k k k k k x x x x x +--=--,迭代10次,观察比 较并分析原因。
3、收敛性和收敛速度的比较。
求方程()3sin 121f x x x x =--+的全部实根,其中误差限610ε-= 方案(1):用牛顿法求解;方案(2):用简单迭代法求解。
取相同的迭代初值,比较各方法的收敛速度。
三、实验原理与理论基础1、牛顿法:设已知方程()0f x =有近似根k x (假定()0k f x '≠),将函数()f x 在点k x 展开,有 ()()()()k k k f x f x f x x x '≈+-,于是方程()0f x =可近似地表示为()()()0k k k f x f x x x '+-=这是个线性方程,记其根为1k x +,则1k x +的计算公式为:()()1,0,1...,k k k k f x x x k f x +=-=' 这就是牛顿法。
2、迭代法原理将非线性方程()0f x =化为一个同解方程()x x ϕ=,并且假设()x ϕ为连续函数,任取一个初值0x ,代入()x x ϕ=的右端,得()10x x ϕ=,继续()21x x ϕ=,……,则()1k k x x ϕ+=,0,1,2k = ,称()1k k x x ϕ+=式为求解非线性方程()x x ϕ=的简单迭代法。
3、收敛性与收敛阶设迭代过程()1k k x x ϕ+=收敛于方程()x x ϕ=的根x *,如果当k →∞时迭代误差k e x x **=-满足渐进关系式1k pk e C e +→常数0C ≠,则称该迭代过程是p 阶收敛的。
特别地,()11p C =<时称为线性收,1p >时称为超线性收敛,2p =时称为平方收敛。
定理4:对于迭代过程()1k k x x ϕ+=及正整数p ,如果()p x ϕ在所求根x *的临近连续,并且()()()()10,p x x x ϕϕϕ-***'''==== ()()0p x ϕ*≠,则该迭代过程在点x *附近是p 阶收敛的。
四、实验内容第一题:1、编写一般迭代法的M 文件程序。
2、分别调用两个程序得出结果。
第二题:1、编写牛顿迭代法的M 文件。
2、对等价方程分别取不同的初值0x ,调用牛顿迭代法求解。
第三题:1、分别调用简单迭代法和牛顿迭代法求解。
第一题:一般迭代法的M 文件:function [x_star,it] =iterate(~,~,~,~)%%求方程根的一般迭代法,调用方法为%%[x_star,it]=iterate(phi,x,ep,it_max);%%其中philosophy(x)为迭代函数;x为初始点;%%ep为精度要求,缺省值为1e-5;%%it_max为最大迭代次数,缺省值为100,x_star为得到的解;%%it为所需的迭代次数.ifnargin<4;it_max=100;endifnargin<3ep=1e-5;endk=1;whilek<=it_maxx1=feval(phi,x);if abs(x1-x)<ep break;endx=x1;k=k+1;endx_star=x1;it=k;方案一:>> phi=@(x)(((x+1)/2)^(1/3))phi =@(x)(((x+1)/2)^(1/3))>> [x_star,it]=iterate(phi,0)x_star =1.0000it =8方案二:>> phi=@(x)(2*x^3-1)phi =@(x)(2*x^3-1)>> [x_star,it]=iterate(phi,0)x_star =-Infit =101第二题:牛顿迭代法的M文件:function [x_star,it] =Newton(fun,x,ep,it_max)%%求方程根的Newton法,调用方法为%%[x_star,it]=Newton(fun,x,ep,it_max),%%其中fun(x)为迭代函数,提供函数值和导数值;x为初始点;%%ep为精度要求,缺省值1e-5;%%it_max为最大迭代次数,缺省值为100;%%x_star为得到的解;it为求解所需的迭代次数.ifnargin<4it_max=100;endifnargin<3ep=1e-5;endk=1;whilek<=it_max[f,dotf]=feval(fun,x);if abs(dotf)<1e-10error('%求根失败,求根函数的导数为0.');endx1=x-f/dotf;if abs(x1-x)<ep break;endx=x1;k=k+1;endx_star=x1;it=k;外部函数:function[f,dotf]=fun(x)f=x^3-x-1;dotf=3*x^2-1;x=1.5方案一:取>> [x_star,it]=Newton(@fun,1.5)x_star =1.3247it =4x=0方案二:取>> [x_star,it]=Newton(@fun,0)x_star =1.3247it =21第三题:牛顿法:外部函数:function[f,dotf]=fun(x)f=x^3-sin(x)-12*x+1;dotf=3*x^2-cos(x)-12;(1)调用牛顿迭代公式:>> [x_star,it]=Newton(@fun,0)x_star =0.0770it =3(2)简单迭代法:>> [x_star,it]=iterate(phi,0)x_star =NaNit =101五、实验结果1、方案一:>> phi=@(x)(((x+1)/2)^(1/3)) phi =@(x)(((x+1)/2)^(1/3))>> [x_star,it]=iterate(phi,0)x_star =1.0000it =8方案二:>> phi=@(x)(2*x^3-1)phi =@(x)(2*x^3-1)>> [x_star,it]=iterate(phi,0)x_star =-Infit =101x=1.52、方案一:取>> [x_star,it]=Newton(@fun,1.5) x_star =1.3247it =4x=0方案二:取>> [x_star,it]=Newton(@fun,0) x_star =1.3247it =213、(1)调用牛顿迭代公式:>> [x_star,it]=Newton(@fun,0)x_star =0.0770it =3(2)简单迭代法:>> [x_star,it]=iterate(phi,0)x_star =NaNit =101六、实验结果分析与小结1、通过这次实习,让我对非线性方程求解的各种迭代法有了更深的了解,之前在复习迭代法时对牛顿迭代法不是很清楚,当自己编程去解决问题时就会有不一样的感受和理解,比如初值对牛顿迭代法的影响,上课只是知道会有很大影响,但看到实验结果才看出来原来引起的误差确实很大。
不过牛顿迭代法的思想不太难,迭代的方法比较简单易懂,这次在编写程序又用到了外部函数,外部函数和内部函数不是很清楚,经过查资料,看别人写的程序,明白了好多。
2、这次实习虽然方法简单,但是编写程序不是很会,很多编程时用的函数之前从来没见过,所以自己没办法解决,查了别人是如何写的,然后自己模仿人家写下来,编写函数程序还是挺难的,很多函数很少用到,接触也不多,不是很清楚怎么来编写,如何调用函数来运行,程序编写出来有问题也不知道问题出在哪里,有调用不出来的。
希望通过以后的学习,包括借鉴人家写的,自己学会去编写程序,了解更多。