文档库 最新最全的文档下载
当前位置:文档库 › 数值分析第四版MathematicaEuler法程序

数值分析第四版MathematicaEuler法程序

数值分析第四版MathematicaEuler法程序
数值分析第四版MathematicaEuler法程序

第五章:常微分方程Euler解法程序

方法一:Euler法

a=0;b=1;x0=0;y0=1;h=0.1;Na=(b-a)/h;f[x_,y_]:=y-2*x/y;t={} ;

For[n=1,n<=Na,n++,y1=y0+h*f[x0,y0];x1=x0+h;Print[x1," ",y1,"

",Sqrt[1+2*x1]];x0=x1;y0=y1;AppendTo[t,{x1,y1}];];g1=List Plot[t,PlotStyle→{RGBColor[1,0,1]} ];

g2=Plot[Sqrt[1+2*x],{x,0,1}];Show[g1,g2]

0.1__1.1_ 1.09545

0.2__1.19182 1.18322

0.3__1.27744__1.26491

0.4__1.35821__1.34164

0.5__1.43513__1.41421

0.6__1.50897__1.48324

0.7__1.58034__1.54919

0.8__1.64978__1.61245

0.9__1.71778__1.67332

1.__ 1.78477__ 1.73205

后退的Euler法:

a=0;b=1;x0=0;y0=1;h=0.1;Na=(b-a)/h;f[x_,y_]:=y-2*x/y;t={} ;

For[n=1,n<=Na,n++,x1=x0+h;y1=y0+h*f[x0,y0];y1=y0+h*f[x1,y 1];Print[x1," ",y1,"

",Sqrt[1+2*x1]];x0=x1;y0=y1;AppendTo[t,{x1,y1}];] ; g1 = ListPlot [ t , PlotStyle→{RGBColor[1,0,1]} ] ;

g2=Plot[Sqrt[1+2*x],{x,0,1}];Show[g1,g2]

0.1__1.09182__1.09545

0.2__1.17626__1.18322

0.3__1.25463__1.26491

0.4__1.32781__1.34164

0.5__1.39643__1.41421

0.6__1.46094__1.48324

0.7__1.52162__1.54919

0.8__1.57864__1.61245

0.9__1.63208__1.67332

改进的Euler法:

a=0;b=1;x0=0;y0=1;h=0.1;Na=(b-a)/h;f[x_,y_]:=y-2*x/y;t={} ;

For[n=1,n<=Na,n++,y1=y0+h*f[x0,y0];x1=x0+h;y1=y0+h*(f[x0, y0]+f[x1,y1])/2;Print[x1," ",y1,"

",Sqrt[1+2*x1]];x0=x1;y0=y1;AppendTo[t,{x1,y1}]; ];

g1=ListPlot[t,PlotStyle {RGBColor[1,0,1]}];

g2=Plot[Sqrt[1+2*x],{x,0,1}];

Show[g1,g2]

Euler二步法:

a=0;b=1;x0=0;y0=1;h=0.1;Na=(b-a)/h;f[x_,y_]:=y-2*x/y;p1=0 ;c1=0;x1=x0+h;y1=y0+h*(f[x0,y0]+f[x1,y0+h*f[x0,y0]])/2;t= {};

For[n=1,n<=Na,n++,x1=x0+h;

y2=y0+2*h*f[x1,y1];

p2=y2-4*(p1-c1)/5;

c2=y1+h*(f[x1,y1]+f[x1+h,p2])/2;

y2=c2+(y2-c2)/5;

Print[x1+h," ",y2," ",Sqrt[1+2*(x1+h)]];

x0=x1;y0=y1;y1=y2;p1=p2;c1=c2;AppendTo[t,{x1,y1}]; ];

g1=ListPlot[t,PlotStyle {RGBColor[1,0,1]}]; g2=Plot[Sqrt[1+2*(x+h)],{x,0,1}];

Show[g1,g2]

0.2__1.18358__1.18322

0.3__1.26537__1.26491

0.4__1.34211__1.34164

0.5__1.41479__1.41421

0.6__1.48387__1.48324

0.7__1.54996__1.54919

0.8__1.61332__1.61245

0.9__1.67436__1.67332

1.__1.73326__1.73205

1.1__1.79029__1.78885

数值分析之幂法及反幂法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 λ分别为模最大特征值与模最小特征值。

数值计算方法比较

有限差分方法(FDM:Finite Difference Method)是计算机数值模拟最早采用的方法,至今仍被广泛运用。该方法将求解域划分为差分网格,用有限个网格节点代替连续的求解域。有限差分法以Taylor级数展开等方法,把控制方程中的导数用网格节点上的函数值的差商代替进行离散,从而建立以网格节点上的值为未知数的代数方程组。有限差分法主要集中在依赖于时间的问题(双曲型和抛物型方程)。有限差分法方面的经典文献有Richtmeyer & Morton的《Difference Methods for Initial-Value Problems》;R. LeVeque《Finite Difference Method for Differential Equations》;《Numerical Methods for C onservation Laws》。 注:差分格式: (1)从格式的精度来划分,有一阶格式、二阶格式和高阶格式。 (2)从差分的空间形式来考虑,可分为中心格式和逆风格式。 (3)考虑时间因子的影响,差分格式还可以分为显格式、隐格式、显隐交替格式等。 目前常见的差分格式,主要是上述几种形式的组合,不同的组合构成不同的差分格式。差分方法主要适用于有结构网格,网格的步长一般根据实际地形的情况和柯朗稳定条件来决定。 构造差分的方法: 构造差分的方法有多种形式,目前主要采用的是泰勒级数展开方法。其基本的差分表达式主要有三种形式:一阶向前差分、一阶向后差分、一阶中心差分和二阶中心差分等,其中前两种格式为一阶计算精度,后两种格式为二阶计算精度。通过对时间和空间这几种不同差分格式的组合,可以组合成不同的差分计算格式。 有限差分法的不足:由于采用的是直交网格,因此较难适应区域形状的任意性,而且区分不出场函数在区域中的轻重缓急之差异,缺乏统一有效的处理自然边值条件和内边值条件的方法,难以构造高精度(指收敛阶)差分格式,除非允许差分方程联系更多的节点(这又进一步增加处理边值条件韵困难)。另外它还有编制不出通用程序的困难。 有限差分法的优点:该方法是一种直接将微分问题变为代数问题的近似数值解法,数学概念 直观,表达简单,精度可选而且在一个时间步内,对于一个给定点来说其相关的空间点只是 与该相邻的几点,而不是全部的空间点。是发展较早且比较成熟的数值方法 广义差分法(有限体积法)(GDM:Generalized Difference Method):1953年,Mac—Neal 利用积分插值法(也称积分均衡法)建立了三角网格上的差分格 式,这就是以后通称的不规划网格上的差分法.这种方法的几何误差小,特别是给出了处理自然边值条件(及内边值条件)的有效方法,堪称差分法的一大进步。1978年,李荣华利用有限元空间和对偶单元上特征函数的推广——局部Taylor展式的公项,将积分插值法改写成广义Galerkin法形式,从而将不规则网格差分法推广为广义差分法.其基本思路是,将计算区域划分为一系列不重复的控制体积,并使每个网格点周围有

数值分析所有代码

实验一:拉格朗日插值多项式 命名(源程序.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; } } }

演讲稿数值分析应用实例.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

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

数值分析(计算方法)总结

第一章绪论 误差来源:模型误差、观测误差、截断误差(方法误差)、舍入误差 是的绝对误差,是的误差,为的绝对误差限(或误差限) 为的相对误差,当较小时,令 相对误差绝对值得上限称为相对误差限记为:即: 绝对误差有量纲,而相对误差无量纲 若近似值的绝对误差限为某一位上的半个单位,且该位直到的第一位非零数字共有n位,则称近似值有n位有效数字,或说精确到该位。 例:设x==…那么,则有效数字为1位,即个位上的3,或说精确到个位。 科学计数法:记有n位有效数字,精确到。 由有效数字求相对误差限:设近似值有n位有效数字,则其相对误差限为 由相对误差限求有效数字:设近似值的相对误差限为为则它有n位有效数字 令 1.x+y近似值为和的误差(限)等于误差(限)的 和 2.x-y近似值为 3.xy近似值为 4. 1.避免两相近数相减 2.避免用绝对值很小的数作除数 3.避免大数吃小数 4.尽量减少计算工作量 第二章非线性方程求根 1.逐步搜索法 设f (a) <0, f (b)> 0,有根区间为(a, b),从x0=a出发,按某个预定步长(例如h=(b-a)/N)

一步一步向右跨,每跨一步进行一次根的搜索,即判别f(x k)=f(a+kh)的符号,若f(x k)>0(而 f(x k-1)<0),则有根区间缩小为[x k-1,x k] (若f(x k)=0,x k即为所求根), 然后从x k-1出发,把搜索步长再缩小,重复上面步骤,直到满足精度:|x k-x k-1|0.将[a0,b0]对分,中点x0= ((a0+b0)/2),计算 f(x0)。 3.比例法 一般地,设[a k,b k]为有根区间,过(a k, f(a k))、(b k, f(b k))作直线,与x轴交于一点x k,则: 1.试位法每次迭代比二分法多算一次乘法,而且不保证收敛。 2.比例法不是通过使求根区间缩小到0来求根,而是在一定条件下直接构造出一个点列(递推公式),使该点列收敛到方程的根。——这正是迭代法的基本思想。 事先估计: 事后估计 局部收敛性判定定理: 局部收敛性定理对迭代函数的要求较弱,但对初始点要求较高,即初始点必须选在精确解的附近 Steffensen迭代格式: Newton法: Newton下山法:是下山因子 弦割法: 抛物线法:令 其中:

数值分析的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')

数值分析在生活中的应用举例及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、拟合曲线如下图

数值分析实验报告

数值分析实验报告 姓名:周茹 学号: 912113850115 专业:数学与应用数学 指导老师:李建良

线性方程组的数值实验 一、课题名字:求解双对角线性方程组 二、问题描述 考虑一种特殊的对角线元素不为零的双对角线性方程组(以n=7为例) ?????????? ?????? ? ???? ?d a d a d a d a d a d a d 766 55 44 3 32 211??????????????????????x x x x x x x 7654321=?????????? ? ???????????b b b b b b b 7654321 写出一般的n (奇数)阶方程组程序(不要用消元法,因为不用它可以十分方便的解出这个方程组) 。 三、摘要 本文提出解三对角矩阵的一种十分简便的方法——追赶法,该算法适用于任意三对角方程组的求解。 四、引言 对于一般给定的d Ax =,我们可以用高斯消去法求解。但是高斯消去法过程复杂繁琐。对于特殊的三对角矩阵,如果A 是不可约的弱对角占优矩阵,可以将A 分解为UL ,再运用追赶法求解。

五、计算公式(数学模型) 对于形如????? ?? ????? ??? ?---b a c b a c b a c b n n n n n 111 2 2 2 11... ... ...的三对角矩阵UL A =,容易验证U 、L 具有如下形式: ??????? ????? ??? ?=u a u a u a u n n U ...... 3 3 22 1 , ?? ????? ? ?? ??????=1 (1) 1132 1l l l L 比较UL A =两边元素,可以得到 ? ?? ??-== = l a b u u c l b u i i i i i i 111 i=2, 3, ... ,n 考虑三对角线系数矩阵的线性方程组 f Ax = 这里()T n x x x x ... 2 1 = ,()T n f f f f ... 2 1 = 令y Lx =,则有 f Uy = 于是有 ()?????-== --u y a f y u f y i i i i i 1 1 11 1 * i=2, 3, ... ,n 再根据y Lx =可得到

数值计算方法大作业

目录 第一章非线性方程求根 (3) 1.1迭代法 (3) 1.2牛顿法 (4) 1.3弦截法 (5) 1.4二分法 (6) 第二章插值 (7) 2.1线性插值 (7) 2.2二次插值 (8) 2.3拉格朗日插值 (9) 2.4分段线性插值 (10) 2.5分段二次插值 (11) 第三章数值积分 (13) 3.1复化矩形积分法 (13) 3.2复化梯形积分法 (14) 3.3辛普森积分法 (15) 3.4变步长梯形积分法 (16) 第四章线性方程组数值法 (17) 4.1约当消去法 (17) 4.2高斯消去法 (18) 4.3三角分解法 (20)

4.4雅可比迭代法 (21) 4.5高斯—赛德尔迭代法 (23) 第五章常积分方程数值法 (25) 5.1显示欧拉公式法 (25) 5.2欧拉公式预测校正法 (26) 5.3改进欧拉公式法 (27) 5.4四阶龙格—库塔法 (28)

数值计算方法 第一章非线性方程求根 1.1迭代法 程序代码: Private Sub Command1_Click() x0 = Val(InputBox("请输入初始值x0")) ep = Val(InputBox(请输入误差限ep)) f = 0 While f = 0 X1 = (Exp(2 * x0) - x0) / 5 If Abs(X1 - x0) < ep Then Print X1 f = 1 Else x0 = X1 End If Wend End Sub 例:求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)

1.2牛顿法 程序代码: Private Sub Command1_Click() b = Val(InputBox("请输入被开方数x0")) ep = Val(InputBox(请输入误差限ep)) f = 0 While f = 0 X1 = x0 - (x0 ^ 2 - b) / (2 * b) If Abs(X1 - x0) < ep Then Print X1 f = 1 Else x0 = X1 End If Wend End Sub 例:求56的值。(ep=10-10)

数值分析编程题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 =+?++?+-?-

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

《数值分析》课程设计

本课程设计的内容为:每个小组的同学均应完成以下五个案例; 目标:能将数值分析课程中所学的算法知识熟练应用于实际问题中。 案例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 =代表平衡状态时该物质的浓度。假定反应开始时各种物质的浓度为:

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 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);

数值分析——编程作业..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) 旺=味蛋二

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和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;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

数值计算方法》试题集及答案

《计算方法》期中复习试题 一、填空题: 1、已知3.1)3(,2.1)2(,0.1)1(===f f f ,则用辛普生(辛卜生)公式计算求得 ?≈3 1 _________ )(dx x f ,用三点式求得≈')1(f 。 答案:2.367,0.25 2、1)3(,2)2(,1)1(==-=f f f ,则过这三点的二次插值多项式中2 x 的系数为 ,拉 格朗日插值多项式为 。 答案:-1, )2)(1(21 )3)(1(2)3)(2(21)(2--------= x x x x x x x L 3、近似值*0.231x =关于真值229.0=x 有( 2 )位有效数字; 4、设)(x f 可微,求方程)(x f x =的牛顿迭代格式是( ); 答案 )(1)(1n n n n n x f x f x x x '--- =+ 5、对1)(3 ++=x x x f ,差商=]3,2,1,0[f ( 1 ),=]4,3,2,1,0[f ( 0 ); 6、计算方法主要研究( 截断 )误差和( 舍入 )误差; 7、用二分法求非线性方程 f (x )=0在区间(a ,b )内的根时,二分n 次后的误差限为 ( 1 2+-n a b ); 8、已知f (1)=2,f (2)=3,f (4)=5.9,则二次Newton 插值多项式中x 2系数为( 0.15 ); 11、 两点式高斯型求积公式?1 d )(x x f ≈( ?++-≈1 )] 321 3()3213([21d )(f f x x f ),代数精度 为( 5 ); 12、 为了使计算 32)1(6 )1(41310-- -+-+ =x x x y 的乘除法次数尽量地少,应将该表达 式改写为 11 ,))64(3(10-= -++=x t t t t y ,为了减少舍入误差,应将表达式1999 2001-

数值分析实验报告

实验一、误差分析 一、实验目的 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

数值分析 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.wendangku.net/doc/af18642429.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)

数值计算实例

数值计算 插值 假设需要得到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--') 解线性方程组的直接法

数值分析2016上机实验报告

序言 数值分析是计算数学的范畴,有时也称它为计算数学、计算方法、数值方法等,其研究对象是各种数学问题的数值方法的设计、分析及其有关的数学理论和具体实现的一门学科,它是一个数学分支。是科学与工程计算(科学计算)的理论支持。许多科学与工程实际问题(核武器的研制、导弹的发射、气象预报)的解决都离不开科学计算。目前,试验、理论、计算已成为人类进行科学活动的三大方法。 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。现在面向数值分析问题的计算机软件有:C,C++,MATLAB,Python,Fortran等。 MATLAB是matrix laboratory的英文缩写,它是由美国Mathwork公司于1967年推出的适合用于不同规格计算机和各种操纵系统的数学软件包,现已发展成为一种功能强大的计算机语言,特别适合用于科学和工程计算。目前,MATLAB应用非常广泛,主要用于算法开发、数据可视化、数值计算和数据分析等,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 本实验报告使用了MATLAB软件。对不动点迭代,函数逼近(lagrange插值,三次样条插值,最小二乘拟合),追赶法求解矩阵的解,4RungeKutta方法求解,欧拉法及改进欧拉法等算法做了简单的计算模拟实践。并比较了各种算法的优劣性,得到了对数值分析这们学科良好的理解,对以后的科研数值分析能力有了极大的提高。

目录 序言 (1) 问题一非线性方程数值解法 (3) 1.1 计算题目 (3) 1.2 迭代法分析 (3) 1.3计算结果分析及结论 (4) 问题二追赶法解三对角矩阵 (5) 2.1 问题 (5) 2.2 问题分析(追赶法) (6) 2.3 计算结果 (7) 问题三函数拟合 (7) 3.1 计算题目 (7) 3.2 题目分析 (7) 3.3 结果比较 (12) 问题四欧拉法解微分方程 (14) 4.1 计算题目 (14) 4.2.1 方程的准确解 (14) 4.2.2 Euler方法求解 (14) 4.2.3改进欧拉方法 (16) 问题五四阶龙格-库塔计算常微分方程初值问题 (17) 5.1 计算题目 (17) 5.2 四阶龙格-库塔方法分析 (18) 5.3 程序流程图 (18) 5.4 标准四阶Runge-Kutta法Matlab实现 (19) 5.5 计算结果及比较 (20) 问题六舍入误差观察 (22) 6.1 计算题目 (22) 6.2 计算结果 (22) 6.3 结论 (23) 7 总结 (24) 附录

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