《计算方法》课内实验报告(实验2)2014
计算方法实验报告

计算方法实验报告计算方法实验报告概述:计算方法是一门研究如何用计算机解决数学问题的学科。
在本次实验中,我们将学习和应用几种常见的计算方法,包括数值逼近、插值、数值积分和常微分方程求解。
通过实验,我们将深入了解这些方法的原理、应用场景以及其在计算机科学和工程领域的重要性。
数值逼近:数值逼近是一种通过使用近似值来计算复杂函数的方法。
在实验中,我们通过使用泰勒级数展开和牛顿迭代法等数值逼近技术,来计算函数的近似值。
这些方法在科学计算和工程领域中广泛应用,例如在信号处理、图像处理和优化问题中。
插值:插值是一种通过已知数据点来估算未知数据点的方法。
在实验中,我们将学习和应用拉格朗日插值和牛顿插值等方法,以及使用这些方法来构造函数的近似曲线。
插值技术在数据分析、图像处理和计算机图形学等领域中具有重要的应用价值。
数值积分:数值积分是一种通过将函数曲线划分为小矩形或梯形来估算函数的积分值的方法。
在实验中,我们将学习和应用矩形法和梯形法等数值积分技术,以及使用这些方法来计算函数的近似积分值。
数值积分在物理学、金融学和统计学等领域中被广泛使用。
常微分方程求解:常微分方程求解是一种通过数值方法来求解微分方程的方法。
在实验中,我们将学习和应用欧拉法和龙格-库塔法等常微分方程求解技术,以及使用这些方法来求解一些常见的微分方程。
常微分方程求解在物理学、生物学和工程学等领域中具有广泛的应用。
实验结果:通过实验,我们成功地应用了数值逼近、插值、数值积分和常微分方程求解等计算方法。
我们得到了准确的结果,并且在不同的应用场景中验证了这些方法的有效性和可靠性。
这些实验结果将对我们进一步理解和应用计算方法提供重要的指导和支持。
结论:计算方法是计算机科学和工程领域中的重要学科,它提供了解决复杂数学问题的有效工具和方法。
通过本次实验,我们深入了解了数值逼近、插值、数值积分和常微分方程求解等计算方法的原理和应用。
这些方法在科学研究、工程设计和数据分析等领域中具有广泛的应用价值。
计算方法课程上机实验报告2

计算方法课程上机实验二姓名 彭鑫 学号 2704302012 得分实验地点: 科研楼机房 学时: 指导教师: 李浩 时间:1. 实验目的掌握高斯消去法的基本思路和迭代步骤;培养编程与上机调试能力。
2. 实验内容利用列主元高斯消去法解方程组1231231230.101 2.304 3.555 1.1831.347 3.712 4.623 2.1372.835 1.072 5.643 3.035x x x x x x x x x ++=⎧⎪-++=⎨⎪-++=⎩要求给出相关理论基础和算法描述。
3. 算法介绍或方法基础高斯消去法对于一般方程组,通过同解变换将其化为上三角方程组这种特形式,然后进行求解.4. 程序function X=backsub(A,B)n=length(B);X=zeros(n,1);X(n)=B(n)/A(n,n);for k=n-1:-1:1X(k)=(B(k)-A(k,k+1:n)*X(k+1:n))/A(k,k);endfunction X=uptrbk(A,B)[N N]=size(A);C=zeros(1,N+1);Aug=[A B];for p=1:N-1[Y,j]=max(abs(Aug(p:N,p)));C=Aug(p,:);Aug(p,:)=Aug(j+p-1,:);Aug(j+p-1,:)=C;if Aug(p,p)==0breakendfor k=p+1:Nm=Aug(k,p)/Aug(p,p);Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p:N+1);endendAug;X=backsub(Aug(1:N,1:N),Aug(:,N+1));5. 实验结果X=uptrbk(A,B)X =-0.39820.01380.33516. 结果分析与解释从以上的结果可以知道1230.3982,0.0138,0.3351x x x =-==,高斯消去法计算量小,速度快,相比其他常规方法更有优势。
计算方法_实验报告

一、实验目的1. 理解并掌握计算方法的基本概念和原理;2. 学会使用计算方法解决实际问题;3. 提高编程能力和算法设计能力。
二、实验内容本次实验主要涉及以下内容:1. 线性方程组的求解;2. 多项式插值;3. 牛顿法求函数零点;4. 矩阵的特征值和特征向量求解。
三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 科学计算库:NumPy、SciPy四、实验步骤及结果分析1. 线性方程组的求解(1)实验步骤a. 导入NumPy库;b. 定义系数矩阵A和增广矩阵b;c. 使用NumPy的linalg.solve()函数求解线性方程组。
(2)实验结果设系数矩阵A和增广矩阵b如下:A = [[2, 1], [1, 2]]b = [3, 2]解得:x = [1, 1]2. 多项式插值(1)实验步骤a. 导入NumPy库;b. 定义插值点x和对应的函数值y;c. 使用NumPy的polyfit()函数进行多项式拟合;d. 使用poly1d()函数创建多项式对象;e. 使用多项式对象计算插值点对应的函数值。
(2)实验结果设插值点x和对应的函数值y如下:x = [1, 2, 3, 4, 5]y = [1, 4, 9, 16, 25]拟合得到的二次多项式为:f(x) = x^2 + 1在x = 3时,插值得到的函数值为f(3) = 10。
3. 牛顿法求函数零点(1)实验步骤a. 导入NumPy库;b. 定义函数f(x)和导数f'(x);c. 设置初始值x0;d. 使用牛顿迭代公式进行迭代计算;e. 判断迭代结果是否满足精度要求。
(2)实验结果设函数f(x) = x^2 - 2x - 3,初始值x0 = 1。
经过6次迭代,得到函数零点x ≈ 3。
4. 矩阵的特征值和特征向量求解(1)实验步骤a. 导入NumPy库;b. 定义系数矩阵A;c. 使用NumPy的linalg.eig()函数求解特征值和特征向量。
大学计算方法实验报告

《计算方法》实验报告实验题目实验报告1:非线性方程组的求解···················P1~2实验报告2:线性方程组解法·······················P3~4 实验报告3:Lagrange 插值多项式··················P5~7姓名:学号:班级:指导老师:时间:专业 序号 日期实验报告1:非线性方程组的求解【实验目的】1.用MATLAB 来实践进行牛顿法的变形,即对牛顿法进行了修正,使其应用更为方便,掌握用MATLAB 运用割线法求解非线性方程组。
2.运用MATLAB 进行隐函数作图。
【实验内容】[方法] 设a,b 为迭代初值,求两点(a,f(a)) 与 (b,f(b)) 的连线(割线)与 x 轴的交点记为 c ,再把迭代初值换成 b,c,重复计算.[要求] 把下面程序复制为新的 M-文件,去掉开头的 %再把 '?' 部分改写正确就是一个完整的程序,找前面一个例子试算【解】在牛顿迭代公式中用差商代替导数。
带入初值(a,f(a)),(b,f(b)),两点的连线与x 轴的交点作为c ,再把迭代初值换为b ,c ,重复计算。
【计算机求解】以y= x-exp(-x)为例初值a=0,b=1,误差不超过1.0*10^(-5)进行计算。
《计算方法》实验报告材料

《计算方法》实验报告材料引言:计算方法是一门应用数学的基础课程,通过实验教学,能够帮助学生更好地理解和掌握各种数值计算的方法和技巧。
本次实验旨在通过编程实现一些常用的数值计算方法,并通过对比分析实验结果,验证方法的有效性和可行性。
实验一:插值算法插值算法是利用已知的数据点,构建一个连续函数以逼近数据的方法。
本次实验中使用的插值算法为拉格朗日插值和牛顿插值。
通过编程实现这两种算法,并选取若干个数据点进行测试,得到插值函数的结果。
通过比较原始数据和插值函数的结果,可以验证插值算法的准确性和可行性。
实验二:方程求解方程求解是数值计算中的一个重要问题,求解非线性方程、线性方程组和特征值问题等都需要采用相应的迭代方法。
本次实验中,我们实现了常用的牛顿迭代法和二分法,并选择数学问题进行求解。
通过比较实验结果和理论值的误差,可以验证求解方法的精确性和可行性。
实验三:数值积分数值积分是利用数值方法对定积分进行近似求解的过程。
本次实验中,我们实现了矩形法、梯形法和辛普森法等常用的数值积分方法,并选取若干函数进行数值积分的计算。
通过比较数值积分的结果和解析解或数值解的误差,可以验证数值积分方法的准确性和可行性。
实验四:常微分方程求解常微分方程求解是数值计算中的一个重要问题,常常涉及到物理、化学、生物等科学领域。
本次实验中,我们实现了欧拉方法和龙格-库塔方法等常用的常微分方程求解算法,并选取若干常微分方程进行求解。
通过比较数值解和解析解或数值解的误差,可以验证常微分方程求解方法的精确性和可行性。
实验五:线性方程组求解线性方程组求解是数值计算中的一个重要问题,常常涉及到矩阵的运算和迭代方法。
本次实验中,我们实现了高斯消元法和追赶法等常用的线性方程组求解算法,并选择一些矩阵进行求解。
通过比较数值解和解析解或数值解的误差,可以验证线性方程组求解方法的精确性和可行性。
结论:通过本次实验,我们掌握了插值算法、方程求解、数值积分、常微分方程求解和线性方程组求解等常用的计算方法。
计算方法实验报告(2)

计算方法实验报告(四)方程和方程组的迭代解法一、实验问题利用简单迭代法,两种加速技术,牛顿法,改进牛顿法,弦割法求解习题5-1,5-2,5-3中的一题,并尽可能准确。
选取5-3:求x 3−x 2−1=0在x=1.5附近的根。
二、问题的分析(描述算法的步骤等)(1)简单迭代法算法:给定初始近似值p 0,求p =φ(p )的解。
Step 1 令i=0;Step 2 令p i+1=φ(p i )(计算p i+1);Step 3 如果p i+1=p i ,则迭代终止,否则重复Step 2。
(2)Aitken 加速法算法Step 1 令k=0,利用简单迭代算法x k+1=φ(x k )得到迭代序列x k ;Step 2 令x k ∗=x k -(x k −x k−1)2x k −2x k−1+x k−2(计算x k ∗得到一个新的序列x k ∗,其中k=0,1,2…);Step 3 如果x k+1∗=x k ∗,则迭代终止,否则重复Step 2。
(3)插值加速法算法Step 1 令k=0,利用简单迭代算法x k+1=φ(x k )得到迭代序列x k ;Step 2 令x k ∗=x k +(x k −x k−1)(x k −x k+1)x k−1−2x k +x k+1(计算x k ∗得到一个新的序列x k ∗,其中k=1,2,3…);Step 3 如果x k+1∗=x k ∗,则迭代终止,否则重复Step 2。
(4)牛顿法算法Step 1给定初始近似值x 0;Step 2令x k+1=x k −f (x k)f (x k ),其中k ∈N,计算得到x k 的 序列;Step 3如果x k+1=x k ,则迭代终止,否则重复Step 2。
(5)改进牛顿法的算法Step 1给定初始近似值x 0;Step 2令x k+1=x k −k ′(k )′(k )√′2(k )"(k )(k ) ,其中k ∈N,迭代计算得到x k 的 序列;Step 3如果x k+1=x k ,则迭代终止,否则重复Step 2。
计算方法实验报告格式2014

一、 实验总体要求1. 实验报告要求用实验报告纸;2. 实验报告要求手写;3. 根据规定格式写实验报告,具体见第五节;4. 实验报告前四项内容在上实验前写好;5. 实验报告第五项在实验课上根据具体情况写;6. 每节实验课下课前交实验报告;7. 提倡实验程序事先编完,带程序或笔记本电脑到实验室直接根据所选择的的题目完成实验报告。
二、 实验内容1. 秦九韶公式与数值稳定实验实验内容:1)编写利用秦九韶算法计算N 阶多项式值的函数;2)编写计算绝对误差和相对误差的函数;3)编写函数实现将输入的浮点数进行规格化为指定位数的有效数字;4)编写函数采用不同方法求解15nn x I dx x =+⎰等类似问题,并计算误差。
实验要求:1)应用MATLAB 编程并上机调试通过;2)内容4要将每次迭代结果用图形显示;3)按规定格式撰写实验报告;4)实验时间为2学时。
2. 非线性方程实验实验内容:1)编写函数实现求实根的二分法;2)编写函数实现求实根的迭代法;3)编写函数实现求实根的牛顿法;4)编写函数实现弦截法实验要求:1)应用MATLAB 编程并上机调试通过;2)比较同一方程不同解法的误差;3)要将每次迭代结果用图形显示;4)与MATLAB 提供的函数的结果进行比较分析;5)按规定格式撰写实验报告;6)实验时间为2学时。
3. 常微分方程数值解法实验实验内容:1)编写函数实现欧拉法;2)编写函数实现改进欧拉法实验要求:1)应用MATLAB 编程并上机调试通过;2)比较同一方程不同解法的误差;3)要将每次迭代结果用图形显示;4)与MATLAB 提供的函数的结果进行比较分析;5)按规定格式撰写实验报告;6)实验时间为2学时。
4.插值实验实验内容:1)编写函数实现拉格朗日法;2)编写函数实现牛顿均差法实验要求:1)应用MATLAB 编程并上机调试通过;2)比较不同方法的误差;3)与MATLAB 提供的函数的结果进行比较分析;4)按规定格式撰写实验报告;4)实验时间为2学时。
计算方法实验报告习题2(浙大版)

计算方法实验报告实验名称: 实验2 列主元素消去法解方程组 1 引言工程实际问题中,线型方程的系数矩阵一般为低阶稠密矩阵和大型稀疏矩阵。
用高斯消去法解Ax =b 时,可能出现)(k kk a 很小,用作除数会导致中间结果矩阵元素数量级严重增长和舍入误差的扩散,使结果不可靠;采用选主元素的三角分解法可以避免此类问题。
高斯消去法的消去过程,实质上是将A 分解为两个三角矩阵的乘积A =LU ,并求解Ly =b 的过程。
回带过程就是求解上三角方程组Ux =y 。
所以在实际的运算中,矩阵L 和U 可以直接计算出,而不需要任何中间步骤,从而在计算过程中将高斯消去法的步骤进行了进一步的简略,大大提高了运算速度,这就是三角分解法。
采用选主元的方式与列主元高斯消去法一样,也是为了避免除数过小,从而保证了计算的精确度。
2 实验目的和要求通过列主元素消去法求解线性方程组,实现P A =LU 。
要求计算解x ,L ,U ,整形数组IP (i ),(i =1,2,…,)(记录主行信息)。
3 算法原理与流程图(1)原理将A 分解为两个三角矩阵的乘积A =LU 。
对方程组的增广矩阵[]b A A ,=经过k-1步分解后,可变成如下形式:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡→-------------n nnnjnkk n n n i in ij ik k i i i k kn kj kk k k k k k n k j k k k k k k k n j k k n j k k b a a a l l l b a a a l l l b a a a l l l y u u u u l l y u u u u u l y u u u u u u A1,211,211,211,1,1,11,12,11,122221,2222111,1,11,11211第k 步分解,为了避免用绝对值很小的数kku 作除数,引进量1111 (,1,,;1,2,,) ()/ (1,2,,;1,2,,)k kj kj km mj m k ik ik im mk kk m u a l u j k k n k n l a l u u i k k n k n -=-=⎧=-=+=⎪⎪⎨⎪=-=++=⎪⎩∑∑11(,1,,)k i ik im mkm s a l u i k k n -==-=+∑,于是有kk u =ks 。
计算方法实验报告2

实验报告2:解线性方程组的直接法姓名:杜娟学号:08012324 班级:勘查08-3班一.上机题目用高斯列主元消去法和LU分解法解线性方程组二.目的要求掌握用高斯列主元消去法和LU分解法设计程序,从而实现解线性方程组。
三.方法原理1.如果在一列中选取按模最大的元素,将其调到主干方程位置再做消元,则称为列主元消元法。
调换方程组的次序是为了使运算中做分母量的绝对值尽量地大,减少舍入误差的影响。
2.由高斯消元法得到启发,对消元的过程相当于将分解为一个上三角矩阵和一个下三角矩阵的过程。
如果直接分解得到和,。
这时方程化为,令,由解出;再由,解出。
这就是直接分解法。
四.算法步骤列主元消元法算法1.输入:方程组阶数n,方程组系数矩阵A和常数向量项b。
2.for k=1 to n-1 //选主元的消元过程{//选择{s=|a kk|,m=kfor u=k+1 to nif |a uk|>s then{m=u,s=| a uk|}for v=k to n //交换第k行和第m行{t=a kv; a kv=a mv; a mv=t}t=b k;b k=b m;b m=t}for i=k+1 to n{t=a ik/a kkfor j=k+1 to n{a ij=a ij-t*a kj}b i=b i-t*a kj}}3.for i:=n TO 1 //回代求解4.输出方程组的解 x i, i=1,2,…,n。
如果对于第k步,从k行至n行和从k列至n列中选取按模最大的,对第行和第行交换,对第列和第v列交换,这就是全主元消元法。
在k列和第v列交换时,还要记录下v的序号,以便恢复未知量xk和xv的位置。
LU分解法1计算的第一行元素要计算,则列出式(3.20)等号两边的第1行第1列元素的关系式:故。
一般地,由的第一行元素的关系式得到2计算的第一列元素要计算,则列出式(3.20)等号两边的第2行第1列元素的关系式:故。
《计算方法》课内实验报告(实验2)2014

《计算方法》课内实验报告学生姓名:张靖2012309010111及学号:学院:理学院班级:信计121课程名称:计算方法实验题目:插值法与函数逼近指导教师周硕教授姓名及职称:朱振菊实验师2014年11月03日目录一、实验题目 (1)二、实验目的 (1)三、实验内容 (1)四、实验结果 (2)五、实验体会或遇到问题 (8)一、实验题目1.熟悉matlab 编写及运行数值计算程序的方法。
2.进一步理解数值积分的基础理论。
3.进一步掌握应用不同的数值积分方法求解给定的积分并给出数据结果及误差分析。
二、实验目的1.熟悉matlab 编写及运行数值计算程序的方法。
2.进一步理解插值法及函数逼近方法的理论基础。
3.进一步掌握给定数据后应用插值法及函数逼近方法进行数据处理并给出图示结果的实际操作过程。
三、实验内容1.分别用复合梯形求积公式及复合辛普森求积公式计算积分xdx x ln 1⎰,要求计算精度达到410-,给出计算结果并比较两种方法的计算节点数. 2.用龙贝格求积方法计算积分dx x x ⎰+3021,使误差不超过510-.3.用3=n 的高斯-勒让德公式计算积分⎰31sin x e x ,给出计算结果.4.用辛普森公式 (取2==M N ) 计算二重积分.5.005.00dydx e x y ⎰⎰-四、 实验结果1.问题1:计算结果如下表表1问题1求解表复合梯形求积公式:取1210-,n=,n为迭代次数,当迭代12次后,精度达到4 n-;节点数为21=4095复合辛普森求积公式:取1000010-,节点数为n=,n为区间数,取精度为4n+=。
1100012.问题2:计算结果如下表表2问题2求解表龙贝格数值积分:给定被积函数0,被积上限3,精度为510-,龙贝格积分表中行的最大数目13,计算出龙贝格数值积分近似解为10.20759362。
3.问题3:计算结果如下表表3问题3求解表高斯-勒让德积分公式:取3n = ,节点横坐标k x 取,n k A 取585999,,,2n 阶导数e sin x x -,求得高斯-勒让德积分近似解为10.94840256。
计算方法实验报告

实验报告一、求方程f(x)=x^3-sinx-12x+1的全部根, ε=1e -6 1、 用一般迭代法; 2、 用牛顿迭代法;并比较两种迭代的收敛速度。
一、首先,由题可求得:12cos 3)(2'--=x x x f . 其次,分析得到其根所在的区间。
① 令()0=x f ,可得到x x x sin 1123=+-.② 用一阶导数分析得到1123+-x x 和x sin 两个函数的增减区间;再用二阶导数分析得到两个函数的拐点以及凹凸区间.③ 在直角坐标轴上描摹出01123=+-x x 和0sin =x 的图,在图上可以看到他们的交点,然后估计交点所在的区间,即是所要求的根的区间。
经过估计,得到根所在的区间为[]3,4--,[]1,0和[]4,3.1、 一般迭代法 (1)算法步骤:设ε为给定的允许精度,迭代法的计算步骤为:① 选定初值0x .由()0=x f 确定函数()x g ,得等价形式()x g x =. ② 计算()0x g .由迭代公式得()01x g x =.③ 如果ε≤-01x x ,则迭代结束,取1x 为解的近似值;否则,用1x 代替0x ,重复步骤②和步骤③. (2)程序代码: ① 在区间[]3,4--内, 代码: clcx0=-3.5; %初值0xiter_max=100; %迭代的最大次数 ep=1e-6; %允许精度 ε k=0;while k<=iter_max %k 从0开始到iter_max 循环 x1=(sin(x0)+12*x0-1).^(1/3); %代入0x ,算出1x 的值 if abs(x1-x0)<ep %01x x -与允许精度作比较 break ; %条件ε≤-01x x 成立,跳出循环 endx0=x1; %条件ε≤-01x x 不成立,用1x 代替0x k=k+1; %k 加1 endx_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star = -3.4101 ;iter =14②在区间[]1,0内,代码: clcx0=0.5; %初值0xiter_max=100; %迭代的最大次数 ep=1e-6; %允许精度ε k=0;while k<=iter_max %k 从0开始到iter_max 循环 x1=(1/12)*(x0.^3-sin(x0)+1); %代入0x ,算出1x 的值 if abs(x1-x0)<ep %01x x -与允许精度作比较 break ; %条件ε≤-01x x 成立,跳出循环endx0=x1; %条件ε≤-01x x 不成立,用1x 代替0x k=k+1; %k 加1 endx_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 结果:x_star = 0.07696;iter =6③在区间[]4,3内, 代码: clcx0=3.5; %初值0xiter_max=100; %迭代的最大次数 ep=1e-6; %允许精度ε k=0;while k<=iter_max %k 从0开始到iter_max 循环 x1=(sin(x0)+12*x0-1).^(1/3); %代入0x ,算出1x 的值 if abs(x1-x0)<ep %01x x -与允许精度作比较 break ; %条件ε≤-01x x 成立,跳出循环 endx0=x1; %条件ε≤-01x x 不成立,用1x 代替0x k=k+1; %k 加1 endx_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star = 3.4101 ;iter =102、 牛顿迭代法 (1)算法步骤:① 选定初值0x ,计算()0x f ,()0'x f .② 按公式()()k k k k x f x f x x '1-=+迭代,得新的近似值1+k x ,并计算()1+k x f ,()1'+k x f . ③ 对于给定的允许精度ε,如果ε≤-+k k x x 1,则终止迭代,取1*+≈k x x ;否则,1+=k k ,在转回步骤②计算.(2)程序代码: ①在区间[]3,4--内, clcx1=-3.5; %初值1x k=0;while k<=100 %k 从0开始到100循环 x0=x1; %将初值1x 赋给0xf0=x0.^3-sin(x0)-12*x0+1; %计算()0x f f1=3*x0.^2-cos(x0)-12; %计算()0'x f x1=x0-f0/f1; %计算得到新的近似值1xif abs(x1-x0)< 1.0e-6 %01x x -与允许精度作比较 break ; %条件ε≤-01x x 成立,跳出循环 endk=k+1; %条件ε≤-01x x 不成立,k 加1 endx_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star = -3.4911;iter =2②在区间[]1,0内,clcx1=0.5; %初值1x k=0;while k<=100 %k 从0开始到100循环 x0=x1; %将初值1x 赋给0xf0=x0.^3-sin(x0)-12*x0+1; %计算()0x f f1=3*x0.^2-cos(x0)-12; %计算()0'x f x1=x0-f0/f1; %计算得到新的近似值1xif abs(x1-x0)< 1.0e-6 %01x x -与允许精度作比较 break ; %条件ε≤-01x x 成立,跳出循环 endk=k+1; %条件ε≤-01x x 不成立,k 加1 endx_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star =0.07696 ;iter =3③在区间[]4,3内, clcx1=3.5; %初值1x k=0;while k<=100 %k 从0开始到100循环 x0=x1; %将初值1x 赋给0xf0=x0.^3-sin(x0)-12*x0+1; %计算()0x f f1=3*x0.^2-cos(x0)-12; %计算()0'x f x1=x0-f0/f1; %计算得到新的近似值1xif abs(x1-x0)< 1.0e-6 %01x x -与允许精度作比较 break ; %条件ε≤-01x x 成立,跳出循环 endk=k+1; %条件ε≤-01x x 不成立,k 加1 endx_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star =3.4101;iter =33、运行结果:4、结果分析:从这题的结果可以看出,牛顿迭代法的迭代速度比一般迭代法的速度要快,牛顿法的迭代次数比较少。
计算方法实验报告

计算方法实验报告实验目的:1.掌握计算方法的基本概念和算法;2.熟悉常见计算方法的实现步骤和注意事项;3.学会使用计算方法解决实际问题。
实验内容:1.实现二分法;2.实现牛顿迭代法;3.实现高斯消去法。
实验步骤:1.实现二分法:1.1定义函数f(x);1.2 确定初始区间[a, b]和精度tol;1.3计算区间中点c;1.4判断f(a)和f(c)的符号关系并更新区间;1.5重复步骤1.3和1.4直到满足精度要求。
2.实现牛顿迭代法:2.1定义函数f(x);2.2定义函数f的导数;2.3给定初始点x0;2.4计算f(x0)和f'(x0);2.5计算下一个点的近似值x1=x0-f(x0)/f'(x0);2.6重复步骤2.4和2.5直到满足收敛条件。
3.实现高斯消去法:3.1输入线性方程组的系数矩阵A和右端向量b;3.2构造增广矩阵[A,b];3.3进行主元素消去,得到梯形矩阵U和新的右端向量b;3.4回代求解,得到解向量x。
实验结果分析:1.二分法的主要优点是收敛稳定,但需要事先给定初始区间;2.牛顿迭代法的主要优点是收敛速度快,但需要事先给定初始点和收敛条件;3.高斯消去法的主要优点是适用于任何线性方程组,但需要事先进行主元素消去和回代的操作。
实验总结:通过本次实验,我深入理解了计算方法的基本概念和算法,并掌握了二分法、牛顿迭代法和高斯消去法的实现步骤和注意事项。
这些方法在解决实际问题中具有重要的应用价值。
实验过程中,我也遇到了一些困难和挑战,例如初始值的选择和收敛条件的判断。
通过不断的调试和优化,最终成功解决了这些问题。
本次实验不仅提高了我的编程能力,也增加了我的数学建模能力。
希望今后能够继续深入学习计算方法,并将其应用于更加复杂的实际问题中。
计算方法实验报告

1. 熟悉并掌握常用的计算方法,包括数值积分、数值微分、线性方程组求解等。
2. 培养运用计算机进行数值计算的能力。
3. 增强对数值计算误差的分析和判断能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 库:NumPy、SciPy、Matplotlib三、实验内容1. 数值积分(1)函数:f(x) = x^2(2)区间:[0, 1](3)方法:梯形法、辛普森法、复合梯形法2. 数值微分(1)函数:f(x) = e^x(2)点:x = 1(3)方法:有限差分法、中点法、牛顿法3. 线性方程组求解(1)方程组:2x + 3y - z = 8-x + 2y + 2z = -3x - y + 3z = 5(2)方法:高斯消元法、LU分解法1. 数值积分(1)编写函数f(x) = x^2(2)定义积分区间[0, 1](3)实现梯形法、辛普森法、复合梯形法(4)计算积分结果2. 数值微分(1)编写函数f(x) = e^x(2)定义点x = 1(3)实现有限差分法、中点法、牛顿法(4)计算导数结果3. 线性方程组求解(1)定义方程组系数矩阵A和常数向量b(2)实现高斯消元法、LU分解法(3)求解方程组(4)输出解向量x五、实验结果与分析1. 数值积分(1)梯形法:积分结果约为1.6667(2)辛普森法:积分结果约为1.6447(3)复合梯形法:积分结果约为1.6458分析:三种方法计算结果接近,但辛普森法误差最小。
2. 数值微分(1)有限差分法:导数结果约为2.7183(2)中点法:导数结果约为2.7183(3)牛顿法:导数结果约为2.7183分析:三种方法计算结果一致,误差较小。
3. 线性方程组求解(1)高斯消元法:解向量x = [2, 1, 1](2)LU分解法:解向量x = [2, 1, 1]分析:两种方法求解结果一致,且解向量正确。
六、实验总结本次实验通过Python编程,实现了数值积分、数值微分和线性方程组求解。
《计算方法》实验报告

《计算方法》实验报告一、实验目的本次《计算方法》实验的主要目的是通过实际操作和编程实现,深入理解和掌握常见的计算方法在解决数学问题中的应用。
通过实验,提高我们运用数学知识和计算机技术解决实际问题的能力,培养我们的逻辑思维和创新能力。
二、实验环境本次实验使用的编程语言为 Python,使用的开发工具为 PyCharm。
实验运行的操作系统为 Windows 10。
三、实验内容与步骤1、线性方程组的求解实验内容:使用高斯消元法和LU分解法求解线性方程组。
实验步骤:首先,定义线性方程组的系数矩阵和常数向量。
对于高斯消元法,通过逐步消元将系数矩阵化为上三角矩阵,然后回代求解。
对于 LU 分解法,将系数矩阵分解为下三角矩阵 L 和上三角矩阵 U,然后通过向前和向后代换求解。
2、插值与拟合实验内容:使用拉格朗日插值法、牛顿插值法进行插值计算,并使用最小二乘法进行曲线拟合。
实验步骤:对于拉格朗日插值法和牛顿插值法,根据给定的节点数据计算插值多项式。
对于最小二乘法,根据给定的数据点和拟合函数形式,计算拟合参数。
3、数值积分实验内容:使用矩形法、梯形法和辛普森法计算定积分。
实验步骤:定义被积函数和积分区间。
对于矩形法,将积分区间等分为若干小区间,每个小区间用矩形面积近似积分值。
梯形法通过构建梯形来近似积分值。
辛普森法利用抛物线来近似积分值。
4、常微分方程的数值解法实验内容:使用欧拉法和改进的欧拉法求解常微分方程。
实验步骤:给定常微分方程和初始条件。
按照欧拉法和改进的欧拉法的公式进行迭代计算,得到数值解。
四、实验结果与分析1、线性方程组的求解高斯消元法和 LU 分解法都能成功求解线性方程组,但在计算效率和数值稳定性上可能存在差异。
对于规模较大的线性方程组,LU 分解法通常更具优势。
实验中通过对比不同方法求解相同线性方程组的结果,验证了算法的正确性。
2、插值与拟合拉格朗日插值法和牛顿插值法在给定节点处能够准确插值,但对于节点之外的区域,可能会出现较大偏差。
计算方法实验报告02

end
end
y(1)=B(1);
fori=2:n
y(i)=B(i)-L(i,1:i-1)*y(1:i-1);
end
x(n)=y(n)/U(n,n);
fori=n-1:-1:1
x(i)=(y(i)-U(i,i+1:n)*x(i+1:n))/U(i,i);
fori=n-1:-1:1
x(i)=(Aug(i,n+1)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i);
end
end
x
Doolittle分解法:
clear;
A=[1 -0.40 -0.45;-0.25 0.95 -0.10;-0.35 -0.10 0.90];
B=[50000;25000;30000];
end
x
5.程序运行结果及分析:
运算结果:
x =3×1
104×
7.6930
2.9825
3.3333
结果分析:
将所求值代入原方程组,符合题意。
小结:通过这次实验,我掌握了运用MATLAB使用Gauss消元法和Doolittle分解法来解决生活中的实际问题,让我对数值计算方法有了更深的认识,锻炼了我的数值分析能力。
课程
名称
计算方法
实验项目
名称
运用Gauss消元法和Doolittle分解法解决生活中的实际问题
姓名
学号
18220000
1.实验目的:
学会使用Gauss消元法和Doolittle分解法解决生活中的实际问题。
计算方法实验二

《计算方法》实验报告实验二插值法二级学院:计算机学院专业:计算机科学与技术指导教师:爨莹班级学号:姓名:实验二插值法1、实验目的:1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。
2、了解Hermite插值法、三次样条插值法原理,结合计算公式,确定函数值。
2、实验要求:1、认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法;2、编写上机实验程序,作好上机前的准备工作;3、上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果);4、分析和解释计算结果;5、按照要求书写实验报告;3、实验内容:1、用拉格郎日插值公式确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。
2、已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式求x=0.5635时函数近似值。
3、P129,(12)4、题目:插值法5、原理:拉格朗日插值法是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法。
许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。
如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。
这样的多项式称为拉格朗日(插值)多项式。
数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。
6、设计思想:通过拉格朗日插值法找到拉格朗日多项式,计算某个x对应的y值。
7、对应程序://Lagrange.cpp#include <stdio.h>#include <conio.h>#define N 4int checkvalid(double x[], int n);void printLag (double x[], double y[], double varx, int n);double Lagrange(double x[], double y[], double varx, int n);void main (){double x[N+1] = {0.56160, 0.56280, 0.56401, 0.56521};double y[N+1] = {0.82741, 0.82659, 0.82577, 0.82459};double varx = 0.5635;if (checkvalid(x, N) == 1){printf("\n\n插值结果: P(%f)=%f\n", varx, Lagrange(x, y, varx, N));}else{printf("结点必须互异");}getch();}int checkvalid (double x[], int n){int i,j;for (i = 0; i < n; i++){for (j = i + 1; j < n+1; j++){if (x[i] == x[j])//若出现两个相同的结点,返回-1{return -1;}}}return 1;}double Lagrange (double x[], double y[], double varx, int n){double fenmu;double fenzi;double result = 0;int i,j;printf("Ln(x) =\n");for (i = 0; i < n+1; i++){fenmu = 1;for (j = 0; j < n+1; j++){if (i != j){fenmu = fenmu * (x[i] - x[j]);}}printf("\t%f", y[i] / fenmu);fenzi = 1;for (j = 0; j < n+1; j++){if (i != j){printf("*(x-%f)", x[j]);fenzi = fenzi * (varx - x[j]);}}if (i != n){printf("+\n");}result += y[i] / fenmu * fenzi;}return result;}8、实验结果:9、实验体会:拉格朗日插值法能很好的解决生产和科研中的一些问题,计算机编程的实现有利于其更好的应用。
计算方法课程实践实验报告范文

计算方法课程实践实验报告范文In this experiment, we were tasked with applying different computational methods to solve real-world problems. The experiment aimed to enhance our understanding of how these methods could be employed to tackle complex issues in various disciplines. 在这个实验中,我们的任务是应用不同的计算方法来解决现实世界中的问题。
这个实验旨在加强我们对这些方法如何在各种学科中应用来处理复杂问题的理解。
The first part of the experiment involved utilizing numerical methods to solve differential equations. We were given a set of initial conditions and parameters and asked to solve for the behavior of the system over time. This exercise provided valuable insight into the practical application of numerical methods in modeling dynamic systems. 实验的第一部分涉及利用数值方法来解决微分方程。
我们被给定了一组初始条件和参数,并被要求解出系统随时间的行为。
这个练习为模拟动态系统中数值方法的实际应用提供了宝贵的见解。
The second part of the experiment involved the application of optimization algorithms to solve a resource allocation problem. Wehad to determine the optimal distribution of resources to maximize a certain objective function while considering different constraints. This part of the experiment showcased the effectiveness of computational methods in finding optimal solutions for complex decision-making problems. 实验的第二部分涉及应用优化算法来解决资源分配问题。
计算方法实验二

计算机与信息学院计算方法实验报告专业班级学生姓名及学号课程教学班号任课教师汪荣贵实验指导教师实验地点逸夫楼5072013 ~ 2014 学年第一学期实验二 数值微积分与非线性方程求根迭代法1 实验目的(1) 熟悉复化梯形方法、复化Simpson 方法、梯形递推算法、龙贝格算法; (2) 熟悉非线性方程求根简单迭代法,牛顿迭代及牛顿下山法(3) 能编程实现复化梯形方法、复化Simpson 方法、梯形递推算法、龙贝格算法; (4) 能编程实现简单迭代法,牛顿迭代及牛顿下山法(5) 理解并掌握自适应算法和收敛加速算法的基本思想;(6) 分析实验结果体会各种方法的精确度,建立计算机求解定积分问题的感性认识 (7) 认识选择迭代格式的重要性(8) 对迭代速度建立感性的认识;分析实验结果体会初值对迭代的影响2 实验内容(1) 用龙贝格算法计算dx xx⎰1sin 输入:积分区间,误差限输出:序列Tn ,Sn,Cn,Rn 及积分结果(参考书本P81的表2-4) (2)中点加速法求1xe x =在的导数。
(3)用牛顿下山法解方程013=--x x (初值为0.6) 输入:初值,误差限,迭代最大次数,下山最大次数 输出:近似根各步下山因子3 算法基本原理在许多实际问题中,常常需要计算定积分dx x f ba ⎰)(的值。
根据微积分学基本定理,若被积函数f(x)在区间[a,b]上连续,只要能找到f(x)的一个原函数F(x),便可利用牛顿-莱布尼兹公式⎰-=ba a Fb F x f )()()(求得积分值。
但是在实际使用中,往往遇到如下困难,而不能使用牛顿-莱布尼兹公式。
(1) 找不到用初等函数表示的原函数(2) 虽然找到了原函数,但因表达式过于复杂而不便计算 (3) f(x)是由测量或计算得到的表格函数由于以上种种困难,有必要研究积分的数值计算问题。
利用插值多项式 )()(x f x P n ≈则积分dx x f ba⎰)(转化为dx x P ban ⎰)(,显然易算。
计算方法实验指导书(2014.2.27)讲解

实验一——插值方法实验学时:4实验类型:设计 实验要求:必修一 实验目的通过本次上机实习,能够进一步加深对各种插值算法的理解;学会使用用三种类型的插值函数的数学模型、基本算法,结合相应软件(如VC/VB/Delphi/Matlab/JAVA/Turbo C )编程实现数值方法的求解。
并用该软件的绘图功能来显示插值函数,使其计算结果更加直观和形象化。
二 实验内容通过程序求出插值函数的表达式是比较麻烦的,常用的方法是描出插值曲线上尽量密集的有限个采样点,并用这有限个采样点的连线,即折线,近似插值曲线。
取点越密集,所得折线就越逼近理论上的插值曲线。
本实验中将所取的点的横坐标存放于动态数组[]X n 中,通过插值方法计算得到的对应纵坐标存放于动态数组[]Y n 中。
以Visual C++.Net 2005为例。
本实验将Lagrange 插值、Newton 插值和三次样条插值实现为一个C++类CInterpolation ,并在Button 单击事件中调用该类相应函数,得出插值结果并画出图像。
CInterpolation 类为 class CInterpolation { public :CInterpolation();//构造函数CInterpolation(float *x1, float *y1, int n1);//结点横坐标、纵坐标、下标上限 ~ CInterpolation();//析构函数 ………… …………int n, N;//结点下标上限,采样点下标上限float *x, *y, *X;//分别存放结点横坐标、结点纵坐标、采样点横坐标float *p_H,*p_Alpha,*p_Beta,*p_a,*p_b,*p_c,*p_d,*p_m;//样条插值用到的公有指针,分别存放i h ,i α,i β,i a ,i b ,i c ,i d 和i m};其中,有参数的构造函数为CInterpolation(float *x1, float *y1, int n1) {//动态数组x1,y1中存放结点的横、纵坐标,n1是结点下标上限(即n1+1个结点) n=n1;N=x1[n]-x1[0]; X=new float [N+1]; x=new float [n+1]; y=new float [n+1];for (int i=0;i<=n;i++) {x[i]=x1[i]; y[i]=y1[i]; }for (int i=0;i<=N;i++) X[i]=x[0]+i; }2.1 Lagrange 插值()()nn i i i P x y l x ==∑,其中0,()nji j j n i jx x l x x x =≠-=-∏对于一个自变量x ,要求插值函数值()n P x ,首先需要计算对应的Lagrange 插值基函数值()i l x float l(float xv,int i) //求插值基函数()i l x 的值 {float t=1;for (int j=0;j<=n;j++) if (j!=i)t=t*(xv-x[j])/(x[i]-x[j]); return t; }调用函数l(float x,int i),可求出()n P xfloat p_l(float x) //求()n P x 在一个点的插值结果 {float t=0;for (int i=0;i<=n;i++) t+=y[i]*l(x,i); return t; }调用p_l(float x)可实现整个区间的插值float *Lagrange() //求整个插值区间上所有采样点的插值结果 {float *Y=new float [N+1]; for (int k=0;k<=N;k++) Y[k]=p_l(x[0]+k*h); return Y; } 2.2Newton 插值010()(,,)()nn i i i P x f x x x x ω==∑,其中101,0()(),0i i j j i x x x i ω-==⎧⎪=⎨-≠⎪⎩∏,0100,()(,,)()ik i nk k j j j kf x f x x x x x ==≠=-∑∏对于一个自变量x ,要求插值函数值()n P x ,首先需要计算出01(,,)i f x x x 和()i x ωfloat *f() {//该函数的返回值是一个长度为n +1的动态数组,存放各阶差商 }float w(float x, int i) {//该函数计算()i x ω }在求()n P x 的函数中调用*f()得到各阶差商,然后在循环中调用w(float x)可得出插值结果 float p_n(float x) {//该函数计算()n P x 在一点的值 }调用p_n(float x)可实现整个区间的插值 float *Newton() {//该函数计算出插值区间内所有点的值 }2.3 三次样条插值三次样条插值程序可分为以下四步编写: (1) 计算结点间的步长i hi 、i α、i β;(2) 利用i hi 、i α、i β产生三对角方程组的系数矩阵和常数向量; (3) 通过求解三对角方程组,得出中间结点的导数i m ; (4) 对自变量x ,在对应区间1[,]i i x x +上,使用Hermite 插值; (5)调用上述函数,实现样条插值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算方法》课内实验报告
学生姓名:张靖2012309010111
及学号:
学院:理学院
班级:信计121
课程名称:计算方法
实验题目:插值法与函数逼近
指导教师
周硕教授
姓名及职称:
朱振菊实验师
2014年11月03日
目录
一、实验题目 (1)
二、实验目的 (1)
三、实验内容 (1)
四、实验结果 (2)
五、实验体会或遇到问题 (8)
一、实验题目
1.熟悉matlab 编写及运行数值计算程序的方法。
2.进一步理解数值积分的基础理论。
3.进一步掌握应用不同的数值积分方法求解给定的积分并给出数据结果及误差分析。
二、实验目的
1.熟悉matlab 编写及运行数值计算程序的方法。
2.进一步理解插值法及函数逼近方法的理论基础。
3.进一步掌握给定数据后应用插值法及函数逼近方法进行数据处理并给出图示结果的实际操作过程。
三、实验内容
1.分别用复合梯形求积公式及复合辛普森求积公式计算积分xdx x ln 1
⎰
,要求计
算精度达到410-,给出计算结果并比较两种方法的计算节点数. 2.用龙贝格求积方法计算积分dx x x ⎰+3
021,使误差不超过510-.
3.用3=n 的高斯-勒让德公式计算积分⎰3
1
sin x e x ,给出计算结果.
4.用辛普森公式 (取2==M N ) 计算二重积分.5
.00
5
.00
dydx e x y ⎰
⎰
-
四、 实验结果
1.问题1:
计算结果如下表
表1问题1求解表
复合梯形求积公式:取12
10-,
n=,n为迭代次数,当迭代12次后,精度达到4 n-;
节点数为21=4095
复合辛普森求积公式:取10000
10-,节点数为
n=,n为区间数,取精度为4
n+=。
110001
2.问题2:
计算结果如下表
表2问题2求解表
龙贝格数值积分:给定被积函数0,被积上限3,精度为5
10-,龙贝格积分表中行的最大数目13,计算出龙贝格数值积分近似解为10.20759362。
3.问题3:
计算结果如下表
表3问题3求解表
高斯-勒让德积分公式:取3n = ,节点横坐标k x 取,n k A 取
585
999
,,,2n 阶导数e sin x x -,求得高斯-勒让德积分近似解为10.94840256。
4.问题4:
计算结果如下表
表4 问题4求解表
复合辛普森公式(计算二重积分):确定矩形域
(){}xy ,|00.5,00.5D x y x y =≤≤≤≤,求得复合辛普森公式的近似解为0.25525193。
五、实验体会或遇到问题
通过Matlab 程序可以更为简单的运用上课所学到的,数值积分。
附录
问题1:
experiment2_1.m:
clc;clear;
%复合梯形求积公式
[T,x1]=rctrap(@fun,eps,1,12);
%T近似值,x1节点12(迭代次数)
syms t;
fi=int(sqrt(t)*log(t),t,0,1);
Fs= double(fi);%精确值
wT= double(abs(fi-T));%相对误差
%复合辛普森求积公式
Q =comsimpson (@fun,eps,1,10000);
fi=int(sqrt(t)*log(t),t,0,1);
Fs= double(fi);%精确解
wQ= double(abs(fi-Q));%绝对误差
Fs%精确解
T(length(T))%复合梯形求积公式近似解
Q %复合辛普森公式求积公式近似解
rctrap.m:
function [T,xx]=rctrap(fun,a,b,m)
n=1;h=b-a;
T=zeros(1,m+1);
T(1)=h*(feval(fun,a)+feval(fun,b))/2;
xx=[];
for i=1:m
h=h/2; n=2*n; s=0;
for k=1:n/2
x=a+h*(2*k-1);
s=s+feval(fun,x);
xx=[xx,x];
end
T(i+1)=T(i)/2+h*s;
end
T=T(1:m);
fun.m:
function y=fun(x)
y=sqrt(x)*log(x);%第1题函数
end
问题2
experiment2_2.m:
clc;clear;
F=inline('x*sqrt(1+x.^2)');
[RT,R,err,h]=romberg(F,0,3,1.e-5,13);
%RT,龙贝格积分表;R,近似值;err,误差估计;h,最小步长syms x ;
fi=int(x*sqrt(1+x.^2),x,0,3);
Fs=double(fi);%精确值
wR=double(abs(fi-R));%绝对误差
wR1= wR - err;
Fs%精确解
R%龙贝格积分近似解
romberg.m:
function [RT,R,wugu,h]=romberg(fun,a,b, wucha,m) n=1;h=b-a; wugu=1; x=a;k=0; RT=zeros(4,4);
RT(1,1)=h*(feval(fun,a)+feval(fun,b))/2;
while((wugu>wucha)&(k<m)|(k<4))
k=k+1; h=h/2; s=0;
for j=1:n
x=a+h*(2*j-1); s=s+feval(fun,x); end
RT(k+1,1)= RT(k,1)/2+h*s; n=2*n;
for i=1:k
RT(k+1,i+1)=((4^i)*RT(k+1,i)-RT(k,i))/(4^i-1); end
wugu=abs(RT(k+1,k)-RT(k+1,k+1));
end
R=RT(k+1,k+1);
问题3
experiment2_3.m:
clc;clear;
%n=3
X=[-sqrt(3/5),0,sqrt(3/5)];%节点
A=[5/9,8/9,5/9];%系数
a=1;b=3;
x=a:0.00001:b;
%计算得2n阶导数
fun2n=-exp(x).*sin(x);
[GL,Y,Rn]=Gauss (@fun,a,b,X,A,fun2n);
%GL,结果值;Rn截断误差
syms t
fi=int(exp(t).*sin(t),t,a,b);
Fs=double(fi);%精确解
wGL=double(abs(fi-GL));%绝对误差
Fs%精确解
GL%高斯-勒让德近似解
Gauss.m:
function [GL,Y,Rn]=Gauss (fun,a,b,X,A,fun2n)
n=length(X); n2=n*2; T=zeros(1,n);
T=((a+b)/2)+((b-a)/2)*X;
Y=feval(fun,T); GL=((b-a)/2)*sum(A.*Y);
sun=1; su2n=1; su2n1=1; wome=1;
syms x
for k=1:n
wome=wome*(x-X(k));
end
wome2= wome^2;Fr=int(wome2,x,-1,1);
for k=1:n2
su2n=su2n*k;
end
mfun2n =max(fun2n); Rn = Fr*mfun2n/su2n; fun.m:
function y=fun(x)
y=exp(x).*sin(x);%第3题函数
end
问题4
exeriment2_4.m:
clc;clear;
Q=dblquad(@fun,0,0.5,0,0.5)
fun.m:
function f=fun(x,y)
f=exp(y-x);%第4题
end。