目 录
目 录 ...................................................... 0 摘 要 ...................................................... 1 第一章 绪论 ................................................. 2 第二章 MATLAB的简介 .......................................... 3 2.1 MATLAB的发展 ................................................... 3 2.2 MATLAB主要功能 ................................................. 4 2.2 MATLAB优势 ..................................................... 4 2.2.1友好的工作平台编程环境..................................... 4 2.2.2简单易用的程序语言......................................... 5 2.2.3强大的科学计算机数据处理能力............................... 5 2.2.4实用的程序接口和发布平台................................... 5 2.2.5应用软件开发............................................... 6 第三章 MATLAB 简单的程序设计 .................................. 6 3.1 MATLAB的矩阵运算.............................................. 6 3.2 三角函数的使用 ................................................ 7 3.3数据处理与多项式计算 .......................................... 8 3.4 MATLAB程序控制................................................ 9 附录 ........................................................ 9 总结 ........................................................11 参考文献 ....................................................12
摘 要
科学计算即是数值计算,科学计算是指应用计算机处理科学研究和工程技术中所遇到的数学计算。在现代科学和工程技术中,经常会遇到大量复杂的数学计算问题,这些问题用一般的计算工具来解决非常困难,而用计算机来处理却非常容易。
MATLAB 提供进行数学计算、数学建模和算法开发的统一平台,主要包括基本的数学算法、高级工具箱算法函数、快捷的算法发布平台。MATLAB 本身的数学计算能力是建立在 LAPACK 算法包和优化的 BLAS 线性代数算法包的基础之上。而且利用 MATLAB 进行算法开发,可以轻而易举的完成工作,代码的数量以及工作强度都远远少于使用传统的 C 、FORTRAN 进行算法开发所需要的工作量。
关键字:MATLAB科学计算
第一章 绪论
现代计算工具,MATLAB使得在教室里利用科学计算的技术解决实际中的非平凡问题成为可能。由于解决这些问题所要求的工作量,超过了课堂时间和学生的能力,传统上回避这些问题。因而通常用简化的和线性化的模型来代替.这种情况已经发生了变化,教会学习者使用强有力的软件工具,可以解决现实生活中的问题。本论文写出了几个生活中遇到的问题,说明了在科学计算中的一些解决问题的技术。这些解决问题的技术是通过使用MATLAB来解决的。以这种方式解决问题,使读者可以很容易地扩充这些技术以解决更复杂的问题。
MATLAB具有程序设计的基本功能,既有传统的高级语言的特性,又有自己的独特的优点,能体现出更高的编程效率。不管处理什么样的对象——算法、图形、图像、报告或者算法仿真——MATLAB 都能够帮助大家不断提高工作效率。 MATLAB 环境能够完成算法开发、数据分析和可视化、高性能数据分析等工作,相对于传统的 C 、C++ 或者 FORTRAN 语言,在 MATLAB 中完成这些工作所消耗的时间仅仅是传统手段的极小一部分。开放性的 MATLAB 软件和开发语言—— M 语言,能够快速实现用户好的想法和概念。
MATLAB 本身包含了 600 余个用于数学计算、统计和工程处理的函数,这样,就可以迅速完成科学计算任务而不必进行额外的开发。
业内领先的工具箱算法极大的扩展了 MATLAB 的应用领域,例如信号处理、数字图像处理、数据分析和统计以及算法建模和仿真等。 MATLAB 的工具箱都是业内的专家、工程师结合多年来的经验和专业知识,专门开发的用户处理特殊数学计算、分析和图形可视化的功能函数集合。利用这些工具箱,用户可以通过对比应用一系列不同的算法,而避免了应用程序的开发。
使用 MATLAB 软件进行科学计算,能够极大加快科研人员进行研究开发的进度,减少在编写程序和开发算法方面所消耗的时间和有限的经费,从而获得最大的效能。
第二章 Matlab的简介
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是MathWorks公司开发的科学与工程计算软件,它以矩阵运算为基础,把计算、绘图及动态系统仿真等功能有机地融合在一起。同时,它又具有程序设计语言的基本特征。目前,MATLAB在工程计算与数值分析、控制系统设计与仿真、信号处理、图像处理、金融建模设计与分析等学科领域都有着十分广泛的应用。用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。在MATLAB产品家族中,MATLAB工具箱是整个体系的基座,它是一个语言编程型(M语言)开发平台,提供了体系中其他工具所需要的集成环境(比如M语言的解释器)。同时由于MATLAB对矩阵和线性代数的支持使得工具箱本身也具有强大的数学计算能力。 MATLAB产品体系的演化历程中最重要的一个体系变更是引入了Simulink,用来对动态系统建模仿真。其框图化的设计方式和良好的交互性,对工程人员本身计算机操作与编程的熟练程度的要求降到了最低,工程人员可以把更多的精力放到理论和技术的创新上去。
针对控制逻辑的开发,协议栈的仿真等要求,MathWorks公司在Simulink平台上还提供了用于描述复杂事件驱动系统的逻辑行为的建模仿真工具— Stateflow,通过Stateflow,用户可以用图形化的方式描述事件驱动系统的逻辑行为,并无缝的结合到Simulink的动态系统仿真中。
在MATLAB/Simulink基本环境之上,MathWorks公司为用户提供了丰富的扩展资源,这就是大量的Toolbox和Blockset。从1985年推出第一个版本以后的近二十年发展过程中,MATLAB已经从单纯的Fortran数学函数库演变为多学科,多领域的函数包,模块库的提供者。用户在这样的平台上进行系统设计开发就相当于已经站在了巨人的肩膀上,众多行业中的专家、精英 们的智慧结晶可以信手拈来。
2.1 Matlab的发展
20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了
减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。初衷是为解决“线性代数”课程的矩阵运算问题。取名MATLAB即Matrix Laboratory 矩阵实验室的意思。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。
2.2 Matlab主要功能
它是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。使用它,可以较使用传统的编程语言,如C、C++等,更快的解决技术计算问题。
高级语言可用于技术计算;开发环境可对代码、文件和数据进行管理;数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等;二维和三维图形函数可用于可视化数据;各种工具可用于构建自定义的图形用户界面;各种函数可将基于matlab的算法与外部应用程序和语言;其应用范围非常广,包括信号和图像处理、通迅、控制系统设计、测试和测量等众多应用领域。
2.2 Matlab优势
2.2.1友好的工作平台编程环境
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
2.2.2简单易用的程序语言
Matlab一个高级的矩阵语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
2.2.3强大的科学计算机数据处理能力
MATLAB是一个包含大量算法的集合。其可以快捷的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和差错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数算、数组操作以及建模动态仿真等。
2.2.4实用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿
真等方面的应用。
2.2.5应用软件开发
在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接
第三章 MATLAB 简单的程序设计
3.1 MATLAB的矩阵运算
程序一:矩形面积等于长乘以宽。求长分别为1005cm、5600cm、850cm,宽等于5601cm、5cm、54cm和cm的矩形面积。
代码和输出结果如上图所示,虽然这个程序很简单,但是用常规的手动计算就显得很麻烦了,如果改成用MATLAB计算显得非常简单,只要分别定义长和宽,再输出,就很容易的得到了需要的结果。该例中用到了meshgrid函数,meshgrid是MATLAB中用于生成网格采样点的函数。
3.2 三角函数的使用
三角函数应用的地方非常广泛,生活中我们看到轮船在海中航行,当我们想要知道它所受到的重力、浮力、和风力三者合力的时候,我们就要用到三角函数。在数学计算中三角函数用的非常多,下面介绍一下怎么在MATLAB计算三角函数问题。
程序二、按照下面表格,计算轮船在江水中所受到的重力、浮力、和风力三者合力的方向和大小。 力 重力 浮力 风力 大小 8000N 9000N 2000N 方向 -85度 +90度 +35度
代码和输出结果如上图所示,程序的运算过程就没有在这里表示出来了,如果需要可以把程序中的分号去掉就会出现运算过程了,这比手动运算简单多了,还有运算过程。
3.3数据处理与多项式计算
最近看书遇到了几道题目用手算确实麻烦,所以就尝试了用学过的MATLAB解题,题目如下:
1、分别求x=[54,34,543,2345,467,234,56,-322,-2341,-4321] 与y=[54,34,243,43,-42,32,35,52,36,13,-23]的平均值和中值。 在MATLAB中运行结果如下:
2、在同一窗口作出x2与sin(x)的函数图运行结果如下:
3.4 MATLAB程序控制
在考试中的成绩,老师发的成绩表一大班的人数,怎么看班里的人分数及格不及格呢?这时候可以用MATLAB编制程序看及格和不及格,这个非常实用。有关解决问题看如下程序。
程序五、设计百分制分数分类器,输出1表示及格,0表示不及格,其余值表示分数合规则。运行结果如下:
附录
程序中的代码如下:
程序一、length = [1005,5600,850]; width = [5601,5,54,]; [l,w] = meshgrid(length,width); area = l.*w
程序二、force=[8000,9000,2000];%定义输入 theta=[-85,+90,+35];
theta=theta*pi/180;%将角度转换为弧度 forceX=force.*cos(theta);
forceX_total=sum(forceX);%求和
forceY_total=sum(force.*sin(theta));
result_angle=atan(forceY_total/ForceX_total);
result_degrees = result_angle*180/pi%输出合力方向
force_total=forceX_total/cos(result_angle)%输出合力大小 程序三代码如下: clear,clc;
x=[54,34,543,2345,467,234,56,-322,-2341,-4321] mean(x) median(x)
y=[54,34,243,43,-42,32,35,52,36,13,-23] mean(y) median(y)
程序四代码如下: function ex02() x=0:pi/15:2*pi; y1=0.5*x.^2; y2=10*sin(x);
plot(x,y1,'r.-',x,y2); grid
xlabel('variable x') ylabel('variable y')
title('x^2 and sin(x)'); text(6.2,-5.5,'sin(x)'); text(6.2,16,'x^2'); 程序五代码如下: function ex0601()
a= [1 50 80 30 45 90 100]; af=zeros(1,length(a)); for n = 1:length(a) if(a(n)>100) af(n) = 2;
fprintf('\\n\\a bad data??\\n'); break;
elseif a(n) >= 60, af(n) = 1; elseif a(n) >= 0, af(n) = 0; else %
af(n) = -1;
fprintf('\\n\\a bad data??\\n'); break; end end af
总结
本文主要是对利用Matlab软件对科学计算做了一个简单介绍。人们在工学,建筑学,地质考察测量等等中都会用到科学计算,有些用手算或者用计算机计算数据都会耗费很多的时间,而且还反应不了实际数据,这时候用MATLAB就能解决这些问题,可以把数据详细的显示给需求者。
虽然在本论文中编写的几个程序都是很简单的运算,但是生活中都是从简单到复杂的,如果会简单的编程思想,等遇到了复杂的运算的时候可以举一反三解决实际问题,MATLAB很强大,本论文主要介绍科算这一功能,但是MATLAB除了这个功能还有绘图,图像增强,仿真功能,可以把实际问题仿真到电脑上解决问题,这些功能在实际生活中都非常有用。
虽然写完了论文,但是这次设计的本身对我来说所产生的影响,还远远没有结束,我从本次设计中学到了许多课本上没有的知识。通过设计,使我不仅仅在知识水平和解决实际问题的能力上有了很大的提高。还从思想的深处体会到,要把自己的所学变成现实时所将面对的种种难题。
参考文献
[1] 蔡旭晖,刘卫国,蔡立燕著.MATLAB基础与应用教程.人民邮电出版社,2011,8. [2] Holly Moore著.高会生,刘童娜,李聪聪译.MATLAB实用教程教程(第二版).电子工业出版社,2011,12.