数值分析上机报告

合集下载

昆明理工大学数值分析上机报告3

昆明理工大学数值分析上机报告3

数值分析实验报告

(数值积分)

姓名:学号:2006231011

专业:材料学

学院:云南省新材料制备与加

工重点实验室

授课教师:

昆明理工大学

06工科硕士 《数值分析》上机实验报告

专业: 材料物化 姓名: 学号: 2006231011 任课教师: 作业完成实验室:

实验内容:

1.题目/要求:

1、 利用Lagrange 插值公式

()k n k

i i i

k i

n k n y x x x x x L ⎪⎪⎪

⎫ ⎝⎛--∑=∏

≠==00 编写出插值多项式程序; 2、 给出插值多项式或分段三次插值多项式的表达式;

3、 根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何; 对此插值问题用Newton 插值多项式其结果如何

2.作业环境(包括选用的程序语言、运行环境) Visual C++ 6.0

3.数学(理论背景)描述

1. Lagrange 插值多项式定义:若n 次多项式

上满足条件个节点在,1),1,0)((10n j x x x n n j x l ⋅⋅⋅<+⋅⋅⋅=: 当0)(1

)(=≠==k j k j x l j k x l j k 时;当时, 其中n k j ⋅⋅⋅=1,0, ,就称这1+n

个次多项式)(),(),(10x l x l x l n ⋅⋅⋅为节点n x x x ⋅⋅⋅10,上的n 次插值基函数。插值多项式可 表示为:)()(0

x l

y x L k

n

k k n ∑==,称为Lagrange 插值多项式。

2.

分段线形插值就是通过插值点用折线段连接起来逼近).(x f 设已知节点

数值计算方法上机实验报告

数值计算方法上机实验报告

数值计算方法上机实验报告

一、实验目的

本次实验的主要目的是熟悉和掌握数值计算方法,学习梯度下降法的

原理和实际应用,熟悉Python语言的编程基础知识,掌握Python语言的

基本语法。

二、设计思路

本次实验主要使用的python语言,利用python下的numpy,matplotlib这两个工具,来实现数值计算和可视化的任务。

1. 首先了解numpy的基本使用方法,学习numpy的矩阵操作,以及numpy提供的常见算法,如矩阵分解、特征值分解等。

2. 在了解numpy的基本操作后,可以学习matplotlib库中的可视化

技术,掌握如何将生成的数据以图表的形式展示出来。

3. 接下来就是要学习梯度下降法,首先了解梯度下降法的主要原理,以及具体的实际应用,用python实现梯度下降法给出的算法框架,最终

可以达到所期望的优化结果。

三、实验步骤

1. 熟悉Python语言的基本语法。

首先是熟悉Python语言的基本语法,学习如何使用Python实现变量

定义,控制语句,函数定义,类使用,以及面向对象编程的基本概念。

2. 学习numpy库的使用方法。

其次是学习numpy库的使用方法,学习如何使用numpy库构建矩阵,学习numpy库的向量,矩阵操作,以及numpy库提供的常见算法,如矩阵分解,特征值分解等。

3. 学习matplotlib库的使用方法。

数值分析上机报告

数值分析上机报告

数值分析上机实习报告

专业:土木工程

班级:

学号:

姓名:

指导老师:

联系电话:

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)

数值分析上机实验报告(插值)

数值分析上机实验报告(插值)

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

——Lagrange 插值与三次样条插值

一、 问题的描述

设()2119f x x =

+, []1,1x ∈-,取15

i

i

x =-+,0,1,2,...,10i =.试求出10次Lagrange 插值多项式()10L x 和三次样条插值函数()S x (采用自然边界条件),并用图画出()f x ,()10L x ,

()S x .

二、 方法描述——Lagrange 插值与三次样条插值

我们取15

i i

x =-+

,0,1,2,...,10i =,通过在i x 点的函数值()2119i i f x x =+来对原函数

进行插值,我们记插值函数为()g x ,要求它满足如下条件:

()()2

1

,0,1,2,...,1019i i i g x f x i x ==

=+ (1)

我们在此处要分别通过Lagrange 插值(即多项式插值)与三次样条插值的方法对原函数

()2

1

19f x x

=

+进行插值,看两种方法的插值结果,并进行结果的比较。 10次的Lagrange 插值多项式为:

()()10

100

i i i L x y l x ==∑ (2)

其中:

()2

1

,0,1,2,...,1019i i i

y f x i x ==

=+ 以及

()()()()()()()()()

011011......,0,1,2,...,10......i i n i i i i i i i n x x x x x x x x l x i x x x x x x x x -+-+----=

=----

我们根据(2)进行程序的编写,我们可以通过几个循环很容易实现函数的Lagrange 插值。

数值分析上机实验报告总结归纳

数值分析上机实验报告总结归纳

期需要得结果。改进的Newton法求解重根问题时,如果初值不当,可能会不收敛,这一点非常重要,当然初值合适,相同情况下其速度要比Newton法快得多。

实验报告二

结果分析和讨论:

采用列主元和不列主元的 Gauss 消去法求解,并比较结果。 记E max 为求出的解代入方程后的最大误差,按要求,计算结果如下:

当 10 5时,不选主元和选主元的计算结果如下,其中前一列为不选主元结果,后一列 为选主

元结果,下同。

E max =, 0

此时,由于 不是很小,机器误差就不是很大,由 E max 可以看出不选主元的计算结果精度 还可

以,因此此时可以考虑不选主元以减少计算量。

当 10 10时,不选主元和选主元的计算结果如下

E max =, 0

此时由E max 可以看出不选主元的计算精度就不好了,误差开始增大。

当 10 14时,不选主元和选主元的计算结果如下

0000000

E max =, 0

此时由E max 可以看出,不选主元的结果应该可以说是不正确了, 这是由机器误差引起的。

当 10 20时,不选主元和选主元的计算结果如下

NaN

1 NaN

2 NaN

3

E max = NaN, 0 不选主元时,程序报错:Warning: Divide by zero.。这是因为机器计算的最小精度为 10-15,

所以此时的 10 20就认为是0,故出现了错误现象。而选主元时则没有这种现象,而且由E max 可以看出选主元时的结果应该是精确解。

结论:

采用Gauss 消去法时,如果在消元时对角线上的元素始终较大(假如大于 10-5),那么本 方法不需要进行列主元计算,计算结果一般就可以达到要求,否则必须进行列主元这一步, 以 减少机器误差带来的影响,使方法得出的结果正确。

数值分析上机实验

数值分析上机实验

目录

1 绪论 (1)

2 实验题目(一) (2)

2.1 题目要求 (2)

2.2 NEWTON插值多项式 (3)

2.3 数据分析 (4)

2.3.1 NEWTON插值多项式数据分析 (4)

2.3.2 NEWTON插值多项式数据分析 (6)

2.4 问答题 (6)

2.5 总结 (7)

3 实验题目(二) (8)

3.1 题目要求 (8)

3.2 高斯-塞德尔迭代法 (8)

3.3 高斯-塞德尔改进法—松弛法 (9)

3.4 松弛法的程序设计与分析 (9)

3.4.1 算法实现 (9)

3.4.2 运算结果 (9)

3.4.3 数据分析 (11)

4 实验题目(三) (13)

4.1 题目要求 (13)

4.2 RUNGE-KUTTA 4阶算法 (13)

4.3 RUNGE-KUTTA 4阶算法运算结果及数值分析 (14)

总结 (16)

附录A (17)

1绪论

数值分析是计算数学的一个主要部分,它主要研究各类数学问题的数值解法,以及分析所用数值解法在理论上的合理性。实际工程中的数学问题非常复杂,所以往往需要借助计算机进行计算。运用数值分析解决问题的过程:分析实际问题,构建数学模型,运用数值计算方法,进行程序设计,最后上机计算求出结果。

数值分析这门学科具有面向计算机、可靠的理论分析、好的计算复杂性、数值实验、对算法进行误差分析等特点。

本学期开设了数值分析课程,该课程讲授了数值分析绪论、非线性方程的求解、线性方程组的直接接法、线性方程组的迭代法、插值法、函数逼近与曲线拟合、数值积分和数值微分、常微分方程初值问题的数值解法等内容。其为我们解决实际数学问题提供了理论基础,同时我们也发现课程中很多问题的求解必须借助计算机运算,人工计算量太大甚至无法操作。所以学好数值分析的关键是要加强上机操作,即利用计算机程序语言实现数值分析的算法。本报告就是基于此目的完成的。

数值分析上机实践报告

数值分析上机实践报告

数值分析上机实践报告

一、实验目的

本次实验主要目的是通过上机操作,加深对数值分析算法的理解,并熟悉使用Matlab进行数值计算的基本方法。在具体实验中,我们将实现三种常见的数值分析算法:二分法、牛顿法和追赶法,分别应用于解决非线性方程、方程组和线性方程组的求解问题。

二、实验原理与方法

1.二分法

二分法是一种常见的求解非线性方程的数值方法。根据函数在给定区间端点处的函数值的符号,不断缩小区间的长度,直到满足精度要求。

2.牛顿法

牛顿法是求解方程的一种迭代方法,通过构造方程的泰勒展开式进行近似求解。根据泰勒展式可以得到迭代公式,利用迭代公式不断逼近方程的解。

3.追赶法

追赶法是用于求解三对角线性方程组的一种直接求解方法。通过构造追赶矩阵,采用较为简便的向前追赶和向后追赶的方法进行计算。

本次实验中,我们选择了一组非线性方程、方程组和线性方程组进行求解。具体的实验步骤如下:

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

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

3.调用追赶法函数,通过输入追赶矩阵的三个向量与结果向量,得到

线性方程组的数值解。

三、实验结果与分析

在进行实验过程中,我们分别给定了不同的参数,通过调用相应的函

数得到了实验结果。下面是实验结果的汇总及分析。

1.非线性方程的数值解

我们通过使用二分法对非线性方程进行求解,给定了区间的上下界、

截止误差和最大迭代次数。实验结果显示,根据给定的输入,我们得到了

方程的数值解。通过与解析解进行比较,可以发现二分法得到的数值解与

谷根代数值分析--上机实习报告

谷根代数值分析--上机实习报告

《数值分析》实验报告

实验题目 非线性方程求解

专业、班级 硕电力

学号 姓名 课程编号 实验类型

验证性 学时

实验(上机)地点

完成时间 任课教师

谷根代 评分

一、实验目的及要求

1 掌握非线性方程数值解法的基本概念、方法;

2 理解二分法、牛顿法、割线法、斯蒂芬森法求解非线性方程的原理、方法、步骤,会用计算机进行编程求解;

3 掌握运用Matlab 进行数值计算的能力。

二、研究、解答以下问题

问题:分别用二分法、牛顿迭代法、割线法、斯蒂芬森迭代法求方程

26()(1)(1)0f x x x =+-=

的根1x =,观察不同初试值条件下的收敛性,并给出你的结论

【解】:

2.1 算法分析 (1) 二分法

二分法伪代码如下所示;

输入:,a b ,定义函数()f x ,给定精度ε 输出:待解方程()f x 的根x 。

()/2x a b =+

while (()0)&()f x n N ≠≤

if ()()0f a f b <

b x =

()/21;else a x end x a b n n end

==+=+

由于本题中()f x 恒大于0,不满足二分法()()0f a f b <的条件,故本例无法通过二分法求出方程的根。

(2)牛顿迭代法

牛顿迭代法迭代法迭代公式为:

1'()

()

k k k k f x x x f x +=-

a).对单根条件下,牛顿迭代法平方收敛,牛顿迭代法程序框图如下所示:

b). 对重根条件下,此时迭代公式修改为

1'()

,()

k k k k f x x x m m f x +=-⨯

为根的重数 此时,牛顿迭代法至少平方收敛。

非线性方程求解数值分析上机实验报告

非线性方程求解数值分析上机实验报告

实验报告一

题目:非线性方程求解

摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。

前言:(目的和意义)

掌握二分法与Newton法的基本原理和应用。

数学原理:

对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton 法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式

产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为

其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。

程序设计:

本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下function y=f(x);

y=-x*x-sin(x);

写成如上形式即可,下面给出主程序。

二分法源程序:

clear

%%%给定求解区间

b=1.5;

a=0;

数值分析matlab上机实验报告

数值分析matlab上机实验报告

数值分析matlab上机实验报告

matlab软件实验报告数学上机课实验报告matlab实验报告总结数值分析试卷

篇一:《MATLAB与数值分析》第一次上机实验报告

标准实验报告

(实验)课程名称

学生姓名:李培睿

学号:2013020904026

指导教师:程建

一、实验名称

《MATLAB与数值分析》第一次上机实验

二、实验目的

1. 熟练掌握矩阵的生成、加、减、乘、除、转置、行列式、逆、范数等运算操作。(用.m文件和Matlab函数编写一个对给定矩阵进行运算操作的程序)

2. 熟练掌握算术符号操作和基本运算操作,包括矩阵合并、向量合并、符号转换、展开符号表达式、符号因式分解、符号表达式的化简、代数方程的符号解析解、特征多项式、函数的反函数、函数计算器、微积分、常微分方程的符号解、符号函数的画图等。(用.m 文件编写进行符号因式分解和函数求反的程序)

3. 掌握Matlab函数的编写规范。

4、掌握Matlab常用的绘图处理操作,包括:基本平面图、图形注释命令、三维曲线和面的填充、三维等高线等。(用.m 文件编写在一个图形窗口上绘制正弦和余弦函数的图形,并给出充分的图形注释)

5. 熟练操作MATLAB软件平台,能利用M文件完成MATLAB的程序设计。

三、实验内容

1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以x,y为坐标显示图像

x(n+1) = a*x(n)-b*(y(n)-x(n) ); y(n+1) = b*x(n)+a*(y(n)-x(n) )

2. 编程实现奥运5环图,允许用户输入环的直径。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告

实验报告

插值法与数值积分实验(数值计算方法,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);

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

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

数值分析上机实验报告

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

1.用Newton 法求方程 X 7-X 4+14=0

在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据:

设函数在有限区间[a ,b]上二阶导数存在,且满足条件

{}αϕ上的惟一解在区间平方收敛于方程所生的迭代序列

迭代过程由则对任意初始近似值达到的一个中使是其中上不变号

在区间],[0)(3,2,1,0,)

(')

()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20

)()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a

b c f x f b a x f b f x f k k k k k k ==-

==∈≤-≠>+

)9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3

2

2

5

333647>⋅''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f

故以1.9为起点

⎪⎩

⎪⎨

='-

=+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码:

#include

数值分析实验

数值分析实验

解析解: y(x) x 1 x
附加题
BezΒιβλιοθήκη Baiduer曲线绘制程序设计:
要求:(1)用户输入4个点的坐标,程序根据用户 的输入绘制一条Bezier曲线 ;
(2)增加取样的点数或改变样点的坐标,绘制多 条曲线观察数据变化引起的曲线的变化。
(3)当取样点数较多时,采用分段处理的方法绘 制曲线(注意连接点处的光滑性)。
要求:
(1)选取不同的初始向量x(0),给定迭代误差要求
x(k1) x(k ) 105
用Jacobi迭代和Gauss-Seidel迭代法求解,观察 得到的序列是否收敛?若收敛,输出结果及迭 代次数;
(2)用SOR求解,ω 取1<ω<2中不同值,在
x(k1) x(k ) 105
3 2.1 6
2


x2


5.9
5

2
1 1
5 0
1
2


x3 x4

5

1

要求: 用LU分解法和Gauss列主元消元法求解 上述方程组,输出Ax=b中A及b,A=LU 中的L及U,detA及向量x;
4、研究解线性方程组Ax=b迭代法收敛速度,给 定A∈R20×20为五对角矩阵。
数值分析实验

东北大学数值分析上机实验报告

东北大学数值分析上机实验报告

《数值分析》上机实验报告课题三解线性方程组的迭代法

学生姓名:

学生系别:

学生班级:

日期:

上机实践报告

【运行环境】

软件:Windows、Microsoft Visual C++ 6.0

PC一台

【问题提出】

对课题二所列目的和意义的线性方程组,试分别选用Jacobi 迭代法,Gauss-Seidol迭代法和SOR方法计算其解。

【实践要求】

1、体会迭代法求解线性方程组,并能与消去法做比较;

2、分别对不同精度要求,如ε=10-3,10-4,10-5 由迭代次数体会

该迭代法的收敛快慢;

3、对方程组2,3使用SOR方法时,选取松弛因子 =0.8,0.9,1,

1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松

弛因子的最佳者;

4、给出各种算法的设计程序和计算结果。

【目的意义】

1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法

比较;

2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;

3、体会上机计算时,终止步骤 < 或k >(予给的迭代次数),对迭

代法敛散性的意义;

4、体会初始解 x ,松弛因子的选取,对计算结果的影响。

【程序代码】

//Jacobi.cpp

#include<iostream>

#include<cmath>

using namespace std;

#define N 15//最大迭代次数

#define P 10//矩阵的阶数

//#define P 8

static double a[10][10]={4,2,-3,-1,2,1,0,0,0,0,

数值分析上机实践

数值分析上机实践

数值分析上机实践

数值分析是一门研究数值计算方法和算法的学科,它在工程科学、自然科学和计算机科学等领域具有广泛的应用。数值分析的主要任务是根据具体问题,设计并实施一种快速、高精度的数值计算方法,以获得解决问题所需的数值结果。本文将介绍数值分析的相关内容,并结合具体案例进行上机实践。

在数值分析中,数学模型是问题求解的基础。首先,需要根据实际问题建立数学模型,并将其转化为适合计算的形式。比如,在物理领域中,常见的数学模型包括微分方程、积分方程、代数方程等。其次,需要选择适当的数值方法对模型进行离散化。离散化将数学模型中的连续变量转化为有限个离散点上的近似值,从而降低计算复杂度。常见的数值方法包括有限差分法、有限元法、拉格朗日法等。

具体的数值分析方法包括求解非线性方程、求解线性方程、插值和逼近、数值积分、求解常微分方程以及偏微分方程等。下面将以数值求解非线性方程为例进行上机实践。

非线性方程的数值求解是数值分析中的经典问题。假设我们要求解方程f(x)=0,其中f(x)是一个非线性函数。一种常用的迭代法是牛顿迭代法,其迭代公式为:

x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

其中x_n是第n次迭代的近似解,f'(x_n)是f(x)在x_n处的导数。

下面是使用Python实现牛顿迭代法求解非线性方程的代码示例:

```python

def newton_method(f, df, x0, tol, max_iter): '''

f:非线性方程f(x)=0

df: f(x)的导数

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告

一、引言

数值分析是一门研究利用计算机进行数值计算的学科。通过数值分析,我们可

以使用数学方法和算法来解决实际问题,例如求解方程、插值和逼近、数值积

分等。本次上机实验旨在通过编程实现数值计算方法,并应用于实际问题中。二、实验目的

本次实验的目的是掌握数值计算方法的基本原理和实现过程,加深对数值分析

理论的理解,并通过实际应用提高编程能力。

三、实验内容

1. 数值求解方程

首先,我们使用二分法和牛顿迭代法分别求解非线性方程的根。通过编写程序,输入方程的初始值和精度要求,计算得到方程的根,并与理论解进行对比。

2. 数值插值和逼近

接下来,我们使用拉格朗日插值和最小二乘法进行数据的插值和逼近。通过编

写程序,输入给定的数据点,计算得到插值多项式和逼近多项式,并绘制出插

值曲线和逼近曲线。

3. 数值积分

然后,我们使用梯形法和辛普森法进行定积分的数值计算。通过编写程序,输

入被积函数和积分区间,计算得到定积分的近似值,并与解析解进行比较。

四、实验步骤

1. 数值求解方程

(1)使用二分法求解非线性方程的根。根据二分法的原理,编写程序实现二分法求解方程的根。

(2)使用牛顿迭代法求解非线性方程的根。根据牛顿迭代法的原理,编写程序实现牛顿迭代法求解方程的根。

2. 数值插值和逼近

(1)使用拉格朗日插值法进行数据的插值。根据拉格朗日插值法的原理,编写程序实现数据的插值。

(2)使用最小二乘法进行数据的逼近。根据最小二乘法的原理,编写程序实现数据的逼近。

3. 数值积分

(1)使用梯形法进行定积分的数值计算。根据梯形法的原理,编写程序实现定积分的数值计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function [H,y]=holder1(x,k) n=length(x); %取向量长度 M=max(abs(x)); if k>=n, disp('k>=n'); return; %当k大于等于n转出停机 end; if M==0, disp('M=0'); return; %当M等于零转出停机 else z=x/M; %将x规范化 end; s=norm(z); %取z的二范数 if z(k)<0 s=-s; end; p=s*(s+z(k)); u=z; for i=1:k-1 u(i)=0; end; u(k)= s+z(k); H=eye(n,n)-p\u*u'; %求出Householder矩阵 y=H*x;
function[Q,A]=juzhenfenjie(A) [n,n]=size(A); %求矩(方)阵A的阶数 Q=eye(n); %构造正交矩阵Q(1)=I for k=1:n-1 [p,u]=holder2(A(k:n,k)); for jj=k:n %计算上三角阵R,仍内存与A t1=dot(u,A(k:n,jj))/p; %利用向量内积求和 A(k:n,jj)=A(k:n,jj)-t1*u; end for ii=1:n %计算正交矩阵Q t2=dot(u,Q(ii,k:n))/p; Q(ii,k:n)=Q(ii,k:n)-t2*u'; end end
5. 实例示范
> A=[2,-1,7;0,3,10;0,4,5] A = 2 -1 7 0 3 10 0 4 5 >> [Q,A]=juzhenfenjie(A) Q = -1.0000 0 0 0 -0.6000 -0.8000 0 -0.8000 0.6000 A = -2 1 -7 0 -5 -10 0 0 -5
的n阶上三角阵。 3. 变量说明: A- 输入的n阶矩阵,同时用于存储上三角阵R; n-矩(方)阵A的阶数; Q-是具有法正交列向量的n阶矩阵; p,u-向量A(k:n,k),对应初等反射阵的p,u k,jj,ii-循环变量; t1-计算上三角阵R的系数tj; t2-计算正交矩阵Q的系数ti; 4. 程序代码: (1)函数1的程序
(2) 函数2的程序
function [p,u]=holder2(x) n=length(x); %取向量的维数 p=1;u=0; M=max(abs(x)); %求向量x的无穷范数 if M==0, disp('M=0'); return; %如果x=0,终止程序 else x=x/M; %规范化 end; s=norm(x); %求x的二范数 if x(1)<0 s=-s; end; u=x; u(1)= s+x(1); %计算Householder向量u p=s*u(1); if n==1 u=0;end %若x是1*1维向量,则u=0
for i=k+1:n y(i)=0; end;
5. 实例示范: 当x=,k=2时,有 >> x=[4;5;8;6;5] x= 4 5 8 6 5 >> k=2 k= 2 >> [H,y]=holder1(x,k) H= 1.0000 0 0 0 0 0 -0.3881 -0.6209 -0.4657 0 -0.6209 0.7222 -0.2083 0 -0.4657 -0.2083 0.8438 0 -0.3881 -0.1736 -0.1302 y= 4.0000 -11.6423 0 0 0
-0.3881 -0.1736 -0.1302 0.8915
2、 设A为n阶矩阵,编写用Householder变换法对矩 阵A作正交分解的程序。
1. 程序功能: 给定n阶矩阵A,通过本程序用Householder变换法对矩阵A 作正交分解,得出A=QR。 2. 基本原理: 任一实列满值的m*n矩阵A,可以分源自文库成两个矩阵的乘积,即 A=QR,其中Q是具有法正交列向量的m*n矩阵,R是非奇异
1、 给定向量x≠0,计算Householder变换阵,使x后nk个分量化为零。
1. 程序功能: 给定向量x≠0,计算Householder变换阵,使x后n-k个分量化为 零。 2. 方法基本原理: 若x=的分量不全为零,则由Householder变换的基本公式进行编 写程序,当输入K值时要判断与n的大小比较,当在1和n之间时 才可运行程序,否则转出停机。 3. 变量说明: x-输入的n维向量 n-向量x的维数 M-向量x中绝对值最大一项的绝对值 P-Householder初等变换阵的系数 u-Householder初等变换阵的向量 s-向量x的二范数 k-要求输入的k,使得y的第k+1项到最后的项全为零 4. 程序代码
相关文档
最新文档