高频课设资料3篇(高频课程设计)

时间:2022-12-25 11:14:24 综合范文

  下面是范文网小编整理的高频课设资料3篇(高频课程设计),供大家品鉴。

高频课设资料3篇(高频课程设计)

高频课设资料1

  武汉理工大学《Matlab课程设计》课程设计说明书

  目录

  摘要.............................................................................................2

  一、Matlab运算与应用............................................................3 .........................................................................................3 .........................................................................................3

  二、Matlab运算与应用设计题目分析....................................4 .........................................................................................4 .........................................................................................5 .........................................................................................6 .........................................................................................7 .......................................................................................13 .......................................................................................14 .......................................................................................15 .......................................................................................17 .......................................................................................19 .....................................................................................22

  三、matlab课程设计心得体会..............................................23 参考文献...................................................................................23

  武汉理工大学《Matlab课程设计》课程设计说明书

  摘要

  MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

  Matlab和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。Matlab可以经行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

  本次课程设计主要通过学习了解Matlab,熟悉Matlab界面、进行简单操作,并运用此款软件完成安排的相关题目。

  关键字:Matlab、课程设计、矩阵实验室

  武汉理工大学《Matlab课程设计》课程设计说明书

  一、Matlab运算与应用

  理论分析

  Matlab是MathWorks公司的产品,是一个为科学和工程计算而专门设计的高级交互式放的软件包。Matlab环境集成了图示与精确的数值计算,是一个可以完成各种计算和数据处理可视化的、强有力的、易于使用和理解的工具。Matlab已被证明是为解决数学、物理、化学、工程、医药、金融和其他涉及复杂数值计算的应用领域的一个十分灵活的、便于使用的工具,也是数学、数值分析和工程等课程教学的一个优秀的教育工具。这个程序被世界各地高等学院广泛使用,在工业应用中也很流行,Matlab使用于PC到超级计算机以及大多数诸如PC、Macintosb和UNIX等平台。

  Matlab中有大量的命令集和可用函数集,也通称为Matlab M文件,这是应用更加容易。因此,在Matlab中求解问题通常比传统编程快得多,由于是采用自然表示法,因而使代码清晰和自释。因为多数M文件是公开的,因此,易于修改这些函数。

  Matlab中有一些命令可以用来控制Matlab语句的执行,如条件语句、循环语句和支持用户交互的命令。Matlab是一种高级的程序设计语言,能帮助用户解决矩阵户或其它问题。

  归纳与总结

  Matlab的主要特点是:

(1)有高性能数值计算的高级算法,特别适合矩阵代数领域;(2)有大量事先定义的数学函数,并具有用户自定义函数的能力;(3)绘图和显示数据,并具有教育、科学和艺术学的图解和可视化的二维、三 维图;

(4)基于HTML的完全帮助系统;

(5)适合个人应用的强有力的面向矩阵/向量的高级程序设计语言;(6)与用其他语言编写的程序结合和输入输出格式化的能力;

  武汉理工大学《Matlab课程设计》课程设计说明书

(7)有在多个应用领域解决难题的工具箱。

  MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。

  二、Matlab运算与应用设计题目分析

  已知t=linspace(0,2*pi,6),求t的正弦和正弦的绝对值。

  理论分析

  由题目已知分析知,linspace(a,b,n)为线性分割函数,在a与b之间均匀地产生n个点值,行成n维向量。Matlab中求解正弦的函数为sin(),求取绝对值和复数模值的函数为abs()。

  程序代码

>> t=linspace(0,2*pi,6)%创建线性间隔向量t,范围从0到2pi,元素 个数为6 >> a=cos(t)%对向量t求得余弦向量a >> b=abs(a)%对余弦向量a求绝对值得绝对值向量b 运行结果

  a =

b =

  武汉理工大学《Matlab课程设计》课程设计说明书

  题目总结

  为了方便给大量元素赋值,Matlab提供了一些基本矩阵,Linspace()就是其中的均分向量函数命令,大部分的Matlab函数都适用于做元素群运算,只有专门的几个除外,那就是*、/、、^运算符和sqrtm、expm、logm三个函数。题目中用到的正弦函数sin()和取绝对值函数abs()均可用于元素群运算,也即其自变量都可以是任意阶的矩阵。

  绘制余弦曲线y=cos(x)和指数函数y=x^2曲线。

  理论分析

  本题是画函数的曲线图,可以利用plot,ezplot等命令进行绘图。也可以用funtool命令直接绘制函数图象。由于plot要设置自变量的范围,而ezplot不需要设置,所以本题采用ezplot进行画图。

  程序代码:

  syms x;%声明变量

  y1=cos(x);%将cos(s)赋值给y1 y2=x^2;% 将x^2赋值给y2 ezplot(y1);%画函数1图 hold on

  grid on %保持图形 %画方格

  ezplot(y2)%画函数2图

  运行结果

  武汉理工大学《Matlab课程设计》课程设计说明书

  图 题目总结

  ezplot功能简介:

  eZPLOT即:Easy to use function plotter。它是一个易用的一元函数绘图函数。特别是在绘制含有符号变量的函数的图像时,ezplot要比plot更方便。因为plot绘制图形时要指定自变量的范围,而ezplot无需数据准备[2],直接绘出图形。要将两个函数绘制到同一个图上要使用hold on 命令。

  利用for...end循环语句,求 2+4+6…+100 的值。

  理论分析

  for语句作用是按照预先设定的循环步骤重复执行某语句段, 其语法: for 循环控制变量=存储着该变量依次所取值的一个向量。

  循环语句块, 本块重复执行的次数由上方向量的长度决定, 每次执行, 循

  武汉理工大学《Matlab课程设计》课程设计说明书

  环控制变量依次取该向量中的值.end

  程序代码

  sum=0;%赋初值sum为0

  for i=2:2:100 %变量i变化范围为2到100,以2步进 sum=sum + i;%累加求和 end %结束for循环

  运行结果

>> sum sum =

  2550 题目总结

  Matlab的for 循环语句有其独有的特点, 它使用一个向量来控制循环, 循环次数由向量的长度来决定, 而每次循环都依次从向量中取值.这使得Matlab循环更灵活多样, 其循环变量取值可以不按照特定的规律;但是另一方面, Matlab 的for循环也有独特的限制, 当次循环中改变循环变量赋值, 不会代入下次循环, 所以除非在其中用break提前退出, Matlab循环的次数是预先定好的.举个例子: for a=1:2:7 , 将循环4次, a的取值依次是1, 3, 5, 分析下面每条指令的功能并运行,观察执行结果。

(1)X=0::3;Y=X.*exp(-X);plot(X,Y),xlabel(‘x’),武汉理工大学《Matlab课程设计》课程设计说明书

  ylabel(‘y’),title(‘y=x*exp(-x)’);

(2)A=zeros(3,5)A(:)=-4:5 L=abs(A)>4 islogical(L)X=A(L)

(3)A=[1:5;6:10] pow2(A)

(4)A=zeros(3,2)A(:)=1:6 A=A*(1+i)A1=A.’;B1=A’;(5)A=ones(2,3)B=ones(2)C=eye(4)D=diag(C)E=repmat(C,1,3)程序分析

? X=0::3;%变量x的取值范围为0 ~3,以增加 Y=X.*exp(-X);%函数y=xe?x的表达式

  plot(X,Y),xlabel(‘x’), ylabel(‘y’),title(‘y=x*exp(-x)’);

%绘制y=xe?x的图线,横坐标为x,纵坐标为y,标题为

  y=x*exp(-x)? A=zeros(3,5)%创建一个3*5的零矩阵A A(:)=-4:5 %为矩阵A赋值,得到列向量范围为-4到5,步进为1 L=abs(A)>4 %判断矩阵A的绝对值是否大于4

  武汉理工大学《Matlab课程设计》课程设计说明书

  islogical(L)%判断L是否为逻辑值

  X=A(L)%X为逻辑数组L对应为1的位置的数据为列向量 ? A=[1:5;6:10] %创建一个2*5的矩阵A,范围为1到10,步进为1 pow2(A)%返回数组X,依次计算A中元素以2为底的幂 ? A=zeros(3,2)%创建一个3*2的零矩阵 A(:)=1:6 %为矩阵A赋值,范围为1到6,步进为1 A=A*(1+i)%将矩阵A中的每一个元素乘以(1+i)A1=A.' %对A进行数组转置生成矩阵A1 B1=A' %对A进行矩阵转置生成矩阵B1 ? A=ones(2,3)%创建一个2*3的1矩阵A B=ones(2)%创建一个2*2的1矩阵B C=eye(4)%创建一个4*4的单位矩阵C D=diag(C)%获取单位矩阵C的对角线元素矩阵D E=repmat(C,1,3)%将矩阵C生成为1*3的新矩阵E

  运行结果

  程序运行结果一

  图

  程序运行结果二

  a =

  武汉理工大学《Matlab课程设计》课程设计说明书

  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

  a =

-4-1 2 5 8-3 0 3 6 9-2 1 4 7 10

  L =

  0 0 0 1 1 0 0 0 1 1 0 0 0 1 1

  ans = 1

  X = 5 6

  武汉理工大学《Matlab课程设计》课程设计说明书

8 9 10

  程序运行结果三

>> pow2(A)

  ans =

64 128 256 512 1024 程序运行结果四

>> A1=A.'

  a1 =

  0 + 0 + 0 +

  0 + 0 + 0 + >> B1=A'

  B1 =

11

  武汉理工大学《Matlab课程设计》课程设计说明书

  程序运行结果五

>> A=ones(2,3)A =

  1 1 1 1 1 >> B=ones(2)B =

  1 1 1 >> C=eye(4)C =

  0 0 0

  0 1 0 0

  0 0 1 0 0 0 0 1 >> D=diag(C)D =

1

  武汉理工大学《Matlab课程设计》课程设计说明书

>> E=repmat(C,1,3)E = 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 题目总结

  对于实数矩阵,矩阵转置和数组矩阵计算结果是一样的,但是对于复数矩阵,数组转置和矩阵转置的计算结果不一致。所以,对于数组转置运算也被称为非共轭转置,矩阵转置运算则被称为共轭矩阵。数组的运算是指数组对应元素之间的运算,也称点运算。

  计算多项式p(x)= x3+15x2+8x在x=3和x=0:1:8时的值。

  理论分析

  由题目已知的条件分析可知是运用MATLAB计算多项式。这里运用到的是polyval()命令。通过polyval()命令可以快速的计算出在相应值下的多项式的值。

  程序代码

  X=3;y= x^3+15.*x^2+8.*x 式

%赋初值3给x %写出函数表达

  武汉理工大学《Matlab课程设计》课程设计说明书

? clear all %清除所有变量 >> syms x;%声明变量x >> y=x^3+15.*x^2+8.*x;%写出函数表达式

>> x=0:1:8;%生成一个0到8的数组,每相邻两数间间隔为1 >> p=[1 15 8];%将函数表达式的系数放在数组P中 >> polyval(p,x)%用polyval函数求得表达式的值

  运行结果

  X=3时

  186 X=0:1:8时 y =

  题目总结

  Matlab为用户提供了解决多项式运算的和插值的函数库,ployval()就是其中的多项式求值函数。在表达多项式系数中要把缺少的自变量系数0补充到系数矩阵中。

  随机生成一个×3的矩阵,并绘制其柱状图

  理论分析

  随机生成矩阵函数可以用rand(M,N),表示随机产生一个M*N的矩阵。柱状绘图函数可以用bar,此函数是在平面内绘制柱状图,如果要绘制立体的,用bar3。

  武汉理工大学《Matlab课程设计》课程设计说明书

  程序代码

  arry=rand(,3);

%随机生成一个*3的矩阵

  Bar(arry)%bar函数用于绘制柱状图 %画出柱状图

  运行结果

  图

  利用switch…case编写以下程序:

  某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):

  price<200 无折扣 200?price<500 5%折扣 500?price<1000 10%折扣 Price?1000 15%折扣 输入所售商品的价格,求其实际销售价格。

  武汉理工大学《Matlab课程设计》课程设计说明书

  理论分析

  MATLAB语言为解决多分支判断选择提供了switch-case语句。switch-case语句的一般表达形式为: switch〈选择判断量〉 Case 选择判断值1 选择判断语句1 case 选择判断值2 选择判断语句2 …… otherwise 判断执行语句

  程序代码

  price = input();

%输入商品价格

  switch fix(price/100)%价格除以100后取整 case {0,1} price=price*1;case {2,3,4} price=price*;case {5,6,7,8,9} price=price*;case others price=price*;end 16

  武汉理工大学《Matlab课程设计》课程设计说明书

  运行结果

  题目总结

  与其他的程序设计语言的switch-case语句不同的是,在MATLAB语言中,当其中一个case语句后的条件为真时,switch-case语句不对其后的case语句进行判断,也就是说在MATLAB语言中,即使有多条case判断语句为真,也只执行所遇到的第一条为真的语句。这样就不必像C语言那样,在每条case语句后加上break语句以防止继续执行后面为真的case条件语句。

  编程将表达式

  10(s?3)s(s-6)(s-16)进行部分分式展开

  理论分析

  计算模型

  10(s?3)s(s-6)(s-16)=k1s?k2s?6?k3s?16

  武汉理工大学《Matlab课程设计》课程设计说明书

  k1?10(s?3)(s?6)(s?16)10(s?3)s(s?16)10(s?3)s(s?6),s=0;k2?,s=6;k3?,s=16。

  程序代码

  clear,close all;syms x,x=0;syms s;

  while x<20 %判断当x<20 时 switch x

  case 0

%清除所以变量和关闭所有打开的图像框

  k1=10*(x+3)/((x-6)*(x-16));

  X=6;

  case 6

  k2=10*(x+3)/(x*(x-16));

  X=16;

  case 16

  k3=10*(x+3)/(x*(x-6));

  X=20;end end

  y=k1/s+k2/(s-6)+k3/(s-16);

%将计算出的k1、k2、k3带入表达式

  武汉理工大学《Matlab课程设计》课程设计说明书

  运行结果

  题目总结

  本题主要在于数学运算模型建立和计算表达式的书写,利用while…end语句对其

  进行三次循环条件判断并计算三个常数,通过switch…end语句分别给出三个常数的计算表达式,最后再将计算出的三个常数带入到

  10(s?3)s(s-6)(s-16)=

  k1s?k2s?6?k3s?16中即可。

  已知y?e出曲线图-1cos(t),其中t的范围是[0 10],计算y的微分和积分并给理论分析

  已知函数方程和自变量t的变化范围,对于积分,可以利用函数quad()对确定自变量变化范围进行计算,格式如quad('函数名',初值,终值)所示。对于微分,可以利用函数diff()对确定自变量变化范围进行计算。函数图象可用funtool指令得到。

  程序代码

  积分运算 yt='exp(-1)*cos(t)'

%写出函数表达式

  ic=quad(yt,0,10,1e-8)%用quad函数求积分 Funtool %进行画图 微分运算

  syms t y

  武汉理工大学《Matlab课程设计》课程设计说明书

  y=(exp(-1)*cos(t)dydt=diff(y,t)%用diff函数求解微分 funtool %进行画图

  运行结果

  积分运算

程序运行结果

  ic =

-

  积分图形

  图 20

  武汉理工大学《Matlab课程设计》课程设计说明书

  微分运算

  程序运行结果

  dydt =

-(****sin(t))/***8 微分图形

  图。

  题目总结

  绘制函数图像时还可以借助Matlab提供的专门绘制函数图象的指令flot(),格式如flot('函数名',[初值,终值])。

  武汉理工大学《Matlab课程设计》课程设计说明书

用fminbnd求解函数f(x)?x?1/x?5在区间(1,10)上的最小值

  理论分析

  用于求某个给定函数的最小值点。使用方法是: x=fminbnd(func,x1,x2)func是函数句柄,然后x1和x2就是函数的区间,得到的结果就是使func取最小值的x值

  当然也可以使用[x,fv]=fminbnd(func,x1,x2)的方式,这个时候fv就是函数 的最小值,即有:fv=f(x)程序代码

  f=@(x)x-1/x+5;%确定函数 [x,fv]=fminbnd(f,1,10)

%求区间1到10中函数的最小值

  运行结果

  X =

  fv =

题目总结

  本题主要在于fminbnd函数的使用方法,它有两种方式,一种是 x=fminbnd(func,x1,x2);另一种是[x,fv]=fminbnd(func,x1,x2)。运用时随便选哪种都可以,但是如果在某个区间上是单调的,结果就有点意思了,例如clear

>> f=@(x)x^-2*x-3;

  武汉理工大学《Matlab课程设计》课程设计说明书

>> [x,fv]=fminbnd(f,2,3)

  X =

  fv =- 看样子MATLAB是使用了定长小区间的方式计算的,而且结果也是错误的,这不免

  让人对这个函数的可靠性产生怀疑…

  三、matlab课程设计心得体会

  这次Matlab课程设计使用了Matlab2010版本,虽然对它熟悉不过短短一个月左右时间,但也感受和学习到它的功能强大、可扩展性强和智能化程度高。它提供了丰富的操作指令,还有强大而又简单的作图功能。而且软件本身还提供了演示(demo)和求助(help)的命令,让用户更好的学习到软件的功能。此次课程设计学习到的不仅仅是软件运用操作的知识,还学到了更多的学习方法。为了做好这次的课程设计,我查阅了大量的资料,并上网搜索了很多Matlab程序应用的教程和详解,这个过程使我受益匪浅,发现了很多关于Matlab的论坛和学习网站,网上提供了很多关于Matlab学习的方法及其自学的方法,相信这些论坛和网站对于将来继续学习Matlab及其他方面的知识也都有很大的帮助。

  虽然在规定的时间内完成了老师所布置的所有题目,但还是觉得不免有些不足,由于时间的限制,对许多Matlab所运用到的只有仅仅只是有所了解,而并没有完全掌握,甚至可以说是只知其然,而不知其所以然。这是我认识到对于Matlab的学习任务还很艰巨,还有许多知识需要去了解,去深研。

  参考文献

【1】陈怀身.吴大正.高西全.Matlab及在电子信息课程中的应用[M].电子工业出版社 【2】朱习军.张宾.刘尊年.隋思连.Matlab信号与图像处理中的应用[M].电子工业出版社 【3】罗建军.Matlab教程[M].电子工业出版社.2005

  武汉理工大学《Matlab课程设计》课程设计说明书

【4】陈怀琛.Matlab及其在理工课程中的应用指南.2000 【5】张威.Matlab基础与编程入门.西安电子科技大学出版社

【5】 周开立.MATLAB基础及其应用教程.北京:北京大学出版社,2007.【5】 张智星.MAYLAB程序设计及应用.北京:清华大学出版社,2002.【5】 陈怀琛,吴大正,高西全.MATLAB及在电子信息课程中的应用.北京:电子工业出版社,2006.【5】 张琨.MATLAB 2010

  从入门到精通.北京:电子工业出版社,2011.

高频课设资料2

  1设计题目

  市区地表水水厂初步设计

  2设计原始资料

用水资料

(1)生活用水

  市区规划人口数30万人;给水普及率按88%考虑;设定房

  屋平均层数为6层。城市用水量较均匀,时变化系数为。

(2)工业用水

  假定该市有大型工业企业2家,用水量情况如下表所示:

  工业企业用水量情况统计表

  企业用水

  编号

  a

  B 厂名 钢铁厂 化工厂 水压 生产班制(时间)24 18 量(m3/d)(kg/cm2) 4000 注:上述各厂供水水质要求同生活用水。

(3)其他

  绿化浇洒道路每日以500m计。

  原水水质资料

  编号项目 色度 单位 度 分析结果 40 附注33 4 5 6 7 8 9 10 11

  sS 嗅和味 PH值 总硬度 溶解性总固体

  铁 锰 氟化物 细菌总数 大肠菌群

  Mg/L 度mg/L mg/L mg/L mg/L mg/L 个/L 个/L

  600 合格 480 760 / / 6000 800

  以CaCO3计

  地形地貌与地质

  按平坦地形设计,平均海拔高度在800米左右。

  工程地质良好,适宜于工程建设,地质构造一般皆为四层,耐压力在2kg/cm2以上;

高频课设资料3

  数值线性代数课程设计报告

  姓名:陶英 学号:0

  任课教师:杨熙

  南京航空航天大学

  2016 年 6 月 22日

  求解线性方程组的三种迭代法及其结果比较

  摘要

  当今的环境下,数值计算越来越依赖于计算机。大规模科学计算和工程技术中许多问题的解决,最终归结为大型稀疏线性方程组的求解,其求解时间在整个问题求解时间中占有很大的比重,有的甚至达到80%。由于现今科学研究和大型项目中各种复杂的可以对计算精度和计算速度的要求越来越高。因此,作为大规模科学计算基础的线性代数方程组的高效数值求解引起了人们的普遍关注。这种方程组的求解一般采用迭代法。

  关于迭代法,是有很多种解决公式的:Jacobi,G-S和超松弛迭代法。这三种方法的原理大致相同,Jacobi需要给定初向量,G-S则需要给定初值,超松弛法是对Guass-Seidel迭代法的加权平均改造。而本文则是对大型稀疏线性方程组迭代求解与三种迭代法(Jacobi,Gauss-Seidel和超松弛迭代法)的收敛速度与精确解的误差比较做出研究。

  关键词:Jacobi迭代法;Gauss-Seidel迭代法;SOR迭代法;线性方程组 方法与理论的叙述

  迭代法简介

  迭代法:

  对于非奇异线性方程组Ax=b,令A=D-L-U,其中

  则原方程组可改写为:

  其中

  给定初始向量:

  由()可以构造迭代公式:

  其分量形式为:

)(迭代法: 类似于Jacobi迭代法,给定初值:

  令

  则得到Guass-Seidel公式:

  其分量形式为:

  3.超松弛迭代法(SOR 迭代法):

  sOR迭代法是对Guass-Seidel迭代法的加权平均改造,即

  为Guass-Seidel迭代解,即

  它的分量形式为:

  其中ω称为松弛因子,当ω>1时称为超松弛;当ω<1时叫低松弛;ω=1时就是

  guass-Seidel迭代。

  上述三种经典迭代法收敛的充分必要条件是迭代矩阵谱半径小于1。

  谱半径不易求解,而在一定条件下,通过系数矩阵A的性质可判断迭代法的收敛性。定理1:

  若系数矩阵A是严格对角占优或不可约对角占优,则Jacobi迭代法和Gauss-Seidel迭代法均收敛。定理2:

(1)SOR迭代法收敛的必要条件是0

(2)若系数矩阵A严格对角占优或不可约对角占优且0

  问题

  考虑两点边值问题:

?d2ydy?a,0?a?1??2? dx?dx?y(0)?0,y(1)?1.??1?a(1?e?)?ax 容易知道它的精确解为:y??1/?1?ex为了将微分方程离散,把[0,1]区间n等分,令h=1/n,xi?ih,i?1,2,...n?1,得到差分方程

(??h)yi?1?(2??h)yi??yi?1?ah2,从而得到迭代方程组的系数矩阵A。

  对?=1,a=1/2,n=100,分别用jacobi,G-S,超松弛迭代法分别求线性方程组的解,要求4位有效数字,然后比较与精确解的误差。

  对?=,?=,?=,考虑同样问题。

  1.方程的表示及存储

  由于本题中线性方程组的系数矩阵为三对角矩阵,所以可以采用紧缩方法存储,即

  然后在矩阵乘法时对下标处理一下即可。但是考虑到三种迭代方法的一般性,且本题中n=200并不是很大,所以实验中并没有采用紧缩存储,而是采用了直接存储。2.边值条件的处理

  由于差分得到的方程组的第一行和最后一行中分别出现了边值y(0)与y(1)作为常数项,因此要在常向量的第一项和最后一项作一些修改:

  3.迭代终止条件

  首先确定要求的精度tol,我们希望当

  则停止迭代。对于迭代格式,若

  且,则迭代序列的

  第k 次近似解和精确解之间有估计式由题目要求知我们需要有

。,而由上面的迭代估计,只要,即取为,因此最后令迭代终止条件为

  即可。而本题中q可近似

迭代中最佳松弛因子的选取

  由于SOR 迭代法的效果和其松弛因子w的选取有关,所以有必要选取合适的松弛因子。当选择最佳松弛因子

  时,SOR 方法的迭代速度最快。

  Matlab实现:

  迭代矩阵是n-1阶的,不是n阶;

  等号右端向量b的最后一项,不是ah^2,而是ah^2-eps-h

  精确解

?1?ay?(1?e?)?ax ?1/?1?ex带入a=1/2,?=1 代码: >> clear >> x=linspace(0,1);truy=()/(1-exp(-1/1))*(1-exp(-x./1))+x.*;figure;plot(x,truy,'g','LineWidth',);hold on;Grid

  图:

  三种迭代法

  Jacobi法:代码见附录 Eps=1 结果:

  迭代次数k: 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

  eps= 结果:

  迭代次数k:8753 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

  eps= 结果:

  迭代次数k:661 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

  g-S迭代法:代码见附录 Eps=1 结果:

  迭代次数k: 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

  eps= 结果:

  迭代次数k:4394 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

  eps= 结果:

  迭代次数k:379 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

  超松弛法:代码见附录 Eps=1 w= 结果:

  迭代次数k:3503 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

  eps= w= 结果:

  迭代次数k:1369 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

  eps= w= 结果:

  迭代次数k:131 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)分析讨论及心得体会

  三种方法的比较

  Jacobi、G-S、超松弛法,三者都能够取得对精确解的良好逼近,但是,在相同的精度条件下,三者的收敛速度是不一样的,jacobi

  心得体会

  这次课程设计,平时感觉挺简单的那些枯燥单调的代码和数学公式,真正到了自己运用的时候却无从下手,但是,解决问题的过程恰是不断学习的过程:数学算法转换为代码的过程要对题目有深入的了解,然后对程序函数定义还要有一定的掌握能力,通过这个的过程让我巩固了自己的数学知识,对数学专业知识和MATLAB的操作有了更深的体会。

  课程设计中遇到的问题只凭自己苦思冥想是不能全部解决的,这是同学老师的建议和网络给了我很大的帮助。遇到自己解决不了的问题时,多多向老师同学请教,或许问题就能迎刃而解。

  4参考文献

[1]徐树方.数值线性代数.北京:北京大学出版社,1995.[2]马昌凤.现代数值分析.北京:国防工业出版社.2013.[3]刘春凤,米翠兰.实用数值分析教程.北京冶金工业出版社.2006

  5附录

  源代码

  function [y,k]=jacobi2(a,eps,h,delta)n=/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

  for i=1:n-1 A(i,i)=-(2*eps+h);end

  for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

  if i==j-1 A(i,j)=eps+h;end

  end end

  B=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

  B(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

  L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

  end end

  U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

  end end

  B=D(L+U);g=Db;while 1 z=B*y+g;if norm(z-y,inf)

  y=z;k=k+1;end

  X=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

: function [y,k]=gs2(a,eps,h,delta)n=/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

  for i=1:n-1 A(i,i)=-(2*eps+h);end

  for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

  if i==j-1 A(i,j)=eps+h;end

  end end

  B=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

  B(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

  L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

  end end

  U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

  end end

  B=D(L+U);g=Db;while 1 z=(D-L)U*y+(D-L)b;if norm(z-y,inf)

  y=z;k=k+1;end

  X=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

  function [y,k]=sor(a,eps,h,delta,w)n=/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

  for i=1:n-1 A(i,i)=-(2*eps+h);end

  for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end if i==j-1 A(i,j)=eps+h;end

  end end

  B=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

  B(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

  L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

  end end

  U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

  end end

  B=D(L+U);g=Db;Lw=((D-w*L)^-1)*((1-w)*D+w*U);while 1 z=Lw*y+w*(D-w*L)^-1*b;if norm(z-y,inf)

  y=z;k=k+1;end

  X=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

高频课设资料3篇(高频课程设计)相关文章: