佛山科学技术学院数值分析第三次上机报告

合集下载

数值分析上机实验报告3

数值分析上机实验报告3

实验报告三题目:函数逼近——曲线拟合目的:掌握曲线拟合基本使用方法数学原理:[P,S]=polyfit(x,y,3)其中x,y为取样值,3为得出的结果的最高次数。

P为对应次数的系数,S为误差值向量,其中x,y是等长的向量,P是一个长度为m+1的向量。

结果分析和讨论:23.观察物体的运动,得出时间t与距离s的关系如表,求运动方程。

t=[0,0.9,1.9,3.0,3.9,5.0];s=[0,10,30,50,80,110];[P,S]=polyfit(t,s,5)P =-0.5432 6.4647 -26.5609 46.1436 -13.2601 -0.0000S =R: [6x6 double]df: 0normr: 1.2579e-012所以得到方程为:-13.2601x46.1436x-26.5609x6.4647x-0.5432x2345++24.在某化学反应堆里,根据实验所得分解物的质量分数y与时间t的关系,用最小拟合求y=F(t);>> x=0:5:55;y=[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.62,4.64];>> [P,S]=polyfit(x,y,5)P =0.0000 -0.0000 0.0002 -0.0084 0.2851 0.0082S =R: [6x6 double]df: 6normr: 0.0487所以得到方程为:0082.02851.00084.00002.023++-xxx结论:在23题中计算的结果误差为4.5769,而在24中计算的结果误差为0.0487,说明对于曲线拟合来说,总会有误差,因为取样点并不是都过拟合的曲线的。

数值分析上机报告

数值分析上机报告

数值分析上机实践报告目录第一章标准题部分 (3)1.1 第一题 (3)1.1.1解题的理论依据、算法进行分析及应用条件 (3)1.1.2 MATLAB计算程序 (4)1..1.3 MATLAB运行结果 (7)1..1.4 结果分析与讨论 (7)1.2 第二题 (7)1.2.1解题的理论依据、算法进行分析及应用条件 (7)1.2.2 MATLAB计算程序 (8)1.2.2 MATLAB运行结果 (9)1.2.3 结果分析与讨论 (9)1.3 第三题 (9)1.3.1解题的理论依据、算法进行分析及应用条件 (9)1.3.2 MATLAB计算程序 (10)1.3.3 MATLAB运行结果 (11)1.3.4 结果分析与讨论 (11)1.4 第四题 (11)1.4.1解题的理论依据、算法进行分析及应用条件 (11)1.4.2 MATLAB计算程序 (12)1.4.3 MATLAB运行结果 (13)1.4.4 结果分析与讨论 (13)第二章自主题部分 (14)钢筋混凝土偏心受压柱配筋设计 (14)2.1 引言 (14)2.2 问题研究 (15)2.3 案例分析 (16)2.4 结论 (18)第一章 标准题部分1.1 第一题用三次样条插值的三弯矩法求f(-0.02)和f(2.56)。

1.1.1 解题的理论依据、算法进行分析及应用条件为使问题一般化,本题的三次样条求解使用了对于任意分化的三弯矩插值法。

若记各节点间距n x x x h j j j ,,2,111⋅⋅⋅=-=--,根据理论分析,三次样条插值函数为:))(6()()(6(6)(6)()(112112111131131-------------+--+-+-=j j j j j j j j j j j j jj j j h x x h M y h x x h M y h x x M h x x M x S其中),(1j j x x x -∈。

而式中的诸j M 可由如下的矩阵方程来确定:⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡N N d d d M M M10101111122212μλμλμ这里⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎨⎧-⋅⋅⋅=+=-=+=--'==---+='--=------+---+-)1,,2,1(1)](1[6),,(6)(6)(61111111111110000100N j h h h h h h y y h y h d x x x f h y y h y y h h d y h y y h d j j jj j j j j j N N N NN N j j j j j j j j j j j μλμ对于上述矩阵方程,由于其系数矩阵为一三对角阵,故我们用追赶法(Thomas 算法)来求解。

数值分析上机报告

数值分析上机报告

数值分析上机实习报告专业:土木工程班级:学号:姓名:指导老师:联系电话:2015.12.12序言随着本学期逐渐接近尾声,我也逐渐掌握了数值分析的一些基本理论•本次上机作业是理论与实践的结合•本次作业使用了matlab与C++两种语言•其中matlab具有编程效率高,用户使用方便,方便的绘图功能的优点。

而C++是一种基本的编程语言,在实际的工程中也有广泛的应用。

本次作业根据题目的特点,结合两种语言各自的优势,采用了不同的方法。

其中牛顿法,Steffensen加速法采用了c语言。

插值与多项式拟合使用了两种语言。

Ru n ge-Kutt a 4阶算法仅使用了matlab编程。

本次作业注重问题的计算过程,分析总结,及编程。

由于所涉及原理课本均有详细陈述,在此不再赘述。

第一题 (3)1.1题目 (3)1.2计算过程和结果 (3)1.3结果分析 (3)第二题 (4)2.1题目 (4)2.2计算过程和结果 (4)2.3结果分析 (8)第三题 (8)3.1题目 (8)3.2问题求解及过程 (8)3.3结果分析 (9)总结 (10)附件 (11)第一题 (11)1.1.1第一问牛顿法 (11)1.1.2 第一问牛顿-Steffensen法 (11)1.2.1第二问牛顿法 (12)1.2.2 第二问牛顿-Steffensen法 (13)第二题 (14)2.1.1最小二乘法求解 (14)2.2.1拉格朗日差值多项式拟合 (15)2.2.2牛顿插值 (15)第三题 (17)3.1.1Runge-Kutta 4 阶算法 (17)1.1题目分别用牛顿法,及基于牛顿算法下的Steffe nsen加速法⑴求ln(x+sin x)=0的根。

初值x0分别取0.1, 1,1.5, 2, 4进行计算。

(2)求sin x=0的根。

初值x0分别取1,1.4,1.6, 1.8,3进行计算。

分析其中遇到的现象与问题。

1・2计算过程和结果1.对方程In(x+sinx)=O,可求解x+sinx=1的解。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告摘要:本报告是对数值分析课程上机实验的总结和分析,涵盖了多种算法和数据处理方法,通过对实验结果的分析,探究了数值计算的一般过程和计算的稳定性。

1. 引言数值计算是数学的一个重要分支,广泛应用于物理、金融、工程等领域。

本次实验是对数值分析课程知识的实际应用,通过上机实现算法,探究数值计算的可靠性和误差分析。

2. 实验方法本次实验中,我们实现了多种算法,包括:(1)牛顿迭代法求方程的根;(2)高斯消元法求线性方程组的解;(3)最小二乘法拟合数据点;(4)拉格朗日插值法估计函数值;(5)梯形公式和辛普森公式求积分近似值。

对于每个算法,我们都进行了多组数值和不同参数的实验,并记录了相关数据和误差。

在实验过程中,我们着重考虑了算法的可靠性和计算的稳定性。

3. 实验结果与分析在实验中,我们得到了大量的实验数据和误差分析,通过对数据的展示和分析,我们得到了以下结论:(1)牛顿迭代法求解非线性方程的根能够对算法的初始值和迭代次数进行适当的调整,从而达到更高的稳定性和可靠性。

(2)高斯消元法求解线性方程组的解需要注意到矩阵的奇异性和精度的影响,从而保证计算的准确性。

(3)最小二乘法拟合数据点需要考虑到拟合的函数形式和数据的误差范围,采取适当的数据预处理和拟合函数的选择能够提高计算的准确性。

(4)拉格朗日插值法估计函数值需要考虑到插值点的选择和插值函数的阶数,防止出现龙格现象和插值误差过大的情况。

(5)梯形公式和辛普森公式求积分近似值需要考虑到采样密度和拟合函数的选择,从而保证计算的稳定性和收敛速度。

4. 结论通过本次实验的分析和总结,我们得到了深入的认识和理解数值计算的一般过程和算法的稳定性和可靠性,对于以后的数值计算应用也提供了一定的指导和参考。

数值分析第三次实习报告

数值分析第三次实习报告

武汉理工大学学生实验报告书实验课程名称:数值分析( 第三次实习)开课名称:计算机科学与技术学院指导老师姓名:熊盛武学生姓名:学生专业班级:软件工程0803班2009 —— 2010学年第一学期一、实习目的:(1)通过编程计算实践,体会和理解复化梯形公式和复化Simpson公式。

(2)通过编程计算实践,搞清变步长梯形公式的计算流程。

(3)通过编程计算实践,掌握和提高Romberg算法流程的控制技术。

(4)通过各种方法对同一题目的求解,体会各种方法的精度差异。

二、实习步骤:(1)分别画出复化梯形公式,复化Simpson公式,变步长梯形公式和Romberg 公式的算法流程图。

(2)分别用复化梯形公式和复化Simpson公式通过编程计算积分,并分析和比较算法的效率差异和精度差异。

(3)用变步长梯形公式通过编程计算积分,并分析算法精度与二分法次数之间的关系。

(4)用Romberg公式通过编程计算积分,并分析算法精度与二分法次数之间的关系。

三、算法流程图:(一)复化梯形求算法积流程图(三)变步长梯形求积算法流程图(二)复化Simpson求积算法流程图(四)Romberg公式求积流程图四、编程计算积分(一)复化梯形:(1)复化梯形算法描述(1)输入求积区间a,b和区间等分数n(2)计算步长h h=(b-a)/n(3)对于i=0到i=n-1计算节点函数值f(a+i*h)(4)计算积分值T=T+2*temp;Tn=(f(a)+f(b)+T)*h/2;(5)输出积分值(2)复化梯形求积程序源代码#include<iostream>#include<cmath>double f(double t){return 1/(1+t*t);}using namespace std;int main(){int i,n;double h,a,b,T,temp,Tn;cout<<"请输入求积区间:"<<endl;cin>>a>>b;cout<<"请输入区间等分数:"<<endl;cin>>n;h=(b-a)/n;temp=0;T=0;for(i=1;i<n;i++){temp=f(a+i*h);T=T+2*temp;}Tn=(f(a)+f(b)+T)*h/2;cout<<"经过复化梯形求积所得积分值T"<<n<<"为: "<<Tn<<endl;return 0;}(3)调试过程,实验结果及分析:1/(x*x)在区间[0,1]上8等分后,程序运行结果如下:对区间等分后求每个子区间上的积分值,然后将每个子区间的积分值相加,就得到整个积分区间上的积分值,梯形公式具有一次代数精度。

佛山科学技术学院Matlab实训报告

佛山科学技术学院Matlab实训报告

Matlab 实训报告班级: 姓名: 学号:一、上机目的1.学会运用MATLAB 的命令行格式。

2.了解MATLAB 的数据类型,掌握矩阵运算和数组运算。

3.通过实训培养学习应用和创新的能力。

二、上机内容……………………1)用Matlab 中的subplot 命令将一幅图分成四块,在各子图中分别绘制函数,3cos 2,5sin 1x y x y == x x y 3cos 5sin 3=和x x y 3cos 5sin 4+=的图像,区间取[0,5]。

2)用Matlab 命令求函数的极限:x x xx 2)1(lim +∞→=?,x e x x x cos 11lim 20---→=?,xx x x 2s i n 3553lim 2++∞→=?(注:开方函数用sqrt ) 3)用surf ,mesh 绘制曲面222z x y =+,]5,5[],5,5[-∈-∈y x 。

4) 求函数61223+-=x x y 的一阶和二阶导数,然后在同一坐标系下作出一阶和二阶导函数的图形。

5)在同一坐标系中,取自变量区间[15,200],用不同的颜色或线型分别画出下面四个函数的图形:7183.24,)111(3,)11(2,)11(11=++=+=+=+y x y x y x y xx x观测当x 增大时图形的走向。

(注:可选用’r ’,’g ’,’b ’颜色) 6)将函数23x ey -=(]4,4[-∈x )的图形分别向左和向右平移2个单位;然后将函数图形向上和向下平移2个单位。

7)求矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡351493372的行列式、逆矩阵、特征值和特征向量。

8)将函数4x y =(]2,2[-∈x )的图形以原点为中心,逆时针旋转60度角。

9)用莱布尼茨级数公式∑∞=+ -=1.1 2)1(4nn nπ计算π的近似值。

选做题:10)对莱布尼茨级数公式∑∞=+ -=1.1 2)1(4nn nπ利用while循环编写计算π的近似值的Matlab程序,要求pi与公式计算出π近似值的误差的绝对值小于0.0001。

数值分析上机实践报告

数值分析上机实践报告

数值分析上机实践报告一、实验目的本次实验主要目的是通过上机操作,加深对数值分析算法的理解,并熟悉使用Matlab进行数值计算的基本方法。

在具体实验中,我们将实现三种常见的数值分析算法:二分法、牛顿法和追赶法,分别应用于解决非线性方程、方程组和线性方程组的求解问题。

二、实验原理与方法1.二分法二分法是一种常见的求解非线性方程的数值方法。

根据函数在给定区间端点处的函数值的符号,不断缩小区间的长度,直到满足精度要求。

2.牛顿法牛顿法是求解方程的一种迭代方法,通过构造方程的泰勒展开式进行近似求解。

根据泰勒展式可以得到迭代公式,利用迭代公式不断逼近方程的解。

3.追赶法追赶法是用于求解三对角线性方程组的一种直接求解方法。

通过构造追赶矩阵,采用较为简便的向前追赶和向后追赶的方法进行计算。

本次实验中,我们选择了一组非线性方程、方程组和线性方程组进行求解。

具体的实验步骤如下:1.调用二分法函数,通过输入给定区间的上下界、截止误差和最大迭代次数,得到非线性方程的数值解。

2.调用牛顿法函数,通过输入初始迭代点、截止误差和最大迭代次数,得到方程组的数值解。

3.调用追赶法函数,通过输入追赶矩阵的三个向量与结果向量,得到线性方程组的数值解。

三、实验结果与分析在进行实验过程中,我们分别给定了不同的参数,通过调用相应的函数得到了实验结果。

下面是实验结果的汇总及分析。

1.非线性方程的数值解我们通过使用二分法对非线性方程进行求解,给定了区间的上下界、截止误差和最大迭代次数。

实验结果显示,根据给定的输入,我们得到了方程的数值解。

通过与解析解进行比较,可以发现二分法得到的数值解与解析解的误差在可接受范围内,说明二分法是有效的。

2.方程组的数值解我们通过使用牛顿法对方程组进行求解,给定了初始迭代点、截止误差和最大迭代次数。

实验结果显示,根据给定的输入,我们得到了方程组的数值解。

与解析解进行比较,同样可以发现牛顿法得到的数值解与解析解的误差在可接受范围内,说明牛顿法是有效的。

数值分析第三次上机练习实验报告

数值分析第三次上机练习实验报告

2 1 , k 0,1, 2...n. 这里唯一需要注意的就是 n 1 Pn ( xk ) Pn'1 ( xk )
还需要一个多项式微分运算(使用的是polyder函数) ,求解出这两项之后,剩下的 就是 I n ( f ) 2.
A
k 0
n
k
f ( xk ) 。
Romberg积分公式计算 函数主体是Romberg.m文件,以下只分析这个函数文件的结构: 第一部分是赋初值,对于积分表T还赋值T(1,1):
实现方法说明
程序语言采用Matlab语言,运行环境为Matlab R2009b。
注:主程序文件是First.m和Second.m,其他都是对应的自编函数文件。
1.
复化Guass-Legendre求积公式运算 这个程序主体是First.m文件,在里面定义了变量x和函数f f=sym(100*sin(10*(2+x)^(-1))*(2+x).^(-2));由于Legendre多项式的使用条件是[-1,1], 因此对积分区间做了变换,函数体本身也就变成了f(x)=(100*sin(10/(x + 2)))/(x + 2)^2。其他都是调用自己编写的函数计算。 ① Legendre多项式生成函数:Legendre.m
2/5
水利系
2008010249
程国安
这个函数主要用于生成 Legendre 多项式,比较简短,最重要的就是一个迭代 关系 P=((2*n-1)*x*Legendre(n-1)-(n-1)*Legendre(n-2))/(n);最后输出一个多项式, 如果需要整合,另外加一句 expand(P)即可。 ② Guass-Legendre积分函数:Guass-Legendre.m 这个函数的相关输入输出说明见函数文件注释。 积分实现主要需要求出 f ( xk ) 和 Ak , 对于 f ( xk ) , 重点就是建立内联函数 f ( x) 和 变量序列 xk ,变量序列 xk 主要使用利用Legendre求出对应次数的Legendre多项式 的零点(使用sym2poly求出系数,之后利用roots求零点) 。 对于 Ak ,利用 Ak

数值分析上机实习报告

数值分析上机实习报告

数值分析上机实习报告目录1.问题一 (1)问题一重述 (1)秦九韶算法简介 (1)问题一算法实现 (1)问题一求解 (1)2.问题二 (2)问题二重述 (2)逐次超松弛迭代法(SOR法)简介 (2)问题二算法实现 (3)问题二求解 (3)3.问题三 (4)问题三重述 (4)最小二乘拟合多项式与拉格朗日插值多项式简介 (4)3.2.1最小二乘拟合多项式简介 (4)3.2.2拉格朗日插值简介 (5)问题三算法实现 (5)3.3.1多项式拟合算法 (5)3.3.2拉格朗日插值算法 (6)问题三求解 (6)3.4.1最小二乘多项式拟合结果 (6)3.4.2拉格朗日插值结果 (8)问题三评判 (9)3.5.1问题三评判方式 (9)3.5.2问题三评判结果 (9)4.总结与体会 (10)5.附录 (11)1. 问题一问题一重述利用秦九韶算法简化求多项式1110n n n n x a x a y x a a --=++++的值的运算式,并写程序计算多项式42352x y x x =--+在1x =-点处的值。

秦九韶算法简介121210...n n n n y a x a x a x a x a --=+++++化为以下形式:1210(...(())...)n n n y a x a x a x a x a --=+++++求多项式值时先计算内层括号内的一次多项式的值,然后由内向外逐层计算一次多项式的值,即:11n n v a x a -=+212n v v x a -=+ …1k k n k v v x a +-=+…10n n v v x a -=+ 问题一算法实现Step1:输入多项式的降次排列的系数矩阵,某次缺失的系数用零补充之;Step2:计算表达式1v ,按递推1k k n k v v x a +-=+公式,一直计算到表达式n v ,表达式n v 即为所求秦九韶表达式;Step3:输入x 的值;Step4:计算1v ,按递推1k k n k v v x a +-=+公式,一直计算到n v 的值,n v 的值即为x 处多项式的值。

数值分析上机实验报告

数值分析上机实验报告
数值分析上机实验报告
实验报告一
题目: 非线性方程求解
摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。
前言:(目的和意义)
掌握二分法与Newton法的基本原理和应用。
数学原理:
对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。
前言:(目的和意义)
1.深刻认识多项式插值的缺点。
2.明确插值的不收敛性怎样克服。
3.明确精度与节点和插值方法的关系。
数学原理:
在给定n+1个节点和相应的函数值以后构造n次的Lagrange插值多项式,实验结果表明(见后面的图)这种多项式并不是随着次数的升高对函数的逼近越来越好,这种现象就是Rung现象。
当 时,不选主元和选主元的计算结果如下
0000000
Emax=,0
此时由Emax可以看出,不选主元的结果应该可以说是不正确了,这是由机器误差引起的。
当 时,不选主元和选主元的计算结果如下
NaN1
NaN 2
NaN 3
Emax=NaN, 0
不选主元时,程序报错:Warning: Divide by zero.。这是因为机器计算的最小精度为10-15,所以此时的 就认为是0,故出现了错误现象。而选主元时则没有这种现象,而且由Emax可以看出选主元时的结果应该是精确解。
x1=x0-miu*eval(subs(f,'x0','x'))/eval(subs(df,'x0','x'));
R=x1-x0;
x0=x1;
k=k+1;

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告实验报告插值法与数值积分实验(数值计算方法,3学时)一实验目的1.掌握不等距节点下的牛顿插值公式以及拉格朗日插值公式。

2.掌握复化的梯形公式、辛扑生公式、牛顿-柯特斯公式计算积分。

3. 会用龙贝格公式和高斯公式计算积分。

二实验内容用拉格朗日插值公式计算01.54.1==y x 以及所对应的近似值。

用牛顿插值公式求)102(y 的近似值。

三实验步骤(算法)与结果1拉格朗日插值法:(C 语言版)#include "Stdio.h" #include "Conio.h"int main(void) {float X[20],Y[20],x; int n;void input(float *,float *,float *,int *); float F(float *,float *,float,int); input(X,Y,&x,&n);printf("F(%f)=%f",x,F(X,Y,x,n));getch(); return 0; }void input(float *X,float *Y,float *x,int *n) {int i;printf("Please input the number of the data:");scanf("%d",n);printf("\nPlease input the locate of each num:\n");for(i=0;i<*n;i++){scanf("%f,%f",X+i,Y+i);}printf("\nPlease input the chazhi:"); scanf("%f",x);}float F(float *X,float *Y,float x,int n){int i,j;float Lx,Fx=0;for(i=0;i<n;i++)< p="">{Lx=1;for(j=0;j<n;j++)< p="">{if(j!=i) Lx=Lx*((x-*(X+j))/(*(X+i)-*(X+j))); } Fx=Fx+Lx*(*(Y+i));}return Fx;}得出结果如图:所以Y(1.4)=3.7295252#include#define N 10double X[N], Y[N], A[N][N];int n;double Newton(double x);double f(double x);void main() {printf("请输入已知x与对应y=f(x)的个数: n = "); scanf("%d", &n);getchar();if(n>N||n<=0) {printf("由于该维数过于犀利, 导致程序退出!"); return;}printf("\n请输入X[%d]: ", n);for (int i=0; i<="" p="">scanf("%lf", &X[i]);getchar();printf("\n请输入Y[%d]: ", n);for (i=0; i<="" p="">scanf("%lf", &Y[i]);getchar();double x;printf("\n请输入所求结点坐标x = ");scanf("%lf", &x);getchar();printf("\nf(%.4lf)≈%lf\n\n", x, Newton(x));}double Newton(double x) {int i, j;// 求均差for (i =0; i<="" p="">A[i][0] = Y[i];for (i=1; i<="" p="">for (j =1; j<=i; j++)A[i][j] = (A[i][j-1] - A[i-1][j-1]) / (X[i] - X[i-j]); // 求结点double result = A[0][0];for (i=1; i<="">double tmp = 1.0;for (int j=0; j<="" p="">tmp *= (x - X[j]);result += tmp * A[i][i];}return result;}四实验收获与教师评语</n;j++)<></n;i++)<>。

数值分析上机实践报告

数值分析上机实践报告

数值分析上机实践报告班级:计算机1002姓名:陈斯琪学号:20102686课题三A . 实验题目:线性方程组的迭代法B . 实验要求(1) 应用迭代法求解线性方程组,并与直接法作比较;(2) 分别对不同精度要求,如5-4-3-10,10,10=ε,利用所需迭代次数体会该迭代法的收敛快慢;(3) 对方程组(2),(3)使用SOR 方法时,选取松弛因子=0.8,0.9,1,1.1,1.2等,试观察对算法收敛性的影响,并找出你所选用松弛因子的最佳值; (4) 编制出各种迭代法的程序并给出计算结果。

C . 目的和意义(1) 通过上机了解迭代法求解线性方程组的特点;掌握求解线性方程组的各类迭代法;(2) 体会上机计算时,终止准则‖X^(k+1)-X^k ‖∞<ε,对控制迭代精度的有效性; (3) 体会初始值和松弛因子的选择,对迭代收敛速度的影响 D . 实验方程组(1)线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡1-421534100368-24-3-81-012029137-2621-234179-11-1003524-31-23-6217758-6233-761-62911-31-512-301-231-2-2010563-5-6000121-3-20416084-0484⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125精确解Tx )2,1,1,3,0,2,1,0,1,1(*--=.(2) 对称正定线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡45152211236601924-3-360024-3-36014110-3-5211144-3-310-4221-8-13-4-1-612-53-8-1141-2312-1-204204-2004204-2487654321x x x x x x x x精确解T*)2,0,1,1,2,0,1,1(--=x .(3)三对角线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡554141262135741-000000001-0041-0000001-41-0000001-41-0000001-41-0000001-41-0000001-41-0000001-41-0000001-400000001-000000001-410987654321x x xx x x x x x x精确解Tx )1,1,0,3,2,1,0,3,1,2(*---=.E . 实验程序代码及截图(1) 应用Jacobi 迭代法求解方程组代码如下: #include<iostream.h> #include<math.h>#define N 10 //十阶矩阵 staticdoubleA[N][N]={4,2,-3,-1,2,1,0,0,0,0,8,6,-5,-3,6,5,0,1,0,0,4,2,-2,-1,3,2,-1,0,3,1,0,-2,1,5,-1,3,-1,1,9,4,-4,2,6,-1,6,7,-3,3,2,3,8,6,-8,5,7,17,2,6,-3,5,0,2,-1,3,-4,2,5,3,0,1,16,10,-11,-9,17,34,2,-1,2,2,4,6,2,-7,13,9,2,0,12,4,0,0,-1,8,-3,-24,-8,6,3,-1};//方程组左侧系数矩阵 static double B[N]={5,12,3,2,3,46,13,38,19,-21}; //右侧值static double Y[N]; //输出比较项static double Y[N];static double X[N]; //输出项static double G[N]; //X = BX' + G的G矩阵int i,j,k; //计数器double eps;int M=100;bool distance(){ //求两输出项的差的范数是否满足精度要求double temp=0;for (i=0;i<N;i++){temp=temp+fabs(X[i]-Y[i]);}if (temp>eps)return false;elsereturn true; //满足精度要求则结束程序}void main(){cout<<"最大迭代次数为100次"<<endl;cout<<"你希望的精度是多少?"<<endl;cout<<"eps=";cin>>eps;//形成迭代矩阵B,存放到A中for (i=0;i<N;i++){if (fabs(A[i][i])<eps){cout <<"打印失败"<<endl;return;}double T=A[i][i];for (j=0;j<N;j++){A[i][j]=-A[i][j]/T;}A[i][i] = 0;G[i]=B[i]/T;}int counter=0;while (counter<M){//迭代for (i=0;i<N;i++){double temp=0;for (j=0;j<N;j++){temp=temp+A[i][j]*Y[j];}X[i]=G[i]+temp;}if (distance()==true)break;else{//交换X,Y向量;for(i=0;i<N;i++){Y[i]=X[i];}}counter++;}//打印Xcout << "迭代次数为:"<<counter<<"次。

数值分析上机实验报告

数值分析上机实验报告

一、实验目的通过本次上机实验,掌握数值分析中常用的算法,如二分法、牛顿法、不动点迭代法、弦截法等,并能够运用这些算法解决实际问题。

同时,提高编程能力,加深对数值分析理论知识的理解。

二、实验环境1. 操作系统:Windows 102. 编程语言:MATLAB3. 实验工具:MATLAB数值分析工具箱三、实验内容1. 二分法求方程根二分法是一种常用的求方程根的方法,适用于连续函数。

其基本思想是:从区间[a, b]中选取中点c,判断f(c)的符号,若f(c)与f(a)同号,则新的区间为[a, c],否则为[c, b]。

重复此过程,直至满足精度要求。

2. 牛顿法求方程根牛顿法是一种迭代法,适用于可导函数。

其基本思想是:利用函数在某点的导数值,求出函数在该点的切线方程,切线与x轴的交点即为方程的近似根。

3. 不动点迭代法求方程根不动点迭代法是一种迭代法,适用于具有不动点的函数。

其基本思想是:从初始值x0开始,不断迭代函数g(x)的值,直至满足精度要求。

4. 弦截法求方程根弦截法是一种线性近似方法,适用于可导函数。

其基本思想是:利用两点间的直线近似代替曲线,求出直线与x轴的交点作为方程的近似根。

四、实验步骤1. 二分法求方程根(1)编写二分法函数:function [root, error] = bisection(a, b, tol)(2)输入初始区间[a, b]和精度要求tol(3)调用函数计算根:[root, error] = bisection(a, b, tol)2. 牛顿法求方程根(1)编写牛顿法函数:function [root, error] = newton(f, df, x0, tol)(2)输入函数f、导数df、初始值x0和精度要求tol(3)调用函数计算根:[root, error] = newton(f, df, x0, tol)3. 不动点迭代法求方程根(1)编写不动点迭代法函数:function [root, error] = fixed_point(g, x0, tol)(2)输入函数g、初始值x0和精度要求tol(3)调用函数计算根:[root, error] = fixed_point(g, x0, tol)4. 弦截法求方程根(1)编写弦截法函数:function [root, error] = secant(f, x0, x1, tol)(2)输入函数f、初始值x0和x1,以及精度要求tol(3)调用函数计算根:[root, error] = secant(f, x0, x1, tol)五、实验结果与分析1. 二分法求方程根以方程f(x) = x^2 - 2 = 0为例,输入初始区间[a, b]为[1, 3],精度要求tol 为1e-6。

数值分析上机报告

数值分析上机报告

数力系级《数值分析》实验报告姓名学号:专业:学院:成绩:2010年 6 月25 日目录数力系级 (1)1.第二章上机练习 (4)实验一 (4)迭代公式(简单原理) (4)程序及实验结果 (6)结果分析 (11)实验二 (11)迭代公式(简单原理) (11)程序及实验结果 (12)结果分析 (14)实验三 (14)迭代公式(简单原理) (14)程序及实验结果 (14)结果分析 (15)2.第三章上机练习 (15)实验一 (15)迭代公式(简单原理) (16)程序及实验结果 (16)结果分析 (18)实验二 (18)迭代公式(简单原理) (18)程序及实验结果 (19)结果分析 (23)3.第四章上机练习 (23)实验一 (23)迭代公式(简单原理) (23)程序及实验结果 (24)结果分析 (26)实验二 (27)迭代公式(简单原理) (27)程序及实验结果 (28)结果分析 (29)实验三 (29)迭代公式(简单原理) (30)程序及实验结果 (30)结果分析 (31)4.第五章上机练习 (31)实验一 (31)迭代公式(简单原理) (31)程序及实验结果 (32)结果分析 (34)实验二 (34)迭代公式(简单原理) (35)程序及实验结果 (36)结果分析 (38)实验三(选作) (39)迭代公式(简单原理) (39)程序及实验结果 (40)结果分析 (41)5.第七章上机练习 (42)实验一 (42)迭代公式(简单原理) (42)程序及实验结果 (44)结果分析 (49)1.第二章上机练习实验一1、分别用不动点迭代与Newton 法求解方程x-x 10+2=0的正根与负根。

2、use the following method to find a solution in [,1] accurate to within 410- for0120200550600234=--+-x x x xa. Bisection method ;b. Newton method ; method ; d. method of False Position ; üller’s method 迭代公式(简单原理)MethodThe method calls for a repeated halving of subintervals of [a, b] and, at each step, locating the half containing the root of equation.Suppose f(x) is a continuous function defined on the interval [a, b], with f(a) and f(b) of opposite sign. set al = a and b1 = b, and let p1 be the midpoint of [a, b]; That is p1 =(a+b)/2, If f(p1) = 0, then set p = p1, p1是f(x)=0的实根p. If f(a1)f(p1)<0, then p ∈ (a1, p1), set a2=a1,b2=p1; otherwise p ∈ (p1,b1), set a2=p1,b2=b1. We then repeat the process to the interval [a2, b2]. The length of interval [ a k , b k ] is bk-ak=12--k a b IterationThe basic idea:Step1. Constructing the fixed-point equation: x=g (x ) ,let f (x )=0⇔ x=g (x ); g (x ) is called Iteration functionStep2. Setting up iteration scheme :p k+1= g (p k) (1)We choose an initial approximation p0 and generate the sequence ∞=o k k p }{ by (1), for each k ≥ 1.3. Newton methodSuppose that f ∈ 2C [a, b] ,let pk ∈ [a, b] be an approximation to root of the equation f(x)= the firstTaylor polynomial for f(x) about pk to approximate f(x):))((')()(k k k p x p f p f x f -+≈ We have 0)(=x f ⇔ ))((')(k k k p x p f p f -+0≈, Let f ’(pk ) ≠0 , Solving for pk+1 gives)(')(1k k k k p f p f p p -=+, which starts with an initial approximation P0 and generates the sequence ∞=o k k p }{ 4. Secant method如所求问题不便求导,用过点xk 的割线的斜率来代替切线的f ’( xk ), 即11)()('----=k k k k k x x x x f x f , Substituting it into Newton Method, we have )()()()(111--+---=k k k k k k k x x x f x f x f x x , This technique is called the Secant method .5. method of False Position (1) 提供两个初始值:p0, p1,满足f(p0) ·f(p1)<0 ;(2)利用割线法求出p2,; (3) 检查f(p2) ·f(p1),若f(p2) ·f(p1)<0 ,过点(p1,f(p1)) (p2,f(p2))做割线,求出p3; 否则若f(p2) ·f(p1) >0,过点(p0,f(p0))与(p2,f(p2))做割线,求出p3; 依此类推下去…试位法保证方程f(x)=0的根p ,总在相邻的迭代之中,即p ∈(pk,pk+1).6. M üller’s method程序及实验结果Newton methodfunction res=fnewton(func,dfunc,x,tol) x0=x;d=feval(func,x0)/feval(dfunc,x0);i=0;while abs(d)>toli=i+1;x1=x0-d;x0=x1;d=feval(func,x0)/feval(dfunc,x0); endres=[x0,i];function fx1=func(x)fx1=x-10^x+2;function fx2=dfunc(x)fx2=1-10^x*(log(10));实验结果Iterationfunction res=fixedpoint(func1,x,tol)x0=x;d=feval(func1,x0);x1=d;i=0;while abs(x1-x0)>tolx0=x1;i=i+1;d=feval(func1,x1); x1=d;endres=[x1,i];function fx1=func1(x) fx1=log10(x+2);实验结果将func1做更改function fx=func2(x) fx=10^(x)-2;实验结果:Bisection methodfunction res=bisection(func,xa,xb,tol)n=0;xc=0;fa=0;fc=0;while (xb-xa)>toln=n+1;fa=feval(func,xa);xc=(xa+xb)/2;fc=feval(func,xc);if fc*fa<0xb=xc;else xa=xc;endendres=[ n xa xb xc fc ];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;实验结果. Newton methodfunction res=fnewton(func,dfunc,x,tol)x0=x;d=feval(func,x0)/feval(dfunc,x0);i=0;while abs(d)>toli=i+1;x1=x0-d;x0=x1;d=feval(func,x0)/feval(dfunc,x0);endres=[x0,i];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;function fx2=dfunc(x)fx2=1-10^x*(log(10));实验结果methodfunction res=secant(func,x,y,tol)x0=x;x1=y;d=[feval(func,x1)]*(x1-x0)/(feval(func,x1)-feval(func,x0)); i=0;while abs(d)>toli=i+1;d=feval(func,x1)*(x1-x0)/(feval(func,x1)-feval(func,x0));x0=x1;x1=x1-d;endres=[x0,i];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;实验结果method of False Positionfunction res=falseposition(func,x,y,tol)x0=x;x1=y;d=[feval(func,x1)]*(x1-x0)/(feval(func,x1)-feval(func,x0)); i=0;f=0;x2=0;while abs(d)>toli=i+1;f=feval(func,x1);d=feval(func,x1)*(x1-x0)/(feval(func,x1)-feval(func,x0)); x2=x1-d;if x2*f<0x0=x1;x1=x2;else x1=x2;endendres=[x0,i];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;实验结果üller’s methodfunction res=muller(func, x, y, z, tol)%To find the approximation root of a polynomial s %by muller methodx0=x;x1=y;x2=z;h1=x1-x0;h2=x2-x1;m1=(feval(func,x1)-feval(func,x0))/h1;m2=(feval(func,x2)-feval(func,x1))/h2;d=(m2-m1)/(h2+h1);i=0;h=100;b=0;e=0;p=0;q=0;while abs(h)>toli=i+1;b=m2+h2*d;p=(b^2-4*d*feval(func,x2))^;if abs(b-p)<abs(b+p)e=b+p;else e=b-p;endh=(-2)*feval(func,x2)/e;q=x2+h;x0=x1;x1=x2;x2=q;h1=x1-x0;h2=x2-x1;m1=(feval(func,x1)-feval(func,x0))/h1;m2=(feval(func,x2)-feval(func,x1))/h2;d=(m2-m1)/(h2+h1);endres=[q,i];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;实验结果结果分析1.经过实验结果比较我们可以看到,Newton 法只需选取不同的初值,便可求出他全部的解,即Newton 法对于他全部的解都是收敛的。

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

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

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

1.1理论依据:设函数在有限区间[a,b]上二阶导数存在,且满足条件1. f(x)f(b) 02. f(x)在区间[a, b]上不变号3f(x) = 0;4」f (c)〔f .(x) |,其中c是a,b中使mir(| f .(a), f .(b) |)达到的一个b -a则对任意初始近似值x0• [a,b],由Newton迭代过程込f(x k )X“ M(Xk) = Xk — T^,k = 0,1,2,3…f'(X k)所生的迭代序列 % [平方收敛于方程f(x)=0在区间[a,b]上的惟一解: 令7 4f(x)=x -28x 14, f (0.1) 0, f(1.9) ::0f (x) =7x6-112x3=7x3(x3-16) ::: 0f (x) =42x5-336x2=42x2(x3-8) :: 0f (1.9) f (1.9) 0故以1.9为起点x0 =1.9如此一次一次的迭代,逼近X的真实根。

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

本程序用Newton法求代数方程(最高次数不大于10)在(a,b )区间的根//限制循环次数1.2 C 语言程序原代码:#i nclude<stdio.h> #in clude<math.h> mai n() {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); x 仁 x2-f/f1;}while(fabs(x1-x2)>=0.00001||x1<0.1); printf("计算结果:x=%f\n",x1);}1.3运行结果:* D:\VC + +\EXERCIS E\Debu g\l1.4 MATLAB上机程序fun cti on y=Newt on( 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))v=epsd=1; breakendendif d==1y=x1;elseif d==0y='迭代M次失败';elsey=奇异’endfun cti on y=df(x)y=7*x A6-28*4*x A3;Endfunction y=f(x) y=x A7-28*x A4+14;End>> x0=1.9;>> eps=0.00001;>> M=100;>> x=Newto n('f,'df,x0,eps,M);>> vpa(x,7)1.5问题讨论:1•使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

数值分析_第三次上机

数值分析_第三次上机

4.求f(x)=sin x 在[0,π/2]上的最佳一次逼近多项式。

解:设P 1(x)=a 0+a 1x 是f(x) 的最佳一次逼近多项式,则P 1(x)在[0,π/2]上有三个交错点, 满足0<=x 1<x 2<x 3<=π/2。

由于 [f(x)- P 1(x)]’’=(cos x-a 1)’= -sin x 在[0,π/2]上小于0,定号, 故(cos x-a 1)’在[0,π/2]上单调递减,且仅有一个驻点。

故f(x)- P 1(x)在[0,π/2]上只有一个偏差点x 2,满足[f(x)- P 1(x)]’|x=x2 =cos x 2-a 1=0 (1)。

另外两个偏差点x 1=0 ,x 3=π/2 .于是sin 0-a 0 =sin π/2-a 0-π/2a 1 (2), sin x 2 –a 0-a 1x 2= -( sin 0-a 0) (3) 由(1)(2)(3)式得:a 1=2/π x 2=arccos 2/π=0.88 a 0=-1.18 所以P 1= -1.18+2/π x 。

6.求f(x)=2x 4+3x 3-x 2+1在[-1,1]上的三次最佳一致逼近多项式。

解:设f(x)的三次最佳一致逼近多项式为P 3(x),由切比雪夫多项式的极性可得 1/2[f(x)- P 3(x)]=1/8T 4(x)=1/8(8x 4-8x 2+1)所以P 3(x)=f(x)-1/4(8x 4-8x 2+1)= 2x 4+3x 3-x 2+1-2x 4+2x 2-1/4 =3x 3+x 2+3/49.求函数f(x)在指定区间上关于Φ(x)=span{1,x}的最佳平方逼近多项式。

(3)f(x)=cosπx, x ∈[0,1];(4)f(x)=ln x, x ∈[1,2].解:(3)在[0,1]上,经计算得 d 0= ⎰1)(f dx x =0 ,d 1=⎰1)(x dx x f = -2/π2得到法方程组为a 0+1/2a 1=0 ,1/2a 0+1/3a 1= -2/π2 由上面两式解得 a 0=12/π2 ,a 1= -24/π2所以f(x)=cosπx 在[0,1]上的最佳平方逼近多项式为 S 1*=12/π2 -24/π2 x 。

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