数值计算实验报告2

合集下载

数值计算实验报告

数值计算实验报告

数值计算实验报告数值计算实验报告引言:数值计算是一门研究利用计算机进行数值计算的学科,它在科学研究和工程实践中具有重要的应用价值。

本实验报告旨在通过对数值计算实验的探索和分析,展示数值计算在解决实际问题中的应用和效果。

一、实验目的本次实验的主要目的是研究数值计算在求解非线性方程和数值积分中的应用。

通过实验,我们将探索不同数值计算方法的优劣,并分析其适用范围和精度。

二、实验原理1. 非线性方程求解非线性方程是指未知数与其系数之间存在非线性关系的方程。

常见的求解方法有二分法、牛顿法和割线法等。

本实验将比较不同方法在求解非线性方程时的收敛速度和计算精度。

2. 数值积分数值积分是通过将一个函数在一定区间上进行离散化,然后进行求和来近似计算定积分的方法。

本实验将使用复合梯形公式和复合辛普森公式来计算定积分,并比较两种方法的精度和计算效率。

三、实验步骤1. 非线性方程求解实验首先,我们选择一个非线性方程作为实验对象,例如:f(x) = x^3 - 2x - 5。

然后,我们使用二分法、牛顿法和割线法分别求解该方程,并记录每种方法的迭代次数和解的精度。

2. 数值积分实验我们选取一个函数作为被积函数,例如:f(x) = sin(x)。

然后,我们使用复合梯形公式和复合辛普森公式对该函数在一定区间上进行积分,并记录每种方法的计算结果和误差。

四、实验结果与分析1. 非线性方程求解结果通过实验,我们得到了使用二分法、牛顿法和割线法求解非线性方程的结果。

比较三种方法的迭代次数和解的精度,我们可以发现牛顿法收敛速度较快,但对初始值的选取较为敏感;割线法在收敛速度和精度上相对稳定;而二分法则收敛速度较慢,但对初始值的选取要求较低。

2. 数值积分结果通过实验,我们得到了使用复合梯形公式和复合辛普森公式进行数值积分的结果。

比较两种方法的计算结果和误差,我们可以发现复合辛普森公式具有更高的精度,但计算效率相对较低;而复合梯形公式计算速度较快,但精度相对较低。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告一、实验介绍本次实验是关于数值计算方法的实验,旨在通过计算机模拟的方法,实现对于数值计算方法的掌握。

本次实验主要涉及到的内容包括数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等。

二、实验内容1. 数值微积分数值微积分是通过计算机模拟的方法,实现对于微积分中的积分运算的近似求解。

本次实验中,我们将会使用梯形公式和辛普森公式对于一定区间上的函数进行积分求解,并比较不同公式的计算误差。

2. 线性方程组的求解线性方程组求解是数值计算领域中的重要内容。

本次实验中,我们将会使用高斯消元法、LU分解法等方法对于给定的线性方程组进行求解,并通过比较不同方法的计算效率和精度,进一步了解不同方法的优缺点。

3. 插值与拟合插值与拟合是数值计算中的另一个重要内容。

本次实验中,我们将会使用拉格朗日插值法和牛顿插值法对于给定的数据进行插值求解,并使用最小二乘法对于给定的函数进行拟合求解。

4. 常微分方程的数值解常微分方程的数值解是数值计算中的难点之一。

本次实验中,我们将会使用欧拉法和龙格-库塔法等方法对于给定的常微分方程进行数值解的求解,并比较不同方法的计算精度和效率。

三、实验结果通过本次实验,我们进一步加深了对于数值计算方法的理解和掌握。

在数值微积分方面,我们发现梯形公式和辛普森公式都能够有效地求解积分,但是辛普森公式的计算精度更高。

在线性方程组求解方面,我们发现LU分解法相对于高斯消元法具有更高的计算效率和更好的数值精度。

在插值与拟合方面,我们发现拉格朗日插值法和牛顿插值法都能够有效地进行插值求解,而最小二乘法则可以更好地进行函数拟合求解。

在常微分方程的数值解方面,我们发现欧拉法和龙格-库塔法都能够有效地进行数值解的求解,但是龙格-库塔法的数值精度更高。

四、实验总结本次实验通过对于数值计算方法的模拟实现,进一步加深了我们对于数值计算方法的理解和掌握。

在实验过程中,我们了解了数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等多个方面的内容,在实践中进一步明确了不同方法的特点和优缺点,并可以通过比较不同方法的计算效率和数值精度来选择合适的数值计算方法。

数值计算实验报告

数值计算实验报告

一、实验目的1. 熟悉数值计算的基本原理和方法。

2. 掌握常用数值计算方法在数学建模和科学计算中的应用。

3. 培养运用计算机进行数值计算的能力。

二、实验内容1. 矩阵运算2. 解线性方程组3. 求函数的零点4. 解微分方程三、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 库:NumPy、SciPy、Matplotlib四、实验步骤及结果1. 矩阵运算(1)实验步骤:1)导入NumPy库;2)创建一个3x3的矩阵A;3)创建一个3x1的矩阵B;4)进行矩阵乘法运算:C = A B;5)打印结果。

(2)实验结果:A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]B = [[1], [2], [3]]C = A Bprint(C) # 输出:[[14], [32], [50]]2. 解线性方程组(1)实验步骤:1)导入NumPy库;2)创建一个3x3的系数矩阵A和一个3x1的常数向量b;3)使用NumPy的线性代数模块求解线性方程组:x = np.linalg.solve(A, b);4)打印结果。

(2)实验结果:A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]b = [2, 5, 6]x = np.linalg.solve(A, b)print(x) # 输出:[0.5, 0.5, 0.5]3. 求函数的零点(1)实验步骤:1)导入NumPy库;2)定义一个待求零点的函数f(x);3)使用NumPy的根求解器求f(x)的零点:x = np.roots(f(x));4)打印结果。

(2)实验结果:def f(x):return x2 - 4x = np.roots(f(x))print(x) # 输出:[2.0, -2.0]4. 解微分方程(1)实验步骤:1)导入SciPy库;2)定义一个微分方程函数ode_f,其中包含微分方程的系数;3)创建一个OdeSolver对象,并设置微分方程的初始条件;4)使用OdeSolver对象的solve方法求解微分方程;5)打印结果。

数值分析实验报告--实验2--插值法

数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。

显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。

龙格(Runge )给出一个例子是极著名并富有启发性的。

设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。

实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。

(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。

(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。

1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。

1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。

Matlab 脚本文件为Experiment2_1_1fx.m 。

可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。

数值计算基础实验报告(3篇)

数值计算基础实验报告(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)。

山东大学数值计算实验报告2

山东大学数值计算实验报告2

山东大学计算机科学与技术学院数值计算课程实验报告2.(1)用MATLAB写出楚列斯基分解函数代码如下所示Cholesky.mfunction [ B ] = Cholesky(A )%UNTITLED2 此处显示有关此函数的摘要% 楚列斯基分解B = A;n = length(A);for k = 1:nB(k,k) = sqrt(B(k,k));for i = k+1:nB(i,k) = B(i,k)/B(k,k);endfor j = k+1:nfor i = k+1:nB(i,j) = B(i,j)-B(i,k)*B(j,k);(3)计算范数和条件数代码如下f222.mfunction [ ] = f222(n )conda1 = fanshua1*max(a)fprintf('%s\n','2范数下矩阵A的2条件数') B = A_'*A_;[v d] = eig(B);conda2 = sqrt(max(max(d)))*fanshua2fprintf('%s\n','无穷范数下矩阵A的条件数') for i = 1:nfor j = 1:nsum = sum + abs(A_(i,j));enda(i) = sum;sum = 0;endconda3 = max(a)*fanshua3endtest222.mclc,clearfprintf('%s\n','n = 2时')f222(2)fprintf('%s\n','n = 5时')f222(5)fprintf('%s\n','n = 10时')f222(10)运行结果截图如下所示3.(1)Jacobi迭代法MATLAB实现代码如下D(i,i)=A(i,i);end;L=-tril(A,-1);U=-triu(A,1);while error>=errorBound & step<maxSp x0=inv(D)*(L+U)*x0+inv(D)*b;vChain(k,:)=x0';k=k+1;error=norm(x0-fx0);fx0=x0;step=step+1;endv=x0;sN=step;可见Jacobi迭代了3次得到的解为x=[111],收敛。

数值计算方法实验报告

数值计算方法实验报告

一、实验目的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. 微分方程求解是数值计算中的难点,欧拉法、龙格-库塔法和龙格-库塔-法是常用的求解方法。

第二类边界条件三次样条插值实验报告

第二类边界条件三次样条插值实验报告

数值计算实验—实验报告2一、实验项目:第二类边界条件三次样条插值二、实验目的和要求a.通过本实验深入地理解三次样条插值多项式的基本原理b.通过数值算例更好的领会三次样条插值多项式具有较高的准确性三、实验内容1.用调试好的程序解决如下问题:点中点处的函数值,并将计算结果与sinx在相应点的数值相比较。

n=8;p1=0.4794;pn=0.9463;u=[0.6,0.8,1.0,1.2,1.4,1.6,1.8];p=7;x=[0.5,0.7,0.9,1.1,1.3,1.5,1.7,1.9];y=[0.4794,0.6442,0.7833,0.8912,0.9636,0.9975,0.9917,0.9463];for i=1:n-1h(i)=x(i+1)-x(i);enda2(1)=1;g(1)=3*(y(2)-y(1))/h(1)-p1*h(1)/2;for k=2:n-1a1(k-1)=h(k)/(h(k)+h(k-1));a2(k)=h(k-1)/(h(k)+h(k-1));g(k)=3*a2(k)*(y(k+1)-y(k))/h(k)+3*a1(k-1)*(y(k)-y(k-1))/h(k-1); enda1(n-1)=1;g(n)=3*(y(n)-y(n-1))/h(n-1)+pn * h(n-1)/2;%追赶法求三转角方程b1(1)=2;m(1)=g(1)/2;b2(1)=a2(1)/b1(1);for i=2:nb1(i)=2-a1(i-1)*b2(i-1);if(i~=n)b2(i)=a2(i)/b1(i);endm(i)=(g(i)-a1(i-1)*m(i-1))/b1(i);endfor i=n-1:-1:1m(i)=m(i)-b2(i)*m(i+1);endfor j=1:pfor i=1:nif((u(j)>=x(i))&&(u(j)<x(i+1)))k=i;break;endends(j)=0;s(j)=s(j)+(h(k)+2*(u(j)-x(k)))*(u(j)-x(k+1))^2*y(k)/(h(k))^3;s(j)=s(j)+(h(k)-2*(u(j)-x(k+1)))*(u(j)-x(k))^2*y(k+1)/(h(k))^3;s(j)=s(j)+(u(j)-x(k))*(u(j)-x(k+1))^2*m(k)/(h(k))^2;s(j)=s(j)+(u(j)-x(k+1))*(u(j)-x(k))^2*m(k+1)/(h(k))^2;end(2).运行结果3. 根据Lagrange插值多项式基本原理编制程序,并计算下面的数值算例:=-5+kh,其中h=10/n,n=10,20,40.给定函数f(x)=1/(1+x^2)(-5≤x≤5),取等距节点xk边界条件为S''(x0)=f''(x0),S''(x n)=f''(x n).用上述算法计算S10(x),S20(x), S40(x),并与函数f(x)以及10次Lagrange插值多项式L10(x)在给定点处的函数值进行比较。

数值计算方法实验报告(含所有)

数值计算方法实验报告(含所有)

本科实验报告课程名称:计算机数值方法实验项目:计算机数值方法实验实验地点:虎峪校区致远楼B401专业班级:软件学院1217班学号:******xxxx 学生姓名:xxx指导教师:xxx2014 年 5 月21 日太原理工大学学生实验报告五、实验结果与分析二分法割线法分析:由程序知,使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。

相比之下,割线法程序代码量较少,精简明了。

六、讨论、心得本次数值计算方法程序设计实验从习题练习中跳脱出来,直接面对实用性较强的程序代码编写。

效果很好,不仅加深对二分法、割线法的理解,还加强了实际用运能力。

将理论知识成功地转化成实践结果。

实验地点虎峪校区致远楼B401指导教师xx太原理工大学学生实验报告l[i][k]=a[i][k];for(r=1;r<k;++r){l[i][k]-=l[i][r]*u[r][k];}l[i][k]/= u[k][k];}l[k][k]=1.0;}for(i=1;i<=n;++i){y[i] = b[i];for(j=1;j<i;++j){y[i]-=l[i][j]*y[j];}}for(i=n;i>0;--i){x[i] = y[i];for(j=i+1;j<=n;++j){x[i]-=u[i][j]*x[j];}x[i]/= u[i][i];}for(i=1;i<=n;++i){printf("%0.2lf\n",x[i]);}return 0;}五、实验结果与分析完全主元素消元法:列主元素消元法:LU分解法:分析:对于两种高斯解方程,完全主元素跟列主元素都是先消元、再回代,由程序段可以发现,始终消去对角线下方的元素。

即,为了节约内存及时效,可以不必计算出主元素下方数据。

列主元素消元法的算法设计上优于完全主元素消元法,它只需依次按列选主元素然后换行使之变到主元素位置,再进行消元即可。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告一、实验目的本实验旨在通过Python语言编写数值计算方法程序,掌握常见数值计算方法的实现原理及应用。

具体包括:插值法、最小二乘法、数值微积分、数值解方程、数值解微分方程等。

二、实验环境Python编程语言、Jupyter Notebook环境三、实验内容1.插值法(1)代码实现:在Python中使用Scipy库中的Interpolate模块实现拉格朗日插值法和牛顿插值法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义拉格朗日插值法函数;- 定义牛顿插值法函数;- 测试函数并可视化结果。

(3)实验结果:2.最小二乘法(1)代码实现:在Python中使用Numpy库实现最小二乘法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义最小二乘法函数;- 测试函数并可视化结果。

(3)实验结果:3.数值微积分(1)代码实现:在Python中实现梯形法和辛普森法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义梯形法函数和辛普森法函数;- 测试函数并可视化结果。

(3)实验结果:4.数值解方程(1)代码实现:在Python中实现二分法、牛顿法和割线法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义二分法函数、牛顿法函数和割线法函数;- 测试函数并可视化结果。

(3)实验结果:5.数值解微分方程(1)代码实现:在Python中实现欧拉法和龙格-库塔法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义欧拉法函数和龙格-库塔法函数;- 测试函数并可视化结果。

(3)实验结果:四、实验总结通过本次实验,我学习了数值计算方法的常用算法和实现原理,掌握了Python 语言实现数值计算方法的方法,加深了对数值计算方法的理解和应用。

实验中遇到的问题,我通过查找资料和与同学的讨论得到了解决,也更加熟练地掌握了Python语言的使用。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告实验目的:本次实验的目的是通过对数值计算方法的实践操作,加深对该方法的理解和掌握。

具体来说,本次实验旨在通过使用 MATLAB 软件对一些常见的数值计算问题进行求解,从而掌握和熟练运用一些数值计算方法,如插值、数值微积分、常微分方程数值解等。

实验过程:1.插值(1) Lagrange 插值法(2) Newton 插值法2.数值微积分(1) 梯形公式(2) Simpson 公式3.常微分方程数值解(1) 古典四步 Runge-Kutta 法(2) 改进四步 Runge-Kutta 法实验结果:本次实验中,我们使用 MATLAB 软件对以上数值计算问题进行了求解,成功得到了相应的数值解,并且通过分析和比较不同的数值计算方法的结果,得出了以下结论:1.在插值问题中,Lagrange 插值法和 Newton 插值法的结果相对较为接近,但是 Newton 插值法的计算速度更快。

2.在数值微积分问题中,梯形公式的结果较为精确,但是 Simpson 公式的精度更高。

3.在常微分方程数值解问题中,古典四步 Runge-Kutta 法和改进四步 Runge-Kutta 法均能得到较为准确的结果,但是改进四步Runge-Kutta 法的精度更高,尤其对于复杂的常微分方程求解有更好的效果。

实验结论:本次实验通过对数值计算方法的实践操作,深入理解了该方法的原理和运用,掌握了一些重要的数值计算方法,如插值、数值微积分、常微分方程数值解等,并且通过实验结果的分析比较,得出了相应的结论。

这些知识和技能对于我们在科研和工程实践中的数值计算问题具有非常重要的意义,具有广泛的应用前景。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告数值计算方法实验报告引言:数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。

在科学研究和工程应用中,数值计算方法被广泛应用于求解方程、优化问题、模拟仿真等领域。

本实验报告将介绍数值计算方法的基本原理和实验结果。

一、二分法求根二分法是一种通过不断折半缩小搜索区间来求解方程根的方法。

在实验中,我们选取了一个简单的方程f(x) = x^2 - 4 = 0来进行求根实验。

通过不断将搜索区间进行二分,我们可以逐步逼近方程的根。

实验结果表明,通过二分法,我们可以得到方程的根为x = 2。

二、牛顿迭代法求根牛顿迭代法是一种通过不断逼近方程根的方法。

在实验中,我们同样选取了方程f(x) = x^2 - 4 = 0进行求根实验。

牛顿迭代法的基本思想是通过对方程进行线性近似,求得近似解,并不断迭代逼近方程的根。

实验结果表明,通过牛顿迭代法,我们可以得到方程的根为x = 2。

三、高斯消元法求解线性方程组高斯消元法是一种通过变换线性方程组的系数矩阵,将其化为上三角矩阵的方法。

在实验中,我们选取了一个简单的线性方程组进行求解实验。

通过对系数矩阵进行行变换,我们可以将其化为上三角矩阵,并通过回代求解得到方程组的解。

实验结果表明,通过高斯消元法,我们可以得到线性方程组的解为x = 1,y = 2,z = 3。

四、插值与拟合插值与拟合是一种通过已知数据点来构造函数模型的方法。

在实验中,我们选取了一组数据点进行插值与拟合实验。

通过拉格朗日插值多项式和最小二乘法拟合,我们可以得到数据点之间的函数模型。

实验结果表明,通过插值与拟合,我们可以得到数据点之间的函数关系,并可以通过该函数模型来进行预测和拟合。

结论:数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。

通过本次实验,我们学习了二分法求根、牛顿迭代法求根、高斯消元法求解线性方程组以及插值与拟合的基本原理和应用。

这些方法在科学研究和工程应用中具有广泛的应用前景。

数值计算(分析)实

数值计算(分析)实

数值计算(分析)实验报告2南昌航空大学数学与信息科学学院实验报告课程名称:《数值计算方法》实验名称:曲线拟合实验类型:验证性■综合性□设计性□实验室名称:数学实验室班级学号: 09072113学生姓名:邢宪平任课教师(教师签名):成绩:一、实验目的实验目的:实验目的:了解函数逼近与曲线拟合的基本原理,并且运用MATLAB 软件进行实践操作。

二、实验原理、程序框图、程序代码等 实验题目:题目1:试分别用抛物线2y a bx cx =++和指数曲线bxy ae =拟合下列数据并比较两个拟合函数的优劣。

题目2:已知实验数据如下:试用形如2y a bx =+的抛物线进行最小二乘拟合。

实验原理:1、逼近方式 假设()[,]f x C a b ∈,2{1,,,...,}n nHspan x x x =,()nnP x H ∈,称(,)|||||()()|max n n n a x bf P F P f x P x ≤≤=-=-V 为()f x 与()|nP x 在[,]a b 上的偏差。

若存在*()nnP x H ∈,使得**(,)|||||()()|max inf n nn nn P H a x bf P f Pf x P x ∞∈≤≤=-=-V 则称*()nP x 是()f x 在[,]a b 上的最佳一致逼近多项式。

假设()[,]f x C a b ∈及[,]C a b 的一个子集01{(),(),,...()}nspan x x x ϕ=ϕϕϕ,若存在*()S x ϕ∈,使*22222()()||()()||||()()||()[()()]min min bS x S x af x S x f x S x x f x S x dxϕϕρ∈∈-=-=-⎰则称*()S x 是()f x 在子集[,]C a b ϕ⊂中的最佳平方逼近数。

2、曲线拟合上述函数的最佳平方逼近法中,若()f x 是以一组离散点集的形式给出的,即给出了函数()f x 在一些离散点上的值{(,),0,1,...,}iix y i m =,则该方法就是所说的曲线拟合。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告实验目的:本实验的目的是了解数值计算方法的基本原理和应用,掌握数值计算方法的基本步骤和算法,熟练运用数值计算方法解决实际问题。

实验内容:1. 基本数值计算方法的实现,如二分法、牛顿迭代法、弦截法等。

2. 常微分方程数值解法的实现,如欧拉法、龙格-库塔法等。

3. 常微分方程组数值解法的实现,如欧拉法、龙格-库塔法等。

4. 线性方程组数值解法的实现,如高斯消元法、LU分解法等。

5. 插值与拟合的实现,如拉格朗日插值、牛顿插值、最小二乘法等。

实验步骤:1. 根据教材或参考资料,了解数值计算方法的基本原理和应用。

2. 根据实验内容和要求,选择相应的数值计算方法,编写程序实现。

3. 运用编写的程序,解决给定的数值计算问题,分析计算结果。

4. 根据实验结果,总结数值计算方法的优缺点及应用范围。

实验要求:1. 熟练掌握数值计算方法的基本原理和应用,能够灵活运用数值计算方法解决实际问题。

2. 编写程序时,注意代码的简洁性、可读性和可维护性。

3. 实验数据要求准确,计算结果要仔细分析,结果要清晰明了地展示。

4. 实验报告要求格式规范,内容全面、准确、详细,表述清晰,思路流畅,使用正确的数学符号和术语。

结论:数值计算方法是一种重要的数学工具,在很多领域有广泛应用。

本实验通过编写程序,实现了基本数值计算方法、常微分方程数值解法、常微分方程组数值解法、线性方程组数值解法、插值与拟合等方法,通过实例计算,分析了计算结果,总结了数值计算方法的优缺点及应用范围。

此次实验提高了我们的数学计算和编程能力,对我们今后的学习和工作有很大帮助。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告一、实验目的本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。

二、实验内容1.数值微积分2.数值代数3.数值微分方程4.数值线性代数5.数值优化6.数值统计分析7.数值随机模拟8.数值傅立叶分析9.数值偏微分方程三、实验步骤1.数值微积分:通过不同的数值积分方法,计算给定函数的定积分值,并对不同数值积分方法的误差进行分析。

2.数值代数:通过使用线性代数方法,求解给定的线性方程组,并分析不同线性方程组求解方法的优劣。

3.数值微分方程:通过使用常微分方程数值解法,求解给定的微分方程,并比较不同求解方法的精度和稳定性。

4.数值线性代数:通过使用特征值分解方法,对给定的矩阵进行特征值分解,并分析不同特征值分解方法的优缺点。

5.数值优化:通过使用不同的优化方法,求解给定的优化问题,并比较不同的优化方法的效率和精度。

6.数值统计分析:通过使用不同的统计分析方法,对给定的数据进行统计分析,并分析不同的统计方法的优缺点。

7.数值随机模拟:通过使用随机模拟方法,模拟给定的概率分布,并分析不同随机模拟方法的效率和精度。

8.数值傅立叶分析:通过使用傅立叶分析方法,对给定的信号进行频谱分析,并分析不同的傅立叶分析方法的优缺点。

9.数值偏微分方程:通过使用偏微分方程数值解法,求解给定的偏微分方程,并比较不同求解方法的精度和稳定性。

四、实验结果与分析本实验中,通过对不同的数值计算方法的实验操作,我们可以更深入地理解数值计算方法的原理与应用,并掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。

同时,通过实验结果的分析,我们可以更好地比较不同数值计算方法的优缺点,为实际应用提供参考依据。

五、实验总结本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。

数值计算的实验报告

数值计算的实验报告

一、实验目的1. 熟悉数值计算的基本原理和方法。

2. 掌握常用的数值计算算法及其应用。

3. 提高数值计算软件的使用能力。

4. 培养分析问题和解决问题的能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 数值计算软件:NumPy、SciPy、Matplotlib三、实验内容1. 实验一:数值积分(1)实验目的:学习数值积分方法,计算定积分的近似值。

(2)实验内容:a. 使用辛普森法则计算函数f(x) = x^2在区间[0, 1]上的定积分。

b. 使用梯形法则计算函数f(x) = e^x在区间[0, 1]上的定积分。

(3)实验步骤:a. 编写Python代码,实现辛普森法则和梯形法则。

b. 分别使用两种方法计算定积分的近似值。

c. 对比两种方法的计算结果,分析误差来源。

2. 实验二:数值微分(1)实验目的:学习数值微分方法,计算函数在某点的导数近似值。

(2)实验内容:a. 使用中心差分法计算函数f(x) = sin(x)在x = π/2处的导数近似值。

b. 使用前向差分法和后向差分法计算函数f(x) = cos(x)在x = 0处的导数近似值。

(3)实验步骤:a. 编写Python代码,实现中心差分法、前向差分法和后向差分法。

b. 分别使用三种方法计算导数的近似值。

c. 对比三种方法的计算结果,分析误差来源。

3. 实验三:线性方程组求解(1)实验目的:学习线性方程组求解方法,掌握高斯消元法和迭代法。

(2)实验内容:a. 使用高斯消元法求解线性方程组:3x + 2y - z = 72x - y + 3z = -1-x + 2y + 2z = 4b. 使用雅可比迭代法求解线性方程组:3x + 2y - z = 72x - y + 3z = -1-x + 2y + 2z = 4(3)实验步骤:a. 编写Python代码,实现高斯消元法和雅可比迭代法。

b. 分别使用两种方法求解线性方程组。

数值计算实验报告

数值计算实验报告
cout<<"Arr=?(n+1 number needed)\n:";//按顺序输入数字,空格隔开即可
qd.get_arr();
cout<<"x=?\n:";//x=?
cin>>x;
qd.get_x(x);
cout<<"Sum="<<qd.get_sum()<<endl;
return0;
}五.实验结果及分析
运行该程序计算多项式 得
1)在 F(x) = 9.40531
2)在 F(x) = 11.27232
3) 在F(x) = 12.29693
六.实验反思
1.秦九韶算法的作用:解决了运算次数的问题,大大减少了乘法运算的次数,提高了运算效率。
2.了解了数学计算转换为计算机计算的途径,从而探究到计算机算法与数学算法的区别,,体会到计算机对数学学习的辅助作用。
{
Calc();
returnsum;
}
private:
floatn,x;
float*p;
floatsum;
voidArr_Init()//动态数组初始化
{
p=newfloat[n+1];
if(p==NULL)//检查是否分配成功
{
cout<<"Error!"<<endl;
exit(0);
}
for(inti=0;i<=n;i++)//默认赋0值
{
public:
voidget_n(float_inpt_num)
{
n=_inpt_num;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

贵州师范大学数学与计算机科学学院学生实验报告
课程名称: 数值分析 班级: 实验日期:2013年9月27日 学 号: 姓名: 指导教师:
实验成绩: 一、实验名称
实验二: Lagrange 插值与曲线拟合的最小二乘法
二、实验目的及要求
1.让学生掌握Lagrange 插值与曲线拟合的最小二乘法
2.让学生能够用这些方法解决一些实际问题
三、实验环境
每人一台计算机,要求安装Windows XP 操作系统,Microsoft office2003、MATLAB6.5(或7.0).
四、实验内容 题1: 对函数2
11
)(x x f +=
,取n+1个等距分布的插值节点,取不同的n ,作n 次Lagrange 插值,把)(x f 和插值多项式的图象绘制在同一张图上进行比较. 题2: 给定数据点
分别用一次,二次,和三次多项式曲线,以及最小二乘法拟合这些数据点,哪一种曲线拟合较好?为什么?你能找出更好的拟合曲线吗? 提示:用残差平方的大小来判断拟合的优劣,越小越好.
五、算法描述及实验步骤 针对实验1:
(1)运用Matlab 创建M 文件 (2)在命令窗口调用文件
针对实验2:
(1)运用Matlab 作出上面表中的数据的散点图 (2)分别作出一次二次三次多项式拟合曲线
(3)比较三种曲线拟合的精度即比较残差平方的大小
六、调试过程及实验结果
grange插值:
(1)命令窗口输入:
>> f=shuru(-5,5,10) (回车)
f =
Columns 1 through 6
0.0385 0.0588 0.1000 0.2000 0.5000 1.0000 Columns 7 through 11
0.5000 0.2000 0.1000 0.0588 0.0385
(2)所得结果为图形所示:
2. 曲线拟合的最小二乘法
(1)先作出该散点图的一次拟合曲线(程序如下):>> x=[-3,-1,0,1,3,5];
>> t=-4:0.01:6;
>> y=[-6,-3,-1,0,1,3];
>> subplot(1,3,1)
>> scatter(x,y,'filled','r');
>> hold on
>> p1=polyfit(x,y,1)
p1 =
1.0776 -1.8980
>> y1=polyval(p1,x);
>> y1t=polyval(p1,t);
>> plot(t,y1t,'k')
>> e1=norm(y1-y)
e1 =
1.6087
>> title('一次多项式曲线拟合','fontsize',12,'fontweight','bold','fontangle','italic')
(2)然后作出其二次拟合曲线:
>> subplot(1,3,2)
>> scatter(x,y,'filled','y');
>> hold on
>> p1=polyfit(x,y,2)
p1 =
-0.0844 1.2584 -1.4156
>> y1=polyval(p1,x);
>> y1t=polyval(p1,t);
>> plot(t,y1t,'r')
>> e1=norm(y1-y)
e1 =
0.8405
>> title('二次多项式曲线拟合','fontsize',12,'fontweight','bold','fontangle','italic')
(3)最后做出其三次拟合曲线:
>> subplot(1,3,3)
>> scatter(x,y,'filled','m');
>> hold on
>> p1=polyfit(x,y,2)
p1 =
-0.0844 1.2584 -1.4156
>> y1=polyval(p1,x);
>> y1t=polyval(p1,t);
>> plot(t,y1t,'r')
>> e1=norm(y1-y)
e1 =
0.8405
>> title('三次多项式曲线拟合','fontsize',12,'fontweight','bold','fontangle','italic')
最后的图像为:
(4)比较精确度:
因为 e1 =1.6087 < e2=0.8405 < e3 = 0.8405 所以显然三次多项式拟合曲线的精度更高
七、总结
八、附录
Lagrange.m 文件:
function f=shuru(a,b,n)
h=(b-a)/n;
x=a:h:b;
f=1./(1+x.^2);
cx=a:0.01:b;
y0=1./(1+cx.^2);
plot(cx,y0,'b--')
hold on
cy=Lagrange(x,f,n,cx');
plot(cx,cy,'g--')
legend('f(x)','Pn(x)',2)
function cy=Lagrange(x,y,n,cx)
m=length(cx);cy=zeros(m,1);
for k=1:n+1
t=ones(m,1);
for j=1:n+1
if j~=k
t=t.*(cx-x(j))./(x(k)-x(j));
end
end
cy=cy+y(k).*t;
end。

相关文档
最新文档