西安交通大学计算方法A实验报告

合集下载

计算方法实验报告

计算方法实验报告

计算方法实验报告计算方法实验报告概述:计算方法是一门研究如何用计算机解决数学问题的学科。

在本次实验中,我们将学习和应用几种常见的计算方法,包括数值逼近、插值、数值积分和常微分方程求解。

通过实验,我们将深入了解这些方法的原理、应用场景以及其在计算机科学和工程领域的重要性。

数值逼近:数值逼近是一种通过使用近似值来计算复杂函数的方法。

在实验中,我们通过使用泰勒级数展开和牛顿迭代法等数值逼近技术,来计算函数的近似值。

这些方法在科学计算和工程领域中广泛应用,例如在信号处理、图像处理和优化问题中。

插值:插值是一种通过已知数据点来估算未知数据点的方法。

在实验中,我们将学习和应用拉格朗日插值和牛顿插值等方法,以及使用这些方法来构造函数的近似曲线。

插值技术在数据分析、图像处理和计算机图形学等领域中具有重要的应用价值。

数值积分:数值积分是一种通过将函数曲线划分为小矩形或梯形来估算函数的积分值的方法。

在实验中,我们将学习和应用矩形法和梯形法等数值积分技术,以及使用这些方法来计算函数的近似积分值。

数值积分在物理学、金融学和统计学等领域中被广泛使用。

常微分方程求解:常微分方程求解是一种通过数值方法来求解微分方程的方法。

在实验中,我们将学习和应用欧拉法和龙格-库塔法等常微分方程求解技术,以及使用这些方法来求解一些常见的微分方程。

常微分方程求解在物理学、生物学和工程学等领域中具有广泛的应用。

实验结果:通过实验,我们成功地应用了数值逼近、插值、数值积分和常微分方程求解等计算方法。

我们得到了准确的结果,并且在不同的应用场景中验证了这些方法的有效性和可靠性。

这些实验结果将对我们进一步理解和应用计算方法提供重要的指导和支持。

结论:计算方法是计算机科学和工程领域中的重要学科,它提供了解决复杂数学问题的有效工具和方法。

通过本次实验,我们深入了解了数值逼近、插值、数值积分和常微分方程求解等计算方法的原理和应用。

这些方法在科学研究、工程设计和数据分析等领域中具有广泛的应用价值。

计算方法上机报告_董晓壮

计算方法上机报告_董晓壮

计算方法A上机报告学院(系):电气工程学院学生姓名:陶然学号:授课老师:完成日期:2019年12月03日西安交通大学Xi'an Jiaotong University目录1 QR分解法求解线性方程组 (2)1.1 算法原理 (2)1.1.1 基于吉文斯变换的QR分解 (2)1.1.2 基于豪斯霍尔德变换的QR分解 (3)1.2 程序流程图 (4)1.2.1 基于吉文斯变换的QR分解流程图 (4)1.2.2 基于豪斯霍尔德变换的QR分解流程图 (5)1.3 程序使用说明 (5)1.3.1 基于吉文斯变换的QR分解程序说明 (5)1.3.2 基于豪斯霍尔德变换的QR分解程序说明 (7)1.4 算例计算结果 (8)2 共轭梯度法求解线性方程组 (10)2.1 算法原理 (10)2.2 程序流程图 (10)2.3 程序使用说明 (11)2.4 算例计算结果 (12)3 三次样条插值 (14)3.1 算法原理 (14)3.2 程序流程图 (16)3.3 程序使用说明 (17)3.4 算例计算结果 (19)4 龙贝格积分 (21)4.1 算法原理 (21)4.2 程序流程图 (22)4.3 程序使用说明 (23)4.4 算例计算结果 (24)结论 (26)1 QR 分解法求解线性方程组1.1 算法原理矩阵的QR 分解是指,可以将矩阵A 分解为一个正交矩阵Q 和一个上三角矩阵R 的乘积,实际中,QR 分解经常被用来解决线性最小二乘问题,分解情况如图1.1所示。

=⨯图1.1 QR 分解示意图本次上机学习主要进行了两个最基本的正交变换—吉文斯(Givens )变换和豪斯霍尔德(Householder )变换,并由此导出矩阵的QR 分解以及求解线性方程组的的方法。

1.1.1 基于吉文斯变换的QR 分解吉文斯矩阵也称初等旋转阵,如式(1.1)所示,它把n 阶单位矩阵I 的第,i j 行的对角元改为c ,将第i 行第j 列的元素改为s ,第j 行第i 列的元素改为s −后形成的矩阵。

《计算方法》实验报告材料

《计算方法》实验报告材料

《计算方法》实验报告材料引言:计算方法是一门应用数学的基础课程,通过实验教学,能够帮助学生更好地理解和掌握各种数值计算的方法和技巧。

本次实验旨在通过编程实现一些常用的数值计算方法,并通过对比分析实验结果,验证方法的有效性和可行性。

实验一:插值算法插值算法是利用已知的数据点,构建一个连续函数以逼近数据的方法。

本次实验中使用的插值算法为拉格朗日插值和牛顿插值。

通过编程实现这两种算法,并选取若干个数据点进行测试,得到插值函数的结果。

通过比较原始数据和插值函数的结果,可以验证插值算法的准确性和可行性。

实验二:方程求解方程求解是数值计算中的一个重要问题,求解非线性方程、线性方程组和特征值问题等都需要采用相应的迭代方法。

本次实验中,我们实现了常用的牛顿迭代法和二分法,并选择数学问题进行求解。

通过比较实验结果和理论值的误差,可以验证求解方法的精确性和可行性。

实验三:数值积分数值积分是利用数值方法对定积分进行近似求解的过程。

本次实验中,我们实现了矩形法、梯形法和辛普森法等常用的数值积分方法,并选取若干函数进行数值积分的计算。

通过比较数值积分的结果和解析解或数值解的误差,可以验证数值积分方法的准确性和可行性。

实验四:常微分方程求解常微分方程求解是数值计算中的一个重要问题,常常涉及到物理、化学、生物等科学领域。

本次实验中,我们实现了欧拉方法和龙格-库塔方法等常用的常微分方程求解算法,并选取若干常微分方程进行求解。

通过比较数值解和解析解或数值解的误差,可以验证常微分方程求解方法的精确性和可行性。

实验五:线性方程组求解线性方程组求解是数值计算中的一个重要问题,常常涉及到矩阵的运算和迭代方法。

本次实验中,我们实现了高斯消元法和追赶法等常用的线性方程组求解算法,并选择一些矩阵进行求解。

通过比较数值解和解析解或数值解的误差,可以验证线性方程组求解方法的精确性和可行性。

结论:通过本次实验,我们掌握了插值算法、方程求解、数值积分、常微分方程求解和线性方程组求解等常用的计算方法。

西安交通大学计算机组成原理实验报告

西安交通大学计算机组成原理实验报告

西安交通大学计算机组成原理实验报告姓名:***班级:物联网**学号:实验一存储器的访问与实现一、实验目的1、理解计算机主存储器的分类及作用;2、掌握ROM、RAM的读写方法。

二、实验原理存储器按存取方式分,可分为随机存储器和顺序存储器。

如果存储器中的任何存储单元的内容都可随机存取,称为随机存储器,计算机中的主存储器都是随机存储器。

如果存储器只能按某种顺序存取,则称为顺序存储器,磁带是顺序存储器,磁盘是半顺序存储器,它们的特点是存储容量大,存取速度慢,一般作为外部存储器使用。

如果按存储器的读写功能分,有些存储器的内容是固定不变的,即只能读出不能写入,这种存储器称为只读存储器(ROM);既能读出又能写入的存储器,称为随机读写存储器(RAM)。

实际上真正的ROM基本上不用了,用的是光可擦除可编程的ROM(EPROM)和电可擦除可编程的ROM(EEPROM)。

EEPROM用的越来越多,有取代EPROM之势,比如容量很大的闪存(FLASH)现在用的就很广泛,常说的U盘就是用FLASH做的。

按信息的可保存性分,存储器可分为非永久性记忆存储器和永久性记忆存储器。

ROM、EPROM、EEPROM都是永久记忆存储器,它们断电后存储内容可保存。

RAM则是非永久性记忆存储器,断电后存储器中存储的内容丢失。

随机读写存储器类型随机存储器按其元件的类型来分,有双极存储器和MOS存储器两类。

在存取速度和价格两方面,双极存储器比MOS存储器高,故双极存储器主要用于高速的小容量存储体系。

在MOS存储器中,根据存储信息机构的原理不同,又分为静态随机存储器(SRAM)和动态随机存储器(DRAM)。

静态随机存储器采用双稳态触发器来保存信息,只要不断电,信息就不会丢失;动态随机存储器利用记忆电容来保存信息,使用时只有不断地给电容充电才能使信息保持。

静态随机存储器的集成度较低,功耗也较大;动态随机存储器的集成度较高,功耗低。

现在计算机中,内存容量较大,常由动态随机存储器构成。

西安交通大学算法上机实验报告

西安交通大学算法上机实验报告

《计算机算法设计与分析》上机实验报告姓名:班级:学号:日期:2016年12月23日算法实现题3-14 最少费用购物问题★问题描述:商店中每种商品都有标价。

例如,一朵花的价格是2元,一个花瓶的价格是5元。

为了吸引顾客,商店提供了一组优惠商品价。

优惠商品是把一种或多种商品分成一组,并降价销售。

例如,3朵花的价格不是6元而是5元。

2个花瓶加1朵花的优惠价格是10元。

试设计一个算法,计算出某一顾客所购商品应付的最少费用。

★算法设计:对于给定欲购商品的价格和数量,以及优惠价格,计算所购商品应付的最少费用。

★数据输入:由文件input.txt提供欲购商品数据。

文件的第1行中有1个整数B(0≤B≤5),表示所购商品种类数。

在接下来的B行中,每行有3个数C,K和P。

C表示商品的编码(每种商品有唯一编码),1≤C≤999;K表示购买该种商品总数,1≤K≤5;P是该种商品的正常单价(每件商品的价格),1≤P≤999。

请注意,一次最多可购买5*5=25件商品。

由文件offer.txt提供优惠商品价数据。

文件的第1行中有1个整数S(0≤S≤99),表示共有S种优惠商品组合。

接下来的S行,每行的第1个数描述优惠商品组合中商品的种类数j。

接着是j个数字对(C,K),其中C是商品编码,1≤C≤999;K表示该种商品在此组合中的数量,1≤K≤5。

每行最后一个数字P (1≤P≤9999)表示此商品组合的优惠价。

★结果输出:将计算出的所购商品应付的最少费用输出到文件output.txt。

输入文件示例输出文件示例Input.txt offer.txt output.txt2 2 147 3 2 1 7 3 58 2 5 2 7 1 8 2 10解:设cost(a,b,c,d,e)表示购买商品组合(a,b,c,d,e)需要的最少费用。

A[k],B[k],C[k],D[k],E[k]表示第k种优惠方案的商品组合。

offer (m)是第m种优惠方案的价格。

西安交大计算方法上机报告

西安交大计算方法上机报告

从而得到计算的公式:
j 1, 2,..., n 1 j 1 j l i1 i 2,3,..., n i1 11 i 1 lik ukj j i , i 1,..., n, i 2,3,.., n ij ij k 1 i 1 1 l ( lkt ti ) k i 1,..., n, i 2,3,.., n ki ki t 1 ii
计算方法 上机实习题目报告
班级:材料 s3076 班 姓名:丁明帅 学号:3113305029
1:计算 S
100000

k 1
1 ,要求误差小于 106 ,给出实现算法。 k2
【实现思路】
设当 k 值为 i 时 S-Si<10-6,则只需要
S Si

100000 1
k i
1
2
1 l32 ln 2 1 ln 3 1
4 / 46
12 22
1n 2 n

nn
因此有
1 j 2 j 0 jj 0 0
ij li1
li 2
li ,i -1
根据定义知道 L 矩阵的斜对角线上的值都为 1,且 L 矩阵的第一行与原矩阵 A 的第一行 相同,因此可以根据公式先计算 U 的第一行,然后计算 L 的第一列;以后的第 i 步先计算 U 的第 i 行, 然后计算 L 的第 i 列 (U 的第 n 行不作计算) 。 然后把最后的 U 的第 n 行计算出来。
【算法依据】
列主元高斯消元法的过程可以将方程组系数简化为系数矩阵与 b 矩阵, 从而利用方程组 对系数扩展矩阵进行消元。 在消元的过程中矩阵的行向量之间可以变换, 但列向量不能变化。 在进行压缩矩阵的求解中还需要人为的将因调整行向量所导致的列向量的变化调整回来。 Matlab 对于矩阵的处理非常容易,结合 for 循环语句可以实验本题大规模方程组的求解。

西安交通大学计算方法A上机作业

西安交通大学计算方法A上机作业

计算方法(A)大作业姓名:班级:专业:学号:共轭梯度法一、算法原理共轭梯度法是把求解线性方程组的问题转化为求解一个与之等价的二次函数极小化的问题,因此从任意给定的初始点出发,沿一组关于矩阵A的共轭方向进行线性搜索,在无舍入无差的假定下,最多迭代n(其中n为矩阵A的阶数)次就可求得二次函数的极小点,也就求得了线性方程组Ax=B的解。

下述定理给出了求系数矩阵A是对称正定矩阵的线性方程组Ax=b的解与求二次函数f(x)=12x T Ax−b T x极小点的等价性。

定理3.4.1设A是n阶对称正定矩阵,则x∗是方程组Ax=b的解的充分必要条件是x∗是二次函数f(x)=12x T Ax−b T x的极小点,即Ax∗=b⟺f(x∗)=minx∈R nf(x)证明:充分性.设x∗是f(x)的极小点,则由无约束最优化问题最优解的必要条件知∇f(x∗)=Ax∗−b即x∗是方程组Ax=b的解。

必要性. 若x∗是方程组Ax=b的解,即A x∗=b,注意到A是对称正定矩阵,故∀x∈R n有f(x)−f(x∗)=12x T Ax−b T x−12x T Ax∗+b T x∗=12(x T Ax−2b T x+x∗T Ax∗)−x∗T Ax∗+b T x∗=12(x T Ax−2(Ax∗)T x+x∗T Ax∗)−(Ax∗−b)T x∗=12(x−x∗)T A(x−x∗)≥0即x∗是f(x)的极小点,进而由A是正定矩阵知,x∗是f(x)的最小点。

证毕。

共轭梯度法在形式上具有迭代法的特征,在给定初始值情况下,根据迭代公式:x(k+1)=x(k)+αk d(k)产生的迭代序列x(1),x(2),x(3)…在无舍入误差假定下,最多经过n次迭代,就可求得f(x) 的最小值,也就是方程Ax=b的解。

共轭梯度法中关键的两点是,确定迭代格式中的搜索向量d(k)和最佳步长αk (αk≥0)。

实际上,搜索方向d(k)是关于矩阵A的共轭向量,在迭代中逐步构造之。

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

《计算方法》课内实验报告(实验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。

西安交大数学实验报告

西安交大数学实验报告

数学实验报告题目:四种特殊自然数编程作者:学号:班级:1.题目:四种特殊自然数编程,计算出所有的水仙花数,完美数,亲和数,回文数。

2.环境:Windows系统PC MATLAB软件3.问题分析1)水仙花数:若一个自然数的各位数字的立方和等于该数本身,则称该自然数为水仙花数。

由水仙花数的定义可知,首先要将一个三位数的百位,十位,个位三个数字分离出来,同时用for-end循环语句对自然数赋值,然后将三个数字分别赋值给三个变量(如a,b,c),用if条件语句选出符合水仙花数定义的自然数即可。

2)完美数:对于一个自然数而言,若它的真因子之和小于数本身,则称该数为盈数,若它的真因子之和大于数本身,则称该数为亏数,若它的真因子之和等于数本身,则称该数为完美数(完全数)。

(它的两个特点:它可以写成若干连续自然数之和;它的全部因数的倒数和都是2)首先考虑到要输出一系列满足条件的自然数,可以使用for-end循环语句,在一定范围内(在此我们考虑2~10000内的自然数)对每一个自然数进行完美数的验证,可以赋值i=2:1:10000,然后就要找出每一个自然数的所有真因子,在此又需要用for-end语句找出一个自然数的所有真因子,分离出真因子并赋值给一个变量如b,最后将所有真因子的和与该自然数比较,此时需要if条件语句,筛选出符合条件的自然数后输出即可。

3)亲和数:亲和数又叫友好数,是指两个自然数,其中每个自然数的真因子数之和等于另一个数。

例如:220与284就是一对亲和数。

类比完美数,亲和数同样需要求出一个自然数的所有真因子,在此需求出两个自然数的所有真因子对应的和,然后比较。

首先需要使用for-end循环语句,while-end循环语句以及if-end条件语句求出一定范围内(在此以2~10000为例)每一个自然数的所有真因子,然后用赋值语句赋值多个变量,利用这些变量以及if-end 条件语句选择符合条件的自然数组即可。

计算方法实验报告

计算方法实验报告

计算方法实验报告实验目的: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编程,实现了数值积分、数值微分和线性方程组求解。

计算方法实验报告01

计算方法实验报告01

y13=polyval(p3,t)
y14=polyval(p4,t)
r1=sum((y1-y11).^2)
r2=sum((y2-y12).^2)
r3=sum((y1-y13).^2)
r4=sum((y2-y14).^2)
plot(t,y11,'r',t,y12,'b')
plot(t,y13,'r',t,y14,'b')
4. 程序运行结果及分析(输出计算结果,结果分析)
分别画出t与浓度c的散点图(上图代表甲,下图代表乙):
分别画出t与浓度的对数y(t)=ln c(t)的散点图(上图代表甲,下图代表乙)
进行一次多项式拟合得:
y1(t)=−0.2319t+2.9795
y2(t)=−0.1278t+2.9829
进行二次多项式拟合得:
y1(t)=−0.2322t+2.9798
y2(t)=−0.1278t+2.9830
进行一次多项式拟合得到拟合曲线如图(下方代表甲,上方代表乙):
进行二次多项式拟合得到拟合曲线如图(下方代表甲,上方代表乙):
对数值结果进行分析:
进行一次多项式拟合误差平方和分别为:
r1=0.0137
r2=0.0063
进行一次多项式拟合误差平方和分别为:
r1=0.0137
r2=0.0063
经分析:
本次实验一次多项式拟合和二次多项式拟合相差不大;。

西安交通大学 计算方法上机报告

西安交通大学 计算方法上机报告

计算方法上机报告姓名:学号:班级:机械硕4002上课班级:02班说明:本次上机实验使用的编程语言是Matlab 语言,编译环境为MATLAB 7.11.0,运行平台为Windows 7。

1. 对以下和式计算:∑∞⎪⎭⎫ ⎝⎛+-+-+-+=0681581482184161n n n n S n,要求:① 若只需保留11个有效数字,该如何进行计算; ② 若要保留30个有效数字,则又将如何进行计算;(1) 算法思想1、根据精度要求估计所加的项数,可以使用后验误差估计,通项为: 142111416818485861681n n n a n n n n n ε⎛⎫=---<< ⎪+++++⎝⎭; 2、为了保证计算结果的准确性,写程序时,从后向前计算; 3、使用Matlab 时,可以使用以下函数控制位数: digits(位数)或vpa(变量,精度为数)(2)算法结构1. ;0=s⎪⎭⎫⎝⎛+-+-+-+=681581482184161n n n n t n; 2. for 0,1,2,,n i =⋅⋅⋅ if 10m t -≤end;3. for ,1,2,,0n i i i =--⋅⋅⋅;s s t =+(3)Matlab源程序clear; %清除工作空间变量clc; %清除命令窗口命令m=input('请输入有效数字的位数m='); %输入有效数字的位数s=0;for n=0:50t=(1/16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6));if t<=10^(-m) %判断通项与精度的关系break;endend;fprintf('需要将n值加到n=%d\n',n-1); %需要将n值加到的数值for i=n-1:-1:0t=(1/16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6));s=s+t; %求和运算ends=vpa(s,m) %控制s的精度(4)结果与分析当保留11位有效数字时,需要将n值加到n=7,s =3.1415926536;当保留30位有效数字时,需要将n值加到n=22,s =3.14159265358979323846264338328。

《计算方法》实验报告

《计算方法》实验报告

《计算方法》实验报告一、实验目的本次《计算方法》实验的主要目的是通过实际操作和编程实现,深入理解和掌握常见的计算方法在解决数学问题中的应用。

通过实验,提高我们运用数学知识和计算机技术解决实际问题的能力,培养我们的逻辑思维和创新能力。

二、实验环境本次实验使用的编程语言为 Python,使用的开发工具为 PyCharm。

实验运行的操作系统为 Windows 10。

三、实验内容与步骤1、线性方程组的求解实验内容:使用高斯消元法和LU分解法求解线性方程组。

实验步骤:首先,定义线性方程组的系数矩阵和常数向量。

对于高斯消元法,通过逐步消元将系数矩阵化为上三角矩阵,然后回代求解。

对于 LU 分解法,将系数矩阵分解为下三角矩阵 L 和上三角矩阵 U,然后通过向前和向后代换求解。

2、插值与拟合实验内容:使用拉格朗日插值法、牛顿插值法进行插值计算,并使用最小二乘法进行曲线拟合。

实验步骤:对于拉格朗日插值法和牛顿插值法,根据给定的节点数据计算插值多项式。

对于最小二乘法,根据给定的数据点和拟合函数形式,计算拟合参数。

3、数值积分实验内容:使用矩形法、梯形法和辛普森法计算定积分。

实验步骤:定义被积函数和积分区间。

对于矩形法,将积分区间等分为若干小区间,每个小区间用矩形面积近似积分值。

梯形法通过构建梯形来近似积分值。

辛普森法利用抛物线来近似积分值。

4、常微分方程的数值解法实验内容:使用欧拉法和改进的欧拉法求解常微分方程。

实验步骤:给定常微分方程和初始条件。

按照欧拉法和改进的欧拉法的公式进行迭代计算,得到数值解。

四、实验结果与分析1、线性方程组的求解高斯消元法和 LU 分解法都能成功求解线性方程组,但在计算效率和数值稳定性上可能存在差异。

对于规模较大的线性方程组,LU 分解法通常更具优势。

实验中通过对比不同方法求解相同线性方程组的结果,验证了算法的正确性。

2、插值与拟合拉格朗日插值法和牛顿插值法在给定节点处能够准确插值,但对于节点之外的区域,可能会出现较大偏差。

西安交大计算方法

西安交大计算方法

西安交通大学计算方法上机实验班级:(xxx)姓名:(xxx)学号:21116010041.按两种顺序计算y,哪个接近真值?Y = 1000 + + + … +用java 语言编写:public class Add {public static void main(String[] args){double s=0,y=1000;for(double a=1001.0;a<=2000.0;a++){y+=1.0/a;}for(double a=2000.0;a>=1001.0;a--){s+=1.0/a;}s=s+1000;System.out.println("正序和"+s);System.out.println("逆序和"+y);}}运行结果:结论:显然假设是double类型的数据时,先算大数的过程吃掉了末尾的小数被进位所埋没,导致了大数吃小数的误差,按从小到大(从右向左)的计算顺序所得的结果与真值相近,而按从大到小(从左到右)的计算顺序所得的结果与真值的误差较大。

1-18.设(x) = 1 + x + + + … + , 计算(-5)和1/(5),哪个接近?解法一:用JAVA 语言编写:public class second{ public static void main(String[] args){double s1=1 ,s2=1;double e=1,sum=1; //e的初值为1,sum用来存放n!int a=1;while(sum<Math.pow(10, 1000000)){sum=a*sum;e=1.0/sum+e;a++;}double b=1.0/(e*e*e*e*e);System.out.println("较为精确的值1/e^5="+b);for(int i=1;i<=24;i++){s1+=cimi1(i);s2+=cimi2(i);}s1=1.0/s1;System.out.println("1/S24(5)="+s1);System.out.println("S24(-5)="+s2);}public static double cimi1(int ai){double xi=1;for(int i=ai;i>=1;i--){xi=xi*(5.0/i);}return xi;}public static double cimi2(int ai){double xi=1;for(int i=ai;i>=1;i--){xi=xi*(-5.0/i);}return xi;}}运行结果:解法二:用matlab编程并运行,如下:(1)计算(-5)运行结果如下:(2)计算1/(5)运行结果如下:而的真是结果为0.006737946比较得1/(5)的计算结果与真实值更接近解法三:也可以用C++编写:#include "stdafx.h"#include"stdio.h"#include "iostream"using namespace std;int main(int argc, char* argv[]){ int func1(int );double func2(int);double y=0;int i;for(i=1;i<25;i++){ int z=func1(i);double e=func2(i);y+=z/e;}cout<<"----------------------------------------"<<endl;cout<<"1/S(5)的运算结果是:"<<" "<<1.0/(y+1)<<endl;cout<<"----------------------------------------"<<endl;return 0;}int func1(int x){int y=1;int k;for (k=0;k<x;k++)y*=5;return y;}double func2(int n){double y=1;int j;for (j=1;j<=n;j++)y*=j;return y;}运行结果如下图:结论:通过比较上述的几种编程结果,可以看出1/S(5),更接近真实值,而且用matlab更为简便,可以直接利用函数库,并可以轻松的嵌入秦九韶算法,大大减少运算量和时间。

西安交大数学实验报告

西安交大数学实验报告

数学实验报告作者:学号:班级:题目(一):求函数 2x 11+的积分程序:clc;clear;n=100;x=0:1/n:1;sum=0;for i=1:n;sum=sum+(1/n).*((1./(1+x(i).^2))+1./(1+x(i+1).^2))*0.5; endsum结果:结果如图所示,为0.7854程序分析:本程序运用了梯形法求函数在区间[]10 的积分,将定义域分为100分,并取其微元的值。

我们知道,函数的实际积分为为π/4,即0.7853,与所运行的结果较类似。

题目(二):用lagrange差值法求sin(49º)的近似值程序:在进行这个问题前,我们先编写一个lagrange函数文件function p=lagrange(x,y)L=length(x);A=ones(L);for j=2:LA(:,j)=A(:,j-1).*x';endX=inv(A)*y';for i=1:Lp(i)=X(L-i+1);end然后将数据导入clc;clear;x=[40 45 50 55 60];y=[0.64278 0.70710 0.76604 0.81915 0.86602];p=lagrange(x,y);t=49;u=polyval(p,t);u程序分析:由计算器可以算得sin(49º)的值为0.7547,与计算结果相同。

本题通过利用lagrange插值法,对原有数据利用多项式进行拟合,同时利用所求得的曲线对数值进行预测实验反思与结论:第一次做数学实验,第一次接触MATLAB软件,第一次进行简单编程,有许多错误和茫然指出,我在不断的尝试努力中进步着。

通过这次数学实验,我基本掌握了积分算法和插值法的运算同时还有各种赋值语句。

当然还有MATLAB软件中的一些特殊符号,对实验理论课上学的一些基本操作更加熟练。

最重要的是,很好的提高了我的数学逻辑思维,以及上机动手实验操作的能力,这对我以后的学习工作有很大帮助。

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

实验一 矩阵的分解一、实验目的掌握矩阵的分解原理和一般方法,学会利用矩阵分解直接求解线性方程组。

二、实验内容求矩阵()2020=ij A α⨯的T LDL 分解与Cholesky 分解,其中,min(,),ij i i ji j i j α=⎧=⎨≠⎩。

三、问题分析1. Cholesky 分解Cholesky 分解是针对被分解矩阵为对称正定的情况给出的。

分解步骤如下:11g =1111/y b g =,1111i i g g α=2i n =;DO2j n =jj g = IF 0jj g < STOP ,JUMP TO (5)DO 1i j n =+11j ij ik kj k ij jjg g g g α-=⎛⎫- ⎪⎝⎭=∑ji ij g g =11j i ik k k i jjb g y y g -=⎛⎫- ⎪⎝⎭=∑END DOEND DO2. T LDL 分解T LDL 分解是针对Cholesky 分解中的开平方运算进行的改进。

分解步骤如下:11i i r α=,1111/i i r r r =,11y b = 1i n =DO2i n =DOj in =11i ij ij ik kj k r l r α-=⎛⎫=- ⎪⎝⎭∑/ji ij ii l r r =11i i i ik k k y b l b -=⎛⎫=- ⎪⎝⎭∑END DOEND DO四、matlab 求解分别写出TLDL 分解和Cholesky 分解的函数程序gaijinsqrt.m 和.cholesky m ,调用格式如下:1. [index,x,r]=gaijinsqrt(A,b) 参数说明:A 和b 分别是线性代数方程组Ax =b 的系数矩阵和右端向量;输出x 为解向量。

[index,x,g]=Cholesky(A,b)参数说明:A 和b 分别是线性代数方程组Ax =b 的系数矩阵和右端向量;输出x 为解向量。

然后写出主程序2homework .m 如下:%生成矩阵AA=zeros(20,20);for i=1:20for j=1:20if i~=jif i>jA(i,j)=j; else A(i,j)=i;endelse A(i,j)=i;endendendb=ones(20,1);for i=1:10b(i)=i; b(21-i)=i;end%LDLt 分解[index1,x1,r]=gaijinsqrt(A,b) %Cholesky 分解[index2,x2,g]=Cholesky(A,b)gaijinsqrt.m 和.cholesky m 见附件五、实验结果选取b=[1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1]。

实验结果如下:202011=11D ⨯⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦,20200010=10001110L ⨯⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦,2020111=111111G ⨯⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦实验二 三对角方程组Tx f =的求解一、 实验目的掌握三对角方程组Tx f =求解的原理和方法。

二、 实验内容求三对角方程组Tx f =的解,其中:1 1 0 0 012 1 0 00 13 1 00 0 14 10 0 0 1 5T ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦,()12345,,,,T x x x x x x =,()3,8,15,24,29Tf =。

三、 问题分析追赶法的算法组织如下:(1) 输入三对角矩阵T 和右端向量f ;(2) 将T 压缩为四个一维数组{}{}{}{}i i i i a b c d 、、、,将分解矩阵压缩为三个一维数组{}{}{}i i i l r y 、、(3) 对T 做Crout 分解(也可以用Doolittle 分解)导出追赶法的计算步骤如下:11111,d l b y l ==DO2i n =()11111, ,i i i i i i i i i i i ir c l l b a r y d a y -----==-=-END DO(4) 回代求解xn n x y =DO 11i n =-1i i i i x x r x +=-END DO(5) 停止,输出结果四、matlab求解zhuigan m,调用格式如下:编写追赶法的函数程序.[x,r1]=zhuigan(A,b)参数说明:A和b分别是线性代数方程组的系数矩阵和右端向量,x是求得的解向量,r1是分解矩阵。

homework3m如下:编写主程序.T=[1 1 0 0 0;1 2 1 0 0;0 1 3 1 0;0 0 1 4 1;0 0 0 1 5];f=[3;8;15;24;29];%调用函数zhuigan.m[x,r]=zhuigan(T,f);zhuigan m见附件。

函数文件.五、实验结果x 。

(1.0000 2.0000 3.0000 4.0000 5.0000)实验三 线性代数方程组的迭代求解一、 实验目的掌握线性代数方程组的迭代求解的原理和基本方法Jacobi 迭代法和Gauss Seidel -法。

二、 实验内容用Jacobi 迭代法和Gauss Seidel -迭代法求解下列方程组:1234 0.78 -0.02 -0.12 -0.140.76-0.02 0.86 -0.04 0.06 0.08-0.12 -0.04 -0.72 -0.08 1.12-0.14 0.06 -0.08 0.74 0.68x x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦ 并比较迭代次数,使误差小于310-。

三、 问题分析将原始线性代数方程组Ax b =改写为()x x ϕ=的形式,其中()x ϕ为x 的矩阵函数。

于是可以得到迭代格式:(1)()()k k x x ϕ+=,此即为Jacobi 迭代法的迭代格式。

如果在计算(1)k x+时,将已经算出的分量立即代换()k x 对应分量,则得到Gauss Seidel -迭代法的迭代格式。

1. Jacobi 迭代法的算法组织如下: (1) 给出迭代格式(1)()()k k xx ϕ+=(2) 给出迭代初始向量0x 、允许误差ε和最大迭代次数N (3) 按照迭代格式(1)()()k k xx ϕ+=进行迭代,直至达满足迭代停止条件(1)()1max k k i i i nx x ε+≤≤-<(4) 停止,输出结果2. Gauss Seidel -迭代法的算法组织如下: (1) 给出迭代格式(1)()()k k xx ϕ+=(2) 给出迭代初始向量0x 、允许误差ε和最大迭代次数N (3) 按照迭代格式(1)()()k k xx ϕ+=,并且将已经算出的分量立即代换()k x对应分量进行迭代,直至达满足迭代停止条件(1)()1max k k ii i nx x ε+≤≤-<(4) 停止,输出结果四、 matlab 求解编写Jacobi 迭代法的函数.Jacobi m 和Gauss Seidel -迭代法函数.Gauss Seidel m -,他们的调用格式如下:1、 [x,k]=jacobi(A,b,x0,N,epsilon)参数说明:A 和b 分别是线性代数方程组的系数矩阵和右端向量,x0是迭代初始向量,N 是最大迭代次数,epsilon 是迭代允许误差,x 是求得的解向量,k 是程序结束时迭代次数。

2、 [x,k]=gaosisidel(A,b,x0,N,epsilon)参数说明:A 和b 分别是线性代数方程组的系数矩阵和右端向量,x0是迭代初始向量,N 是最大迭代系数,epsilon 是迭代允许误差,x 是求得的解向量,k 是程序结束时迭代次数。

编写主程序homework3.m 如下:A=[0.78 -0.02 -0.12 -0.14;-0.02 0.86 -0.04 0.06;-0.12 -0.04 -0.72 -0.08;-0.14 0.06 -0.08 0.74]; b=[0.76;0.08;1.12;0.68]; x0=[0 0 0 0]; N=1e+3;epsilon=1e-3;%Jacobi 迭代法[x1,k1]=jacobi(A,b,x0,N,epsilon); %Gauss-Sidel 迭代法[x2,k2]=gaosisidel(A,b,x0,N,epsilon);五、 实验结果1(0.8570 -0.0326 -1.7953 0.8896) , =6x k = 2(0.8569 -0.0326 -1.7954 0.8896) , 4x k ==实验四 多项式插值一、实验目的掌握多项式插值的原理和基本方法。

二、实验内容已知21()(11)125f x x x =-≤≤+,对5,10,20n =1、 计算函数()f x 在点21,(0,1,2,,)i x i i n n=-+=处的值()i f x2、 求插值数据点(){},(0,1,2,,)i ix y i n =的Newton 插值多项式()n N x 和三次样条插值多项式()n S x 3、 对5,20n =,计算21,(110,9099)100k x k k =-+=和相应的函数值(),(),()k n k n k k y f x N x S x =4、 计算()()max n n kk kE N y N x =-,()()max nn k kkE S yS x =-,解释所得到结果。

三、问题分析1. Newton 插值Newton 插值多项式是实质是Lagrange 插值多项式的零次式和一次式的推广,一般形式为:()()()()()()()010201011n n n N x c c x x c x x x x c x x x x x x -=+-+--++---2. 三次样条插值在节点0121()i n n x x x x x x b -<<<<=分成的每个小区间1[,]i i x x -上利用其节点处的二次导数值(即弯矩值)进行线性插值,再在此区间上积分两次,利用节点处的函数值求得两个积分常数,从而得到三次样条函数的M 表达式。

要确定三次样条插值函数,用到()S x 的光滑性,利用三次样条函数在节点处的一阶导数连续得到i M 满足1n -个方程:112,1,2,,1i i i i i i M M M d i n μλ-+++==-其中[]111111116,1,()6,,.i i i i i i i i i i i i i i i i i i i i ih h y y y y d f x x x h h h h h h h h μλμ+--+++++--===-=-=+++三弯矩方程组只有1n -个方程,不能确定1n +未知量(0,1,2,)i M i n =。

相关文档
最新文档