华中科技大学数值分析-数值分析实验程序

华中科技大学数值分析-数值分析实验程序
华中科技大学数值分析-数值分析实验程序

华中科技大学数值分析-数值分析实验程序

Function t_charpt1_1

%数值试验1.1病态问题

%输入:[0 20]之间的扰动项及小的扰动常数

%输出:加扰动后得到的全部根

Result=inputdlg({‘请输入扰动项:在[0 20]之间的整数:’},’charpt1_1’,1’{‘19’});

Numb=str2num(char(result));

if ((Numb>20)|(Numb<0))

errordlg(‘请输入正确的扰动项:[0 20]之间的整数!’);

return;

end

result=inputdlg({‘请输入(0 1)之间的扰动常数:’},’charpt1_1’,1,{‘0.00001’}); ess=str2num(char(result));

ve=zeros(1,21);

ve(21-Numb)=ess;

root=roots(poly(1:20)+ve);

dis p([‘对扰动项’,num2str(Numb),’加扰动’,num2str(ess),’得到的全部根为:’]); disp(num2str(root));

function charpt3

%数值实验三:含“实验3.1”和“实验3.2”

%子函数调用:dlsa

%输入:实验选择

%输出:原函数及求得的相应插值多项式的函数的图像以及参数alph和误差r

result=inputdlg({‘请选择实验,若选 3.1,请输入1,否则输入2:’},’charpt_3’,1,{‘1’});

Nb=str2num(char(result));

if(Nb~=1&(Nb~=2)errordlg(‘实验选择错误!’));

return;

end

x0=-1:0.5:2

y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];

n=3;%n为拟合阶次

if(Nb==1)

alph=polyfit(x0,y0,n);

y=polyval(alph,x0);

r=(y0-y)*(y0-y)’;%平方误差

x=-1:0.01:2;

y=polyval(alph,x);

plot(x,y,’k-’);

xlabel(‘x’);ylabel(‘y0*and

ployfit.y-’);

hold on;

plot(x,y,’k-’);

title(‘离散数据的多项式拟合’);

grid on;

else

result=inpurdlg({‘请输入权向量w:’},’charpt_3,1,{‘[1 1 1 1 1 1 1]’});

w=str2num(char(result));

[a,b,c,alph,r]=dlsa(x0,y0,w,n);

end

disp([‘平方误差:’,sprint(‘%g,r’)]); disp([‘参数a lph:’,sprint(‘%\t’,alph)])

%---------------------------------------------------------------------------------

---------------------------------------------function[a,b,c,alph,r]=dlsa(x,y,w,n) %功能:用正交化方法对离散数据作多项式最小二乘拟合。

%输入:m+1个离散点(x,y,w),x,y,w分别用行向量给出。

% 拟合多项式的次数n,0

%输出:三项递推公式的参数a,b,拟合多项式s(x)的系数c和alph,

% 平方误差r=(y-s,y-s),并作离散点列和拟合曲线的图形

m=length(x)-1;

if(n<1|n>=m)

errordlg(‘错误:n<1或者n>=m!’); return;

end

%求三项递推公式的参数a,b,拟合多项式s(x)的系数c,其中d(k)=(y,sk);

s1=0; s2=ones(1,m+1); v2=sum(w);

d(1)=y*w’;c(1)=d(1)/v2;

for k=1:n

xs=x.*s2.^2*w’; a(k)=xs/v2;

if(k==1)

b(k)=0;

else

b(k)=v2/v1;

end

s3=(x-a(k)).*s2-b(k)*s1;

v3=s3.^2*w’;

d(k+1)=y.*s3*w’;c(k+1)=d(k+1)/v3 end

%求平方误差r

r=y.*y*w’-c*d’;

%,求拟合多项式s(x)的降幂系数alph

alph=zeros(1,n+1);T=zeros(n+1,n+2);

T(:,2)=ones(n+1,1);T(2,3)=-a(1);

if(n>=2)

for k=3:n+1

for i=3:k+1

T(k,i)=T(k-1,i)-a(k-1)*T(k-1,i-1)-b(k-1)* T(k-2,i-2);

end

end

end

for i=1:n+1

for k=i:n+1

alph(n+2-i)=alph(n+2-i)+c(k)*T(k,k+2-i); end

end

%用秦九韶方法计算s(t)的输出序列(t,s)

xmin=min(x); xmax=max(x); dx=(xmax-xmin)/(25*m);

t=(xmin-dx):dx:(xmax+dx);

s=alph(1);

for k=2:n+1

s=s.*t+alph(k);

end

%输出点列x-y和拟合曲线t-s的图形

plot(x,y,’*’,t,s,’-’);

title(‘离散数据的多项式拟合’);

x label(‘x’);ylbel(‘y’);

grid on;

function charpt5_1

%数值实验5.1:常微分方程性态和R-K法稳定性实验

%输入:参数a,步长h

%输出:精确解和数值解图形对比

clf;

result=inputdlg({‘请输入[-50 50]间的参数a:’},’实验5.1’,1,{‘40’});

a=str2num(char(result));

if((a<-50)|(a>50))

errordlg(‘请输入正确的参数a!’);

return;

end

result=inputdlg({‘请输入(0 1)之间的步长:’},‘实验5.1’,1,{‘0.01’});h=str2num(char(result));

if((h>=1)|(h<=0))

errordlg(‘请输入正确的(0 1)间的步长!’);

return;

end

x=0:h:1;

y=x;

N=length(x);

y(1)=1;

func=inline(‘1+(y-x).*a’);

for n=1:N-1

k1=func(a,x(n),y(n));

k2=func(a,x(n)+h/2,y(n)+k1*h/2); k3=func(a,x(n)+h/2,y(n)+k2*h/2); k4=func(a,x(n)+h/2,y(n)+k3*h/2); y(n+1)=y(n+h*(k1+2*k2+2*k3+k4)/6; end

y0=exp(a*x)+x;

plot(x,y0,’g+’);

hold on;

plot(x,y,’b--’);

xlabel(‘x’);

ylabel(‘y0=exp(ax)+x:+and R-K(x)--’)

用计算器求超越方程数值解的几个简单有趣的例子

用计算器求超越方程数值解的几个简单有趣的例子 孟也清(原创)REV1.02 01052013 很显然,这些超越方程都可以编个简单程序解决,但这里说的是仅使用普通函数计算器, JUST FOR FUN! 解方程1 X=Cos(X) 这可能是世界上最简单的用函数计算器迭代方式解超越方程的例子了,只要你连续按函数计算器上的COS键。第一个近似解可以是计算器上显示的任何数字,如一开机为0就可按键,或是99999999都无所谓,因为COS是周期函数,所有数字都会以2π为模。 按键若干次后你就看到那个解趋近你使用的计算器的最高精度。 在8位计算器上得到X=0.7390851,约按键50次, 在10位计算器上得到X=0.739085133,约按键52次, 在Windows上的32位计算器上为X=0.73908513321516064165531208767387,约按键200次。 注意上面X是弧度 若X是“度“则收敛更快, 仅10次即可得到32位解X=0.9998477415310881129598107686798 解方程2 X= - LOG(X) 见下图,蓝色为y=log(x), 紫色为y=-x, 交点约为X=0.4 若用X取对数再取正值后再迭代,其过程发散。 所以这样解, 将两次相近的解的几何平均值代回去迭代。有弦位法的意思。 X0=0.4 X1’=-Log(X0) =0.39794 X1=(X0+X1’)/2=0.39897 经过10次迭代可得到 X10=0.399012978260252 用几何平均值代回去迭代,也是10次,因为Xn范围很小。 1

解方程3 X=10LOG(X) 若X为功率,而10LOG(X)表示dBm,则在数值上有两个点它们是相等的。 即求解方程X=10LOG(X)的两个解。 见下图,蓝色为y=x, 紫色为y=10log(x), 交点2约为X=10,y=10LOG(10)=10,此点可用直接迭代求出,但收敛速度不很快。 交点1约为X=1.4,此点用直接迭代或上面平均值迭代均发散,反而在计算器上用凑数法比较快,为1.371288573~4 当然可考虑牛顿法(切线法)切线法似乎也会发散。弦位法应可以,没试过。 2

数值分析之幂法及反幂法C语言程序实例

数值分析之幂法及反幂法C 语言程序实例 1、算法设计方案: ①求1λ、501λ和s λ的值: s λ:s λ表示矩阵的按模最小特征值,为求得s λ直接对待求矩阵A 应用反幂法即可。 1λ、501λ:已知矩阵A 的特征值满足关系 1n λλ<< ,要求1λ、及501λ时,可 按如下方法求解: a . 对矩阵A 用幂法,求得按模最大的特征值1m λ。 b . 按平移量1m λ对矩阵A 进行原点平移得矩阵1m B A I λ=+,对矩阵B 用反幂法 求得B 的按模最小特征值2m λ。 c . 321m m m λλλ=- 则:113min(,)m m λλλ=,13max(,)n m m λλλ=即为所求。 ②求和A 的与数5011 140 k k λλμλ-=+最接近的特征值 ik λ(k=0,1,…39): 求矩阵A 的特征值中与k μ最接近的特征值的大小,采用原点平移的方法: 先求矩阵 B=A-k μI 对应的按模最小特征值k β,则k β+k μ即为矩阵A 与k μ最接近的特征值。 重复以上过程39次即可求得ik λ(k=0,1,…39)的值。 ③求A 的(谱范数)条件数2cond()A 和行列式det A : 在(1)中用反幂法求矩阵A 的按模最小特征值时,要用到Doolittle 分解方法,在Doolittle 分解完成后得到的两个矩阵分别为L 和U ,则A 的行列式可由U 阵求出,即:det(A)=det(U)。 求得det(A)不为0,因此A 为非奇异的实对称矩阵,则: max 2()s cond A λλ= ,max λ和s λ分别为模最大特征值与模最小特征值。

数值分析实验报告

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )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 +

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

演讲稿数值分析应用实例.doc

非线性方程求根 问题:在相距100m的两座建筑物(高度相等的点)之间悬挂一根电缆,仅允许电缆在中间最多下垂1m,试计算所需电缆的长度。 设空中电缆的曲线(悬链线)方程为 ] , [ , ) ( 50 50 2 - ∈ + = - x e e a y a x a x (1) 由题设知曲线的最低点)) ( , (0 0y与最高点)) ( , (50 50y之间的高度差为1m,所以有 1 2 50 50 + = +- a e e a a a) ( (2) 由上述方程解出a后,电缆长度可用下式计算: ) ( ) (a a a x a x L e e a dx e e dx x y ds L 50 50 50 50 50 2 1- - - - = ? ? ? ? ? ? + = ' + = =? ? ?(3) 相关Matlab命令: 1、描绘函数] , [ , ) ( ) (1500 500 1 2 50 50 ∈ - - + = - a a e e a a y a a 的图形;

2、用fzero 命令求方程在1250=a 附近的根的近似值x ,并计算)(x y 的函数值; 3、编写二分法程序,用二分法求0=)(a y 在],[13001200内的根,误差不超过310-,并给出对分次数; 4、编写Newton 迭代法程序,并求0=)(a y 在],[13001200内的根,误差不超过310-,并给出迭代次数。 5、编写Newton 割线法程序,并求0=)(a y 在],[13001200内的根,误差不超过310-,并给出迭代次数。

线性方程组求解应用实例 问题:投入产出分析 国民经济各个部门之间存在相互依存的关系,每个部门在运转中将其他部门的产品或半成品(称为投入)经过加工变为自己的产品(称为产出),如何根据各部门间的投入产出关系,确定各部门的产出水平,以满足社会需求,是投入产出分析中研究的课题。考虑下面的例子: 设国民经济由农业、制造业和服务业三个部门构成,已知某年它们之间的投入产出关系、外部需求、初始投入等如表1所示(数字表示产值)。 表1 国民经济三个部门间的关系单位:亿元 假定总投入等于总产出,并且每个部门的产出与它的投入成正比,由上表可以确定三个部门的投入产出表:如表2所示。 表2 三个部门的投入产出表

数值分析实验报告

实验一、误差分析 一、实验目的 1.通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; 2.通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念; 3.通过上机计算,了解舍入误差所引起的数值不稳定性。 二.实验原理 误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。 三.实验内容 对20,,2,1,0 =n ,计算定积分 ?+=10 5dx x x y n n . 算法1:利用递推公式 151--=n n y n y , 20,,2,1 =n , 取 ?≈-=+=1 00182322.05ln 6ln 51dx x y . 算法2:利用递推公式 n n y n y 51511-= - 1,,19,20 =n . 注意到 ???=≤+≤=10 10202010201051515611261dx x dx x x dx x , 取 008730.0)12611051(20120≈+≈y .: 四.实验程序及运行结果 程序一: t=log(6)-log(5);

n=1; y(1)=t; for k=2:1:20 y(k)=1/k-5*y(k-1); n=n+1; end y y =0.0884 y =0.0581 y =0.0431 y =0.0346 y =0.0271 y =0.0313 y =-0.0134 y =0.1920 y =-0.8487 y =4.3436 y =-21.6268 y =108.2176 y =-541.0110 y =2.7051e+003 y =-1.3526e+004 y =6.7628e+004 y =-3.3814e+005 y =1.6907e+006 y =-8.4535e+006 y =4.2267e+007 程序2: y=zeros(20,1); n=1; y1=(1/105+1/126)/2;y(20)=y1; for k=20:-1:2 y(k-1)=1/(5*k)-(1/5)*y(k); n=n+1; end 运行结果:y = 0.0884 0.0580 0.0431 0.0343 0.0285 0.0212 0.0188 0.0169

数值分析

数值分析上机报告

前言 随着计算机技术的高速发展,越来越多的科技工作者使用计算机进行科学研究和解决工程技术问题。数值分析(或计算方法)课程的内容是科学工程计算的必备知识,已经成为众多理工科大学生、研究生的必修课程,越来越受到重视。 由于工程实际中所遇到的数学模型求解过程迭代次数很多,计算量很大,所以需要借助很多编程软件来解决,得到一个满足误差限的解。本文所计算题目,均采用C++编程。在本文中使用C++编写了牛顿法、牛顿-Steffensen法方程求解的程序和雅格比法、高斯-赛德尔迭代法求解方程组的程序及Ru n ge-Kutt a4阶算法,并通过实例求解验证了其可行性,比较了求解同一种问题时不同方法之间的优缺性,其中包含解的精确度和解的收敛速度两个重要指标。

一 牛顿法和牛顿-Steffensen 法迭代求解的比较 1. 计算题目 分别用牛顿法,及基于牛顿算法下的Steffensen 加速法 (1) 求ln(x +sin x )=0的根。初值x0分别取0.1, 1,1.5, 2, 4进行计算。 (2) 求sin x =0的根。初值x0分别取1,1.4,1.6, 1.8,3进行计算。 分析其中遇到的现象与问题。 2. 计算过程和结果 1.对方程ln(x +sin x )=0,其导数有些复杂,我们可以对其进行变形,即求解x+sinx=1的解。使用牛顿法,令1sin )(-+=x x x f ,则x x f cos 1)(+=',直至 5 110 1||-+?<-k k x x 时,结束迭代;然后再使用基于牛顿法的Steffensen 加速法进 行计算,直至51101||-+?<-k k x x 时,结束迭代。其迭代结果与迭代次数如下表所示(注N1为牛顿法迭代次数,N2为基于牛顿法Steffensen 加速法迭代次数): 2.对方程sin x =0,使用牛顿法时,令x x f sin )(=,使用牛顿法计算,直至 5 110 1||-+?<-k k x x 时,结束迭代;然后依据Steffensen 加速法进行编程计算,直 至51101||-+?<-k k x x 时,结束迭代。其迭代结果与迭代次数如下表所示:

数值分析在生活中的应用举例及Matlab实现

Matlab 实验报告 学院:数学与信息科学学院班级:信息班 学号:20135034027 姓名:马永杉

最小二乘法,用MATLAB实现 1.数值实例 下面给定的是郑州最近1个月早晨7:00左右的天气预报所得到的温度,按照数据找出任意次曲线拟合方程和它的图像。下面用MATLAB编程对上述数据进行最小二乘拟合。 2、程序代码 x=[1:1:30]; y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9 ,7,6,5,3,1]; a1=polyfit(x,y,3) %三次多项式拟合% a2= polyfit(x,y,9) %九次多项式拟合% a3= polyfit(x,y,15) %十五次多项式拟合% b1=polyval(a1,x) b2=polyval(a2,x) b3=polyval(a3,x) r1= sum((y-b1).^2) %三次多项式误差平方和% r2= sum((y-b2).^2) %九次次多项式误差平方和% r3= sum((y-b3).^2) %十五次多项式误差平方和% plot(x,y,'*') %用*画出x,y图像% hold on plot(x,b1, 'r') %用红色线画出x,b1图像% hold on plot(x,b2, 'g') %用绿色线画出x,b2图像% hold on plot(x,b3, 'b:o') %用蓝色o线画出x,b3图像% 2.流程图

4.数值结果分析 不同次数多项式拟合误差平方和为: r1=67.6659 r2=20.1060 r3=3.7952 r1、r2、r3分别表示三次、九次、十五次多项式误差平方和。 5、拟合曲线如下图

数值分析实验报告62338

数值分析实验报告 (第二章) 实验题目: 分别用二分法、牛顿迭代法、割线法、史蒂芬森迭代法求方程 的根,观察不同初始值下的收敛性,并给出结论。 问题分析: 题目有以下几点要求: 1.不同的迭代法计算根,并比较收敛性。 2.选定不同的初始值,比较收敛性。 实验原理: 各个迭代法简述 二分法:取有根区间的重点,确定新的有根区间的区间长度仅为区间长度的一版。对压缩了的有根区间重复以上过程,又得到新的有根区间,其区间长度为的一半,如此反复,……,可得一系列有 根区间,区间收敛到一个点即为根。 牛顿迭代法:不动点迭代法的一种特例,具有局部二次收敛的特性。迭代格式为 割线法:是牛顿法的改进,具有超线性收敛的特性,收敛阶为1.618. 迭代格式为 史蒂芬森迭代法:采用不动点迭代进行预估校正。至少是平方收敛的。迭代格式为

这里可采用牛顿迭代法的迭代函数。实验内容: 1.写出该问题的函数 代码如下: function py= f(x) syms k; y=(k^2+1)*(k-1)^5; yy=diff(y,k); py(1)=subs(y,k,x); py(2)=subs(yy,k,x); end 2.分别写出各个迭代法的迭代函数代码如下: 二分法: function y=dichotomie(a,b,e) i=2; m(1)=a; while abs(a-b)>e t=(a+b)/2; s1=f(a); s2=f(b); s3=f(t); if s1(1)*s3(1)<=0 b=t; else a=t; end m(i)=t; i=i+1; end y=[t,i+1,m]; end 牛顿迭代法: function y=NewtonIterative(x,e) i=2; en=2*e; m(1)=x; while abs(en)>=e s=f(x); t=x-s(1)/s(2); en=t-x; x=t; m(i)=t; i=i+1; end y=[x,i+1,m]; end 牛顿割线法:

数值分析简述及求解应用

数值分析简述及求解应用 摘要:数值分析是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,本文主要介绍了数值分析的一些求解方法的原理和过程,并应用在电流回路和单晶硅提拉过程中的,进一步体现数值分析的实际应用。 关键字:解方程组插值法牛顿法 一、引言 随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。有可靠的理论分析,要有数值实验,并对计算的结果进行误差分析。数值分析的主要内容包括插值法,函数逼近,曲线拟和,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数值解法。运用数值分析解决问题的过程包括: 实际问题→数学建模→数值计算方法→程序设计→上机计算求出结果。 在自然科学研究和工程技术中有许多问题可归结为求解方程组的问题,方程组求解是科学计算中最常遇到的问题。如在应力分析、电路分析、分子结构、测量学中都会遇到解方程组问题。在很多广泛应用的数学问题的数值方法中,如三次样条、最小二乘法、微分方程边值问题的差分法与有限元法也都涉及到求解方程组。 在工程中常会遇到求解线性方程组的问题,解线性方程组的方法有直接法和迭代法,直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。将方程组的解看作是某极限过程的极限值,且计算这一极限值的每一步是利用前一步所得结果施行相同的演算步骤而进行。迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。迭代法包括Jacobi法SOR法、SSOR法等多种方法。非线性是实际问题中经常用到出现的并在科学和工程中的低位也越来越重要,很多线性模型都是在一定条件下由非线性简化得到的。所以往往需要非线性的研究。非线性的数值解法有牛顿法,迭代收敛的加速解法,弦解法和抛物线法等。还有很多问题都可用常微分方程的定解来描述,主要有处置问题和边值问题。常微分方程是描述连续变化的数学语言,微分方程的求解是确定满足给定方程的可微函数y(x)。下面就数值分析中常用的一些方法和实例进行阐述。 二、数值分析中的一些方法 1、插值法 许多实际问题都用y=f(x)来表示,有的函数虽然有解析式,但由于计算复杂实用不方便,为了找一个既能反映函数的特性又便于计算的函数,我们利用插值法可以得到这个简单函数,插值法包括拉格朗日插值,牛顿插值,Hermite插值等多种方法。 拉格朗日插值是n次多项式插值,其成功地用构造插值基函数的方法解决了

数值分析课程设计学生题目

《数值分析》课程设计

本课程设计的内容为:每个小组的同学均应完成以下五个案例; 目标:能将数值分析课程中所学的算法知识熟练应用于实际问题中。 案例1 土木工程和环境工程师在设计一条排水渠道时必须考虑渠道的各种参数(如宽度,深度,渠道内壁光滑度)及水流速度、流量、水深等物理量之间的关系。 假设修一条横断面为矩形的水渠,其宽度为B ,假定水流是定常的,也就是说水流速度不随时间而变化。 根据质量守恒定律可以得到 Q=UBH (1.1) 其中Q 是水的流量(s m /3 ),U 是流速(s m /),H 是水的深度(m )。 在水工学中应用的有关流速的公式是 3 /23 /22/1)2()(1H B BH S n U += (1.2) 这里n 是Manning 粗糙系数,它是一个与水渠内壁材料的光滑性有关的无量纲量;S 是水渠 的斜度系数,也是一个无量纲量,它代表水渠底每米内的落差。 把(1.2)代入(1.1)就得到 3 /23 /52/1)2()(1H B BH S n U += (1.3) 为了不同的工业目的(比如说要把污染物稀释到一定的浓度以下,或者为某工厂输入一定量 的水),需要指定流量Q 和B ,求出水的深度。这样,就需要求解 0) 2()(1)(3 /23 /52/1=-+=Q H B BH S n H f (1.4) 一个具体的案例是 s m Q S n m B /5 ,0002.0 ,03.0 ,203==== 求出渠道中水的深度H 。 所涉及的知识——非线性方程解法。 案例2 在化学工程中常常研究在一个封闭系统中同时进行的两种可逆反应 C D A C B A ?+?+2 其中A ,B ,C 和D 代表不同的物质。反应达到平衡是有如下的平衡关系: d a c b a c C C C k C C C k == 22 1 , 其中2 24 1107.3 ,104--?=?=k k 称为平衡常数,),,,(d c b a n C n =代表平衡状态时该物质的浓度。假定反应开始时各种物质的浓度为:

数值分析实验报告总结

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

如果 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 ,那 外,还规定其必须满足相容性: 所以

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

数值计算实例

数值计算 插值 假设需要得到x 坐标每改变0.1 时的y 坐标, 用三次插值方法对机翼断面下缘轮廓线上的部分数据加细, 并作出插值函数的图形. 程序: clear, close all x=[0,3,5,7,9,11,12,13,14,15]; y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6]; plot(x,y); xi=0:0.1:15; yi_cubic=interp1(x,y,xi,'cubic'); plot(x,y,'ro',xi,yi_cubic); pp=csape(x,y,'second'); v=ppval(pp,xi); v; T=(ppval(pp,0.1)-ppval(pp,0))/0.1; angle=atan(T)*180/pi; s=v(130:151); ss=min(s); 图形: 最小二乘拟合

已知空气温度与动力粘度关系如下,进行最小二乘拟合 0℃170.8×10^-4mPa.s 40℃190.4×10^-4mPa.s 74 ℃210.2×10^-4mPa.s 229 ℃263.8×10^-4mPa.s 334℃312.3×10^-4mPa.s 409℃341.3×10^-4mPa.s 481℃358.3×10^-4mPa.s 565℃375.0×10^-4mPa.s 638℃401.4×10^-4mPa.s 750 ℃426.3×10^-4mPa.s 810 ℃441.9×10^-4mPa.s 程序: >> x=[0 40 74 229 334 409 481 565 638 750 810]; >> y=[170.8 190.4 210.2 263.8 312.3 341.3 358.3 375.0 401.4 426.3 441.9]; >> p=polyfit(x,y,2) p = -0.0002 0.4652 172.5460 >> xi=[0:2:810]; >> yi=polyval(p,xi); >> plot(x,y,'ko-',xi,yi,'k--') 解线性方程组的直接法

数值分析实验报告资料

机电工程学院 机械工程 陈星星 6720150109 《数值分析》课程设计实验报告 实验一 函数插值方法 一、问题提出 对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n ==。试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: (1 求五次Lagrange 多项式5L ()x ,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈) 实验步骤: 第一步:先在matlab 中定义lagran 的M 文件为拉格朗日函数 代码为: function[c,l]=lagran(x,y) w=length(x); n=w-1; l=zeros(w,w); for k=1:n+1 v=1; for j=1:n+1 if(k~=j) v=conv(v,poly(x(j)))/(x(k)-x(j)); end end l(k,:)=v; end c=y*l; end

第二步:然后在matlab命令窗口输入: >>>> x=[0.4 0.55 0.65 0.80,0.95 1.05];y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382]; >>p = lagran(x,y) 回车得到: P = 121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845 由此得出所求拉格朗日多项式为 p(x)=121.6264x5-422.7503x4+572.5667x3-377.2549x2+121.9718x-15.0845 第三步:在编辑窗口输入如下命令: >> x=[0.4 0.55 0.65 0.80,0.95 1.05]; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.0845; >> plot(x,y) 命令执行后得到如下图所示图形,然后 >> x=0.596; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.084 y =0.6257 得到f(0.596)=0.6257 同理得到f(0.99)=1.0542

(完整版)数值分析每节课的教学重点、难点

计算方法教案新疆医科大学 数学教研室 张利萍

一、课程基本信息 1、课程英文名称:Numerical Analysis 2、课程类别:专业基础课程 3、课程学时:总学时54 4、学分:4 5、先修课程:《高等数学》、《线性代数》、《Matlab 语言》 二、课程的目的与任务: 计算方法是信息管理与信息系统专业的重要理论基础课程,是现代数学的一个重要分支。其主要任务是介绍进行科学计算的理论方法,即在计算机上对来自科学研究和工程实际中的数学问题进行数值计算和分析的理论和方法。通过本课程的学习,不仅使学生初步掌握数值分析的基本理论知识,而且使学生具备一定的科学计算的能力、分析问题和解决问题的能力,为学习后继课程以及将来从事科学计算、计算机应用和科学研究等工作奠定必要的数学基础。 三、课程的基本要求: 1.掌握计算方法的常用的基本的数值计算方法 2.掌握计算方法的基本理论、分析方法和原理 3.能利用计算机解决科学和工程中的某些数值计算应用问题,增强学生综合运用知识的能力 4.了解科学计算的发展方向和应用前景 四、教学内容、要求及学时分配: (一) 理论教学: 引论(2学时) 第一讲(1-2节) 1.教学内容: 计算方法(数值分析)这门课程的形成背景及主要研究内容、研究方法、主要特点;算法的有关概念及要求;误差的来源、意义、及其有关概念。数值计算中应注意的一些问题。 2.重点难点: 算法设计及其表达法;误差的基本概念。数值计算中应注意的一些问题。3.教学目标: 了解数值分析的基本概念;掌握误差的基本概念:误差、相对误差、误差限、相对误差限、有效数字;理解有效数字与误差的关系。学会选用相对较好的数值计算方法。

数值分析实验报告1

实验一 误差分析 实验1.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 ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个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 =

数值分析实验报告3

实验报告 实验项目名称数值积分与数值微分实验室数学实验室 所属课程名称数值逼近 实验类型算法设计 实验日期 班级 学号 姓名 成绩

实验概述: 【实验目的及要求】 本次实验的目的是熟练《数值分析》第四章“数值积分与数值微分”的相关内容,掌握复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式。 本次试验要求编写复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的程序编码,并在MATLAB软件中去实现。 【实验原理】 《数值分析》第四章“数值积分与数值微分”的相关内容,包括:复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的相应算法和相关性质。 【实验环境】(使用的软硬件) 软件: MATLAB 2012a 硬件: 电脑型号:联想 Lenovo 昭阳E46A笔记本电脑 操作系统:Windows 8 专业版 处理器:Intel(R)Core(TM)i3 CPU M 350 @2.27GHz 2.27GHz 实验内容: 【实验方案设计】 第一步,将书上关于复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的内容转化成程序语言,用MATLAB实现;第二步,分别用以上求积公式的程序编码求解不同的问题。 【实验过程】(实验步骤、记录、数据、分析) 实验的主要步骤是:首先分析问题,根据分析设计MATLAB程序,利用程序算出问题答案,分析所得答案结果,再得出最后结论。 实验:用不同数值方法计算积分 (1) 取不同的步长h.分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善? (2) 用龙贝格求积计算完成问题(1)。 (3)用勒让德多项式确定零点,再代入计算高斯公式,使其精度达到10-4 (1)在MATLAB的Editor中建立一个M-文件,输入程序代码,实现复合梯形求积公式的程序代码如下:

数值计算方法实验报告

差值法实验日志 实验题目:插值法 实验目的: 1.掌握拉格朗日插值、牛顿插值、分段低次插值和样条插值的方法。 2.对四种插值结果进行初步分析。 实验要求: (1)写出算法设计思想; (2)程序清单; (3)运行的结果; (4)所得图形; (5)四种插值的比较; (6)对运行情况所作的分析以及本次调试程序所取的经验。如果程序未通过,应分析其原因。 实验主要步骤: 1.已知函数) f满足: (x x0.0 0.1 0.195 0.3 0.401 0.5 f(0.39894 0.39695 0.39142 0.38138 0.36812 x ) 0.35206 (1)用分段线性插值; 打开MATLAB,按以下程序输入: x0=-5:5; y0=1./(1+x0.^2); x=-5:0.1:5; y=1./(1+x.^2); y1=lagr(x0,y0,x); y2=interp1(x0,y0,x); y3=spline(x0,y0,x);

for k=1:11 xx(k)=x(46+5*k); yy(k)=y(46+5*k); yy1(k)=y1(46+5*k); yy2(k)=y2(46+5*k); yy3(k)=y3(46+5*k); end [xx;yy;yy2;yy3]' z=0*x; plot(x,z,x,y,'k--',x,y2,'r') plot(x,z,x,y,'k--',x,y1,'r') pause plot(x,z,x,y,'k--',x,y3,'r') 回车得以下图形:

(2) 拉格朗日插值。 创建M 文件,建立lagr 函数: function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 新建一个M 文件,输入: x0=[0.0 0.1 0.195 0.3 0.401 0.5]; y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; x=0.0:0.01:0.5; y1=lagr1(x0,y0,x); 00.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

数值计算方法在人工计算智能学中的应用实例.

浅论计算智能中的计算方法 连德忠(龙岩班) 前言: 随着计算机普及和应用程度的提高,人工智能学的应用前景被各方有识之士普遍看好。人工智能的目标一直就是模拟人类智能,目前,研究人工智能有两条途径。一方面,有许多科学家,尤其是一些神经生物学家试图从生理上研究人脑,及其各部件的关系,一旦摸清了大脑工作机制,就可以利用高度发展的光、电子以及生物器件构筑类似的结构。但是,这种自然智能理论方面的研究举步维艰,离真正理解人脑复杂而庞大的神经网络及其工作方式还有很长的距离。 另外一方面,科学家们从功能实现的角度入手,利用已有的计算工具去实现人脑的功能,取得了许多成果,并让世人能够领略人工智能的魅力。这就是近年来,在人工智能学中包含的另一个很有前途的研究方向——计算智能(CI,Computational Intelligence) 一计算智能的内涵: 对人类而言,智能是知识集合与智力的合称,是指人类认识客观事物并运用知识解决实际问题的能力。它集中表现在反映客观事物深刻、正确、完全的程度,以及运用知识解决实际问题的速度和质量上,往往通过观察、判断、联想、创造等表现出来。牛津现代高级英语词典将之定义为学习、理解和推理的能力。生物智能表现了人类智力活动的一般特征,包括生物智能的目的性、综合性及学习扩展性。这些方面看似简单,实则相当复杂,以致难以入手研究。比如人类对自己

的视觉机理到现在也只是了解了一小部分,关于视皮层如何分析视觉信号,人类仍知之甚少。然而科学并未因此而停滞不前,它总是在可以突破的地方首先契入进去。 我们今天谈论人工智能时,通常是指狭义的人工智能,也就是传统的基于符号推理的人工智能技术,其主要目标是应用符号逻辑的方法模拟人的问题求解、推理、学习等方面的能力。这好像有点违背常理,通常人们认为类似下棋、诊断、推理公式等事情只有专家才能做到尽善尽美,为什么计算机反而容易模仿呢?原因就在于这些事情可以符号化,可以精确量化,可以在串行的Von Neumann型计算机上运行;相反,对于人类在日常生活中辨认人物、听懂语音等这些具有Common-sense性质的事情,计算机却很难做到。研究表明,这些事情涉及复杂的计算概念及过程,虽然计算机运算速度高于人脑,但是人脑是由1000亿神经元互连后并行计算的,其效率和质量远远高于计算机。 所以近年来,在原有的人工智能学的基础上,又诞生了另一个重要的研究方向——计算智能。1994年6月,IEEE召开了一次规模空前的CI大会,论文总数超过1600篇。CI中包含了许多基于数值计算方法的智能计算方法,这些方法在模拟人脑的联想、记忆、发散思维、非线性推理、模糊概念等传统人工智能难以胜任的方面表现优异,并受到人们的广泛关注。计算智能方法也得到越来越多学者的研究和完善,并与传统的人工智能技术互相交叉、取长补短,使得人工智能研究与应用呈现出向上的发展趋势。相信随着计算工具、计算智能方法的日趋完善,具有真正意义的智能机器终会走入我们的工作与生活。

相关文档
最新文档