文档视界 最新最全的文档下载
当前位置:文档视界 › 数值分析课程设计含代码

数值分析课程设计含代码

数值分析课程设计含代码
数值分析课程设计含代码

课程设计任务书

摘要

实验方法与理论方法是推动科学技术发展的两大基本方法,但有局限性。许多研究对象,由于空间或时间的限制,既不可能用理论精确描述,也不能用实验手段实现。

数值模拟或称为科学计算突破了实验和理论科学的局限,在科技发展中起到越来越重要的作用。可以认为,科学计算已于实验、理论一起成为科学方法上不可或缺的三个主要手段。

计算数学的研究是科学计算的主要组成部分,而数值分析则是计算数学的核心。数值计算是研究使用计算机来解决各种数学问题的近似计算方法与理论,其任务是提供在计算机上可解的、理论可靠的、计算复杂性低的各种常用算法。数值分析的主要内容:

1)、数值代数:求解线性和非线性方程组的解,分直接方法和间接方法两大类;2)、插值、曲线拟合和数值逼近;

3)、数值微分和数值积分;

4)、常微分和偏微分方程数值解法。

本文主要通过Matlab软件,对数值分析中的一些问题进行求解,如列主元Gauss消去法,Lagrange插值多项式,复化Simpson公式,Runge-Kutta方法以及数值分析在实际问题中的应用,并在求解的过程中更加熟识这门课程的主要内容,以及加强对课程知识的掌握。在学习与设计计算方法时,从数学理论角度,学会分析方法的误差、收敛性和稳定性,保证计算方法的准确性;从实际应用的角度出发,掌握计算方法的结构与流程,能够把计算方法转换为可在计算机上直接处理的程序,保证算法的可用性。

关键词:列主元Gauss消去法;Lagrange插值;复化Simpson公式;Runge-Kutta

目录

实验一列主元Gauss消去法 (1)

1.1 实验目的 (1)

1.2 基本原理 (1)

1.3 实验内容 (2)

1.4 实验结论 (3)

实验二拉格朗日插值多项式 (4)

2.1 实验目的 (4)

2.2 基本原理 (4)

2.3 实验内容 (4)

2.4 实验结论 (8)

实验三复化Simpson求积公式 (9)

3.1 实验目的 (9)

3.2 基本原理 (10)

3.3 实验内容 (10)

3.4 实验结论 (12)

实验四龙格-库塔(Runge-Kutta)方法 (12)

4.1 实验目的 (12)

4.2 基本原理 (13)

4.3 实验内容 (13)

4.4 实验结论 (15)

实验五数值方法实际应用 (15)

5.1 实验目的 (15)

5.2 基本原理 (15)

5.3 实验内容 (16)

5.4 实验结论 (22)

参考文献 (22)

实验一 列主元Gauss 消去法

1.1 实验目的

1) 理解列主元消去法的原理;

2) 熟悉列主元消去法的计算步骤,能用代码编写; 3) 解决实际问题。

1.2 基本原理

在顺序Gauss 消去法中,必须要求),,2,1(0a (k )

n k kk ;否则无法进行计算。即使0)

( k kk a ,但其绝对值)(k kk

a 很小,由于舍入误差的影响,也可能会引起很大的误差,从而使上述方法失效。为了使消元过程中减小舍入误差和不至于中断,可以按照不同的自然顺序进行消元。在第k 步消元时,增广矩阵为

)()()

1(1)2(2)1(1)()()

()()1(1)1(1)1(1

1)2(2)2(2)2(12)2(22

)

1(1)

1(1)1(11)1(12)

1(11)

()

(k n

k k k k k nn k nk

k kn k kk k n k k k

k k k k n k k n

k k k k b b b b b a a a a a a a a a a a a a a a a B A

(1.1)

不一定选取)

1( k kk a 作为主元,而从同列)1()1(,1)1(,,, k nk

k k k k kk a a a 中选取绝对值最大的作为主元素,即

)

1()

1(r max k ik n

i k k k

a a (1.2) 若0)

( k rk a ,此时矩阵不可逆,方程的解不确定,则停止计算;否则,当r>k

时,则其增广矩阵中交换第k 行和第r 行,即

n k k j a k rj

k kj ,,1,a )

()( )()(k r k k b b (1.3) 使)

(k rk a 成为主元。然后再按Gauss 消去法进行消元运算。于是就得到列主元Gauss

消去法。

1.3 实验内容

1.3.1 程序来源

首先建立一个gaussMethod.m的文件,用来实现列主元的消去方法。文件内容如下:

function x=gaussMethod(A,b)

%高斯列主元消去法,要求系数矩阵非奇异的

n = size(A,1);

if abs(det(A))<= 1e-8

error('系数矩阵是奇异的'); return;

end

for k=1:n

ak = max(abs(A(k:n,k)));

index = find(A(:,k)==ak);

if length(index) == 0

index = find(A(:,k)==-ak);

end

%交换列主元

temp = A(index,:);

A(index,:) = A(k,:);

A(k,:) = temp;

temp = b(index);b(index) = b(k); b(k) = temp; %消元过程for i=k+1:n

m=A(i,k)/A(k,k); %消除列元素

A(i,k+1:n)=A(i,k+1:n)-m*A(k,k+1:n);

b(i)=b(i)-m*b(k);

end

end %回代过程

x(n)=b(n)/A(n,n);

for k=n-1:-1:1;

x(k)=(b(k)-A(k,k+1:n)*x(k+1:n)')/A(k,k);

end; end

然后调用gaussMethod 函数,来实现列主元的高斯消去法。建立一个文件gauss ,内容如下:

clear

disp('**********************************************')

x=gaussMethod(input('请输入系数矩阵:'),input('请输入常数列:')) disp('**********************************************')

1.3.2 实例分析

例:在Matlab 上,利用列主元法求线性方程组的解:

6

2332022428340213424321432143214321x x x x x x x x x x x x x x x x 解:运行程序,按照提示输入方程的系数矩阵及常数列,如下所示:

********************************************** 请输入系数矩阵:[1 2 1 4;2 0 4 3;4 2 2 1;-3 1 3 2] 请输入常数列:[13;28;20;6] x =

3 -1

4 2

********************************************** 即该方程的解为: 2,4,1,3 x

1.4 实验结论

把向量计算得到的解带入方程组,验证正确性,和其他的方法比较,列主元具有一定的简单性,比较容易实现。避免使用其他方法的误差或不能进行性。而列主元也有一定的限制,要求行列式的值不为0。

实验二 拉格朗日插值多项式

2.1 实验目的

1)熟悉简单的拉格朗日插值多项式的基本概念;

2)熟悉Lagrange 公式及源代码,会利用它来计算基本函数; 3)能构造出正确的插值多项式;

2.2 基本原理

设函数)(x f y 在区间[a,b]上有定义,且已知在点b x x x x a n 10上的值,,,,10n y y y 若存在一个次数不超过n 的多项式

n n n x a x a a x L 10)( (2.1) 使其满足

n k y x L k k n ,,1,0,)( (2.2)

则称)(x L n 为)(x f 的n 次插值多项式,称点),,1,0(x n k k 为插值节点,称条件(2.2)为插值条件。包含插值节点的区间成为插值区间。

通过平面上不同的两点可以确定一条直线经过这两点,就是拉格朗日线性插值问题,对于不在同一直线的三点得到的插值多项式为抛物线。拉格朗日是比较基础的方法,本身比较容易实现,容易理解。

给定n+1个不同节点,构造 i x x x x f ,,,,210 的n 次拉格朗日插值多项式:

n

x l y x 0

i i

i )()(L ,1,,2,1,)

()

()(1

1

n i x x

x x x l n i

j j j i

j i

(2.3)

2.3 实验内容

2.3.1 程序来源

首先建立一个Lagrange.m 的文件,用来实现Lagrange 插值。文件内容如下: %输入:x 是插值节点横坐标向量;y 是插值节点对应纵坐标向量 %输出:C 是拉格朗日插值多项式的系数矩阵;L 是插值函数系数矩阵 function[C,L]=Lagrange(x,y)

数值分析课程设计

淮海工学院计算机工程学院课程设计报告书 课程名:《数值分析》 题目:数值分析课程设计 班级: 学号: 姓名:

数值分析课程设计 课程设计要求 1、研究第一导丝盘速度y与电流周波x的关系。 2、数据拟合问题运用样条差值方法求出温度变化的拟合曲线。 课程设计目的 1、通过编程加深对三次样条插值及曲线拟合的最小二乘法的理解; 2、学习用计算机解决工程问题,主要包括数据处理与分析。 课程设计环境 visual C++ 6.0 课程设计内容 课程设计题目1: 合成纤维抽丝工段中第一导丝盘的速度对丝的质量有很大的影响,第一丝盘的速度和电流周波有重要关系。下面是一组实例数据: 其中x代表电流周波,y代表第一导丝盘的速度 课程设计题目3: 在天气预报网站上获得你家乡所在城市当天24小时温度变化的数据,认真观察分析其变化趋势,在此基础上运用样条差值方法求出温度变化的拟合曲线。然后将该函数曲线打印出来并与原来的温度变化数据形成的曲线进行比较,给出结论。写出你研究的心得体会。 课程设计步骤 1、利用最小二乘法写出题1的公式和算法; 2、利用excel表格画出数据拟合后题1的图像; 3、在Visual C++ 6.0中编写出相应的代码; 4、搜索11月12日南通当地一天的温度变化数据; 5、在Visual C++ 6.0中编写出相应的代码; 6、利用excel表格画出数据拟合后题3的图像 课程设计结果 课程设计题目1 数值拟合

解:根据所给数据,在excel窗口运行: x=[49.2 50.0 49.3 49.0 49.0 49.5 49.8 49.9 50.2 50.2] y=[16.7 17.0 16.8 16.6 16.7 16.8 16.9 17.0 17.0 17.1] 课程设计题目3 数据为:X=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]; Y=[12,12,11,12,12,12,12,12,13,15,16,17,17,18,17,17,17,16,15,15,15,15,14,14]; 源代码为: 第一题: #include #include"math.h" using namespace std; //double x[100],y[100]; int main(){ int i; double k,b; double sum1=0,sum2=0,sum3=0,sum4=0; double x[10]={49.2,50.0,49.3,49.0,49.0,49.5,49.8,49.9,50.2,50.2}; double y[10]={16.7,17.0,16.8,16.6,16.7,16.8,16.9,17.0,17.0,17.1}; for(i=0;i<10;i++){ sum1+=x[i]*y[i]; sum2+=x[i];

数值分析课程设计题目与要求

数值分析课程设计题目与要求 (10级应数及创新班) [设计题一] 编写顺序Gauss消去法和列主元Gauss消去法的函数,再分别调用这两个函数求解下面的84阶方程组: = , 然后考虑将方程组的阶数取为10至100之间多个值进行求解。将你的计算结果与方程组的精确解进行比较。从“快”、“准”、“省”三个方面分析以上两个算法,试提出改进的算法并加以实现和验证。 [设计题二] 编写平方根法和改进的平方根法(参见教材《计算方法》P54的例题2.5)的函数,然后分别调用这两个函数求解对称正定方程组Ax=b,其中A和b分别为: (1)系数矩阵A为矩阵(阶数取为10至100之间多个值): , 向量b随机地选取; (2)系数矩阵A为Hilbert矩阵(阶数取为5至40之间多个值),即A的第i行第j列元素,向量b的第i个分量取为。将你的计算结果与方程组的精确解进 行比较。 若出现问题,分析其原因,提出改进的设想并尝试实现之。

对于迭代法 ,......)2,1,0(99.021=-=+k x x x k k k , 它显然有不动点0* =x 。试设计2个数值实验 得到收敛阶数的大概数值(不利用判定收敛阶的判据定理): (1) 直接用收敛阶的定义; (2) 用最小二乘拟合的方法。 [设计题四] 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温T 看成深度x 的函数T(x),有某个湖的观测数据如下: 环境工程师希望: 1) 用三次样条插值求出T(x)。 2) 求在什么深度处dx dT 的绝对值达到最大( 即02 2=dx T d )。 [设计题五] 某飞机头部的光滑外形曲线的型值点坐标由下表给出: ...值y 及一阶、二阶导数值y ’,y ”。绘出模拟曲线的图形。

数值分析所有代码

实验一:拉格朗日插值多项式 命名(源程序.cpp及工作区.dsw):lagrange 问题: 4 //Lagrange.cpp #include #include #define N 4 int 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.4, 0.55, 0.8, 0.9, 1}; double y[N+1] = {0.41075, 0.57815, 0.88811, 1.02652, 1.17520}; double varx = 0.5; 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; } } }

数值计算课程设计任务书

数值计算课程设计任务书 学院信息与计算科学/应用数学专业班级学生: 题目:典型数值算法的C++语言程序设计 课程设计从2017 年 6 月12 日起到2017 年7月 1 日 1、课程设计的内容和要求(包括原始数据、技术要求、工作要求等): 每人需作10个算法的程序、必做6题、自选4题。 对每个算法要求用C++语言进行编程。 必选题: 1、高斯列主元法解线性方程组 2、牛顿法解非线性方程组 3、经典四阶龙格库塔法解一阶微分方程组 4、三次样条插值算法(压紧样条)用C++语言进行编程计算 依据计算结果,用Matlab画图并观察三次样条插值效果。 5、龙贝格求积分算法 6、M次多项式曲线拟合,据计算结果,用Matlab画图并观察拟合效果。 自选题:自选4道其他数值算法题目.每道题目重选次数不得超过5次. 2、对课程设计成果的要求〔包括图表、实物等硬件要求〕: 2.1 提交课程设计报告 按照算法要求,应用C++语言设计和开发算法程序,提交由: 1)每个算法的原理与公式说明; 2)每个算法相应的程序设计说明(程序中的主要变量语义说明,变量的数据类型说明,数据在内存中组织和存储结构说明,各函数的输入形参和输出形参说明,函数功能说明,函数中算法主要流程图,函数的调用方法说明); 3)每个程序使用的实例(引用的实例可以自拟,也可以借用相关数值计算参考书中的例题作为作为验证程序是否正确的实例,无论是自拟实例还是引用实例,实例都应详细写入报告的正文中); 4)每个算法的调试记录(包括程序调试(静态调试和动态调试)和程序修改记录、程序测试(可以手工计算进行测试、也可以利用Matlab的函数或

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

数值分析的MATLAB程序

列主元法 function lianzhuyuan(A,b) n=input('请输入n:') %选择阶数A=zeros(n,n); %系数矩阵A b=zeros(n,1); %矩阵b X=zeros(n,1); %解X for i=1:n for j=1:n A(i,j)=(1/(i+j-1)); %生成hilbert矩阵A end b(i,1)=sum(A(i,:)); %生成矩阵b end for i=1:n-1 j=i; top=max(abs(A(i:n,j))); %列主元 k=j; while abs(A(k,j))~=top %列主元所在行 k=k+1; end for z=1:n %交换主元所在行a1=A(i,z); A(i,z)=A(k,z); A(k,z)=a1; end a2=b(i,1); b(i,1)=b(k,1); b(k,1)=a2; for s=i+1:n %消去算法开始m=A(s,j)/A(i,j); %化简为上三角矩阵 A(s,j)=0; for p=i+1:n A(s,p)=A(s,p)-m*A(i,p); end b(s,1)=b(s,1)-m*b(i,1); end end X(n,1)=b(n,1)/A(n,n); %回代开始 for i=n-1:-1:1 s=0; %初始化s for j=i+1:n s=s+A(i,j)*X(j,1);

end X(i,1)=(b(i,1)-s)/A(i,i); end X 欧拉法 clc clear % 欧拉法 p=10; %贝塔的取值 T=10; %t取值的上限 y1=1; %y1的初值 r1=1; %y2的初值 %输入步长h的值 h=input('欧拉法please input number(h=1 0.5 0.25 0.125 0.0625):h=') ; if h>1 or h<0 break end S1=0:T/h; S2=0:T/h; S3=0:T/h; S4=0:T/h; i=1; % 迭代过程 for t=0:h:T Y=(exp(-t)); R=(1/(p-1))*exp(-t)+((p-2)/(p-1))*exp(-p*t); y=y1+h*(-y1); y1=y; r=r1+h*(y1-p*r1); r1=r; S1(i)=Y; S2(i)=R; S3(i)=y; S4(i)=r; i=i+1; end t=[0:h:T]; % 红线为解析解,'x'为数值解 plot(t,S1,'r',t,S3,'x')

偏微分方程数值解课程设计

课程设计报告 课程:偏微分方程数值解学号: 姓名: 班级: 教师:

《偏微分方程数值解》 课程设计指导书 一.课程设计的目的 1.帮助掌握偏微分方程数值解相关知识。 2.理解偏微分方程数值解差分隐格式解决自由振动方程问题的方法。 3.锻炼编写程序代码的能力。 二.设计名称 差分法求自由振动问题的周期解。 三.设计要求 1.要求写出差分隐格式的理论方法。 2.要求编写matlab 程序,画出函数图形。 3.要求写出实验总结及心得体会。 四.设计题目 用差分法求自由振动问题的周期解: 2222000,,0|0,|sin (0,)(2,)t t u u x t t x u u x t u t u t π==???-=-∞<<∞>???? ??==??? =??? 要求用差分隐格式求解,其中14 θ= 。 五.设计细则 1.区域剖分: 构造上式的差分逼近,取空间步长h 和时间步长τ,用两族平行直线 ?? ?===±±=== ,2,1,0,, ,2,1,0,n n t t j jh x x n j τ 作矩形网格。 2.离散格式: 显格式: 于网点),(n j t x 用Taylor 展式,并整理方程得: ??? ?? ??--++=+-++==-+-++-121121102 10102100 )1(2)(),()()1()]()([2),(n j n j n j n j n j j j j j j j j u u r u u r u x x r x x r u x u τ?????

隐格式: 上述显格式并不是绝对稳定的差分格式,为了得到绝对稳定的差分格式,用第1-n 层、 n 层、1+n 层的中心差商的权平均去逼近xx u ,得到下列差分格式: ? ??? ?? ???+-++--++-=+-+-++==----+-++-+++-++-]22)21(2[2), ()()1()]()([2),(2111112112111112 211102 10102100h u u u h u u u h u u u a u u u x x r x x r u x u n j n j n j n j n j n j n j n j n j n j n j n j j j j j j j j θθθττ?????其中10≤≤θ是参数。当0=θ时就是显格式,而当4 1 =θ时可以证明该格式绝对稳定。 隐格式的矩阵形式是: ??? ???????? ???????????=??????????????????????????????????????????????? ?-+-+-+-+--+-+-+++122111121121 12222 222 2222221212121J J j n J n J n j n n z z z z z u u u u u r r r r r r r r r r r r θθθθ θθθθθ θ θθ 其中: 1 111111122]2()2)(21[(-----+-+-++-++--=n j n j n j n j n j n j n j n j j u u u u u u u u r z θθ 3.格式稳定性: 1)显格式: 显格式稳定的充分必要条件是:网格比1

数值分析课程设计

课程设计报告 课程名称 课题名称 专业 班级 学号 姓名 指导教师 年月日

湖南工程学院课程设计任务书 课程名称数值分析 课题 专业班级 学生姓名 学号 指导老师 审批 任务书下达日期2009 年 5 月 4 日任务完成日期2009 年 5 月18日

一、设计内容与设计要求 1.设计内容: 对课程《计算方法》中的常见算法进行综合设计或应用(具体课题题目见后面的供选题目)。 2.设计要求: ●课程设计报告正文内容 a.问题的描述及算法设计; b.算法的流程图(要求画出模块图); c.算法的理论依据及其推导; d.相关的数值结果(通过程序调试),; e.数值计算结果的分析; f.附件(所有程序的原代码,要求对程序写出必要的注释)。 ●书写格式 a.要求用A4纸打印成册 b.正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。 c.正文的内容:正文总字数要求在3000字左右(不含程序原代码)。 d.封面格式如下页。 ●考核方式 指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分: a.平时出勤(占10%) b.系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%) c.程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%) d.设计报告(占30%) 注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。 e.独立完成情况(占10%)。 ●课程验收要求 a.判定算法设计的合理性,运行相关程序,获得正确的数值结果。

数值分析编程题c语言

上机实习题一 一、题目: 已知A 与b 12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718719,1.742382,3.067813,-2.031743 2.115237,19.141823,- 3.125432,-1.012345,2.189736,1.563849,-0.784165,1.112348,3.123124 -1.061074,-3.125432,15.567914,3.123848,2.031454,1.836742,-1.056781,0.336993,-1.010103 1.112336,-1.012345,3.123848,27.108437, 4.101011,-3.741856,2.101023,-0.71828,-0.037585 A= -0.113584,2.189736,2.031454,4.101011,19.897918,0.431637,-3.111223,2.121314,1.784137 0.718719,1.563849,1.836742,-3.741856,0.431637,9.789365,-0.103458,-1.103456,0.238417 1.742382,-0.784165,-1.056781,2.101023,-3.111223,-0.103458,14.7138465,3.123789,-2.213474 3.067813,1.112348,0.336993,-0.71828,2.121314,-1.103456,3.123789,30.719334,4.446782 -2.031743,3.123124,-1.010103,-0.037585,1.784317,0.238417,-2.213474,4.446782,40.00001 b={2.1874369,33.992318,-25.173417,0.84671695,1.784317,-86.612343,1.1101230,4.719345,-5.6784392} 1.用Household 变换,把A 化为三对角阵B (并打印B )。 2.用超松弛法求解BX=b (取松弛因子ω=1.4,X (0)=0,迭代9次)。 3.用列主元素消去法求解BX=b 。 二、解题方法的理论依据: 1 、用Householder 变换的理论依据 ﹝1﹞ 令A0=A,a(ij)1=a(ij),已知Ar_1即Ar_1=a(ij)r ﹝2﹞ Sr=sqrt(pow(a,2)) ﹝3﹞ a(r)=Sr*Sr+abs(a(r+1,r))*Sr ﹝4﹞ y(r)=A(r_1)*u?/a? ﹝5﹞ Kr=(/2)*Ur 的转置*Yr/a? ﹝6﹞ Qr=Yr-Kr*Ur ﹝7﹞ Ar=A(r-1)-(Qr*Ur 的转置+Ur*Qr 的转置) r=1,2,,……,n -2 2 、用超松弛法求解 其基本思想:在高斯方法已求出x (m),x (m-1) 的基础上,组合新的序列,从而加快收敛速度。 其算式: ??? ??? ?=+?=+-+----=][][0][0][~ ][]][[][]1[0]][[]1][[]1[]][[]1][[][~ i X i X i X i X w i X i i B i b i X i i B i i B i X i i B i i B i X 其中ω是超松弛因子,当ω>1时,可以加快收敛速度 3 、用消去法求解 用追赶消去法求Bx=b 的方法: ][]1[1i b i d =+ , ]][1[]2[1i i B i a +=+ , ][]1[]1][[][]][[]1[]1][[i b i X i i B i X i i B i X i i B =+?++?+-?-

《数值分析》课程设计报告

《数值分析》课程设计实验报告 龙格—库塔法分析Lorenz 方程 200820302033 胡涛 一、问题叙述 考虑著名的Lorenz 方程 () dx s y x dt dy rx y xz dt dz xy bz dt ?=-???=--???=-?? 其中s ,r ,b 为变化区域内有一定限制的实参数,该方程形式简单,表面上看并无惊人之处,但由该方程揭示出的许多现象,促使“混沌”成为数学研究的崭新领域,在实际应用中也产生了巨大的影响。 二、问题分析 Lorenz 方程实际上是一个四元一阶常微分方程,用解析法精确求解是不可能的,只能用数值计算,最主要的有欧拉法、亚当法和龙格- 库塔法等。为了得到较高精度的,我们采用经典四阶龙格—库塔方法求解该问题。 三、实验程序及注释 (1)算法程序 function [T]=Runge_Kutta(f,x0,y0,h,n) %定义算法,其中f 为待解方程组, x0是初始自变量,y0是初始函数 值,h 是步长,n 为步数 if nargin<5 n=100; %如果输入参数个数小于5,则步数 n=100 end r=size(y0);r=r(1); %返回初始输出矩阵的行列数,并将 值赋给r(1) s=size(x0);s=s(1); %返回初始输入矩阵的行列数,并 将值赋给s(1) r=r+s; T=zeros(r,n+1); T(:,1)=[y0;x0]; for t=2:n+1 %以下是具体的求解过程 k1=feval(f,T(1:r-1,t-1)); k2=feval(f,[k1*(h/2)+T(1:r-1,t-1);x0+h/2]); k3=feval(f,[k2*(h/2)+T(1:r-1,t-1);x0+h/2]); k4=feval(f,[k3*h+T(1:r-1,t-1);x0+h]); x0=x0+h; T(:,t)=[T(1:r-1,t-1)+(k1+k2*2+k3*2+k4)*(h/6);x0]; end

数值分析——编程作业..docx

《数值分析》实验报告 第二章=解线性方程组的直接方法 2、试用MATLAB软件编程实现追赶法求解三对角方程组的算法, 并考虑梯形电阻电路问题,电路如下:

其中电路中的各个电流f2?…,珀}须满足下列线性方程组: 一耳十务一巧=0 一巧4■笃一為=0 一迢+呂一逼=0 一耳+兀_%=0 一爲+5% 一巧=0 -2f6+5f7-2f8 =0 -2i7+5r g=0 设F = 220V,氏= 27Q,运用求各段电路的电流量。 解:v!R = — ?8_1481 27 上述方程组可用矩阵表示为: ?2_2000000h81481 _25_200000h0 0_25-20000h0 00_25_2000h0 000-25_200h0 0000_25-20S0 00000-25_2h0 000000-25?8.0

認翟蚁蛊 X -p u a) A .H )q /(i p n .H )p T (.rH )p T 二—二丄岂4 晒口?〈狠* A8)q 、 (8)PH(8)p -p u a) -U —.H ) P *-H ) F (.H ) P A .H ) P 丄) y (.H )q A .H )q Q 丄)q/u)y(2 晒口§前厂< 00 勺:。 4 坦祖咽鱼磋£紙夜 lll < =0 0 0 0 0 0 0 T 畧 oo v p 二甲 d — d — 甲甲甲 d — v 。 二g g g g g g g d v q 氏 —甲 甲甲甲甲 d — O V B 曲恥 qedelN

寸 61—<10905 30p ^ s £0- S S I 黑理q 。脅 u) 旺=味蛋二

12级数值分析课程设计

数值分析课程设计题目与要求 (12级应数及创新班) [设计题一] 编写顺序Gauss消去法和列主元Gauss消去法的函数,再分别调用这两个函数求解下面的84阶方程组: = , 然后考虑将方程组的阶数取为10至100之间多个值进行求解。将你的计算结果与方程组的精确解进行比较。从“快”、“准”、“省”三个方面分析以上两个算法,试提出改进的算法并加以实现和验证。 [设计题二] 编写平方根法和改进的平方根法(参见教材《计算方法》P54的例题2.5)的函数,然后分别调用这两个函数求解对称正定方程组Ax=b,其中A和b分别为: (1)系数矩阵A为矩阵(阶数取为10至100之间多个值): , 向量b随机地选取; (2)系数矩阵A为Hilbert矩阵(阶数取为5至40之间多个值),即A的第i行第j列元素,向量b的第i个分量取为。将你的计算结果与方程组的精确解进 行比较。 若出现问题,分析其原因,提出改进的设想并尝试实现之。

对于迭代法 ,......)2,1,0(99.02 1=-=+k x x x k k k , 它显然有不动点0*=x 。试设计2个数值实验 得到收敛阶数的大概数值(不利用判定收敛阶的判据定理): (1) 直接用收敛阶的定义; (2) 用最小二乘拟合的方法。 [设计题四] 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温T 看成深度x 的函数T(x),有某个湖的观测数据如下: 环境工程师希望: 1) 用三次样条插值求出T(x)。 2) 求在什么深度处dx dT 的绝对值达到最大( 即02 2=dx T d )。 [设计题五] 某飞机头部的光滑外形曲线的型值点坐标由下表给出: ...值y 及一阶、二阶导数值y ’,y ”。绘出模拟曲线的图形。

数值分析课程课程设计汇总

课 程 设 计 我再也回不到大二了, 大学是那么短暂 设计题目 数值分析 学生姓名 李飞吾 学 号 x x x x x x x x 专业班级 信息计x x x x x 班 指导教师 设 计 题 目 共15题如下 成绩

数值分析课程设计 1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?(15621) 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题 解:算法分析:解该问题主要使用递推算法,关于椰子数目的变化规律可以设起初的椰子数为0p ,第一至五次猴子在夜里藏椰子后,椰子的数目分别为01234,,,,p p p p p 再设最后每个人分得x 个椰子,由题: 14 (1)5 k k p p +=- (k=0,1,2,3,4)51(1)5 x p =- 所以551p x =+,11k k p p +=+利用逆向递推方法求解 15 1,4 k k p p +=+ (k=0,1,2,3,4) MATLAB 代码: n=input('n= '); n= 15621 for x=1:n p=5*x+1; for k=1:5 p=5*p/4+1; end if p==fix(p), break end end disp([x,p]) 1.2 设,1 5n n x I dx x =+? (1)从0I 尽可能精确的近似值出发,利用递推公式: 11 5(1,2,20)n n I I n n -=-+= 计算机从1I 到20I 的近似值; (2)从30I 较粗糙的估计值出发,用递推公式:

数值分析课程设计分析方案

郑州轻工业学院 《数值分析》 课程设计报告 题目: 1.非线性方程求解 8.最小二乘法 姓名:杨君芳 院<系):数学与信息科学学院 专业班 级:信科 11-01 学号:541110010148 指导教 师:汪远征 时间:2018年12月30日至2018年1月4日

摘要 本文的内容主要属于数值代数问题的迭代解法和差值问题。 在VC++6.0环境下对非线性方程求根的三种迭代解法<即一般迭代法,牛顿迭代法和弦截法)的算法实现,将抽象问题转化为计算机编程的一般解法思想,实现运用计算机解非线性方程的根。同时完成了运用最小二乘法的思想解决实际问题的简单设计, 本文也对该程序设计的难点、解决技巧、每种方法的理论基础、程序的算法分析、功能分析、模块设计以及算法的优点、缺点和主要参考文献等进行了详细的作答。 ,

目录 《数值分析》1 课程设计报告1 摘要2 目录3 1 理论基础4 1.1 非线性方程的迭代解法4 1.2最小二乘法4 2 算法分析5 2.1 功能分析5 2.1.1非线性方程的迭代解法5 2.2 算法分析5 3 程序设计8 3.1 选单和主窗口设计8 3.1.1非线性方程的迭代解法8 3.1.2最小二乘法10 3.2 模块设计14 3.2.1非线性方程的迭代解法14 3.2.2 最小二乘法18 4 总结24 5 参考文献25

1 理论基础 1.1 非线性方程的迭代解法 1、 一般迭代法:首先将方程f

数值分析 matlab 实验4

(1) 解题过程如下: (1)MATLAB中创建复化梯形公式和复化辛普森公式的 M 文件:1)复化梯形公式文件: function s=T_fuhua(f,a,b,n) h=(b-a)/n; s=0; for k=1:(n-1) x=a+h*k; s=s+feval(f,x); end s=h*(feval(f,a)+feval(f,b))/2+h*s; 2)复化辛普森公式文件: function s=S_fuhua(f,a,b,n) h=0; h=(b-a)./(2*n); s1=0; https://www.docsj.com/doc/c81400251.html, -5- s2=0; for k=1:n-1 x=a+h*2*k; s1=s1+feval(f,x); end for k=1:n x=a+h*(2*k-1); s2=s2+feval(f,x); end

s=h*(feval(f,a)+feval(f,b)+s1*2+s2*4)/3; 在MATLAB中输入: f=inline('x/(4+x^2)');a=0;b=1; %inline 构造内联函数对象 for n=2:10 s(n-1)=T_fuhua(f,a,b,n);s(n-1)=vpa(s(n-1),10); %调用复化梯形公式,生成任意精度的数值 end exact=int('x/(4+x^2)',0,1);exact=vpa(exact,10) %求出积分的精确值 输出结果:exact = .1115717755 s = Columns 1 through 6 0.1088 0.1104 0.1109 0.1111 0.1113 0.1114 Columns 7 through 9 0.1114 0.1114 0.1115 在MATLAB中输入以下函数用以画出计算误差与 n 之间的曲线: r=abs(exact-s); n=2:10; plot(double(n),double(r(n-1))) 得到结果如图所示: (2)在 MATLAB中输入以下程序代码: f=inline('x/(4+x^2)');a=0;b=1;n=9; %inline 构造内联函数对象 t=T_fuhua(f,a,b,n);t=vpa(t,10) s=S_fuhua(f,a,b,n);s=vpa(s,10)

数值分析课程课程设计

课程设计 我再也回不到大二了, 大学是那么短暂 设计题目________ 数值分析 学生姓名________ 李飞吾 _________ 学号 ______ XXXXXXXX 专业班级信息计XXXXX班 指导教师_________________________

数值分析课程设计 1.1水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的 一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫, 很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只 给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水 手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子, 私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆, 每人分一堆,正好余一只再给猴子,试问原先共有几只椰子? ( 15621) 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题 解:算法分析:解该问题主要使用递推算法,关于椰子数目的变化规律 可以设起初的椰子数为p o ,第一至五次猴子在夜里藏椰子后,椰子的数 目分别为Pb ,p 1 ,p 2,P 3,P 4再设最后每个人分得x 个椰子,由题: 4 1 p k 1 ( p k 1) ( k=0,1,2,3,4 ) x -( p 5 1) 5 5 所以P 5 5x 1, p< p< 1 1利用逆向递推方法求解 P k - P k 1 1, ( k=0,1,2,3,4 ) 4 MATLAB^码: n 二in put(' n 二'); n= 15621 for x=1: n p=5*x+1; for k=1:5 p=5*p/4+1; end if P==fix(p), break end end disp([x,p]) 1 n 1. 2 设,I n — dx 05 x (1) 从I 。尽可能精确的近似值出发,利用递推公式: 1 I n 5I n 1 -(n 1,2,L 20) n 计算机从h 到I 20的近似值; (2) 从%较粗糙的估计值出发,用递推公式: 1 1 I n 1 —I n (n 30,29,L ,3,2) 5 5n 输出结果: 1023 15621 结果分析:此题的解题思想是在迭代法 中,判断p 为整数时,输出与p

数值分析课程设计(最终版)

本文主要通过Matlab 软件,对数值分析中的LU 分解法、最小二乘法、复化Simpon 积分、Runge-Kutta 方法进行编程,并利用这些方法在MATLAB 中对一些问题进行求解,并得出结论。 实验一线性方程组数值解法中,本文选取LU 分解法,并选取数据于《数值分析》教材第5章第153页例5进行实验。所谓LU 分解法就是将高斯消去法改写为紧凑形式,可以直接从矩阵A 的元素得到计算L 、U 元素的递推公式,而不需要任何步骤。用此方法得到L 、U 矩阵,从而计算Y 、X 。 实验二插值法和数据拟合中,本文选取最小二乘拟合方法进行实验,数据来源于我们课堂学习该章节时的课件中的多项式拟合例子进行实验。最小二乘拟合是一种数学上的近似和优化,利用已知的数据得出一条直线或者曲线,使之在坐标系上与已知数据之间的距离的平方和最小。利用excel 的自带函数可以较为方便的拟合线性的数据分析。 实验三数值积分中,本文选取复化Simpon 积分方法进行实验,通过将复化Simpson 公式编译成MATLAB 语言求积分∫e ;x dx 1 0完成实验过程的同时,也对复化Simpon 积分章节的知识进行了巩固。 实验四常微分方程数值解,本文选取Runge-Kutta 方法进行实验,通过实验了解Runge-Kutta 法的收敛性与稳定性同时学会了学会用Matlab 编程实现Runge-Kutta 法解常微分方程,并在实验的过程中意识到尽管我们熟知的四种方法,事实上,在求解微分方程初值问题,四阶法是单步长中最优秀的方法,通常都是用该方法求解的实际问题,计算效果比较理想的。 实验五数值方法实际应用,本文采用最小二乘法拟合我国2001年到2015年的人口增长模型,并预测2020年我国人口数量。 关键词:Matlab ;LU 分解法;最小二乘法;复化Simpon 积分;Runge-Kutta

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

数值分析-课程设计doc

课程设计报告 课程名称数值分析 课题名称数值积分 专业信息与计算科学 班级 学号 姓名 指导教师 2015 年12 月20 日

湖南工程学院 课程设计任务书 课程名称数值分析 课题数值积分 专业班级信息与计算科学0901班 学生姓名 学号 指导老师辉 审批 任务书下达日期2015 年12 月7 日任务完成日期2015 年12 月20日

设计内容与设计要求 1. 设计内容: 非奇异矩阵矩阵A ∈R n*n ,已知A -1的一个近似矩阵D (0)∈R n*n ,则由矩阵公式: ?????+=-=--)()1()1(K K K K K F I D D AD I F , K=0,1,2,3........... (1).已知矩阵A 及其逆矩阵的一个近似D (k)为: A=?? ??? ?? ?? ???--------7.49.43.49.19.47.11.88.78.26 .21.27.07.37.08.38.1 D= ???? ? ???? ???---------185.0061.0388.0293.0199.0009.0046.0230.0089.0016.0169.0035.0270.0163.0460.0211.0 用以上方法计算序列{D (k)}迭代次数超过100次时结束。 (2)分析最后得到的D (k)是否A 的一个较好的近似逆矩阵 2.设计要求: ● 课程设计报告正文内容 a. 问题的描述及算法设计; b. 算法的流程图(要求画出模块图); c. 算法的理论依据及其推导; d. 相关的数值结果(通过程序调试),; e. 数值计算结果的分析; f. 附件(所有程序的原代码,要求对程序写出必要的注释)。 ● 书写格式

相关文档
相关文档 最新文档