文档库 最新最全的文档下载
当前位置:文档库 › 美赛数学建模专用-第三章 MATLAB程序设计基础

美赛数学建模专用-第三章 MATLAB程序设计基础

美赛数学建模专用-

第三章MATLAB程序设计基础

chapter 3: Foundation of MATLAB

program design

一、数据及数据文件(Data and Data file)

1. 数据类型:(Data mode)用于编程和计算的数据类型(表3—1)

数组:

字符数组(Character array)、

数值数组(Numeric array)—

包括整形(int8,uint8,int16,uint16,int32,uint32)单精度

(signal), 双精度(duble)(MATLAB最常用的变量类型),

稀疏(sparce)数组。、

Int---Integrate.

Uint---Unsigned Integer data

单元数组(Cell array)、

结构数组(Structure array)

Java类(Java class)

函数句柄(Function handle)

在工作空间浏览器中不同的数据类型有着不同的图标标识,(见图3—2)_

2. 数据文件(Data file)

MATLAB支持的各种数据文件(Readable file formats of MATLAB)及其调用方法和返回值见(表3—2)

(1)二进制数据文件:(Binary date file)以.mat为扩展名。是标准的MATLAB数据文件,以二进制编码形式存储。.mat文件可以由MATLAB提供的save和load命令直接存取。

(2)ASCⅡ码数据文件:(ASCⅡcode data file)扩展名为.txt, .dat

等,可以是在MATLAB环境下存储的,也可能是其他软件的计算结果,可以被MATLAB调用,也可以用文本编辑器打开进行观察与修改。可以用save和load命令进行读入和存取。

(3).图象文件:(Graphics file)扩展名为.bmp, .jpg .tif等,用于图形图象处理,可以用imread和imwrite命令进行读入和存取。

(4).声音文件:(Sound file) 扩展名为.wav ,用waveread和wavwrite 命令进行读入和存取。

Readable file formats.

Data formats Command Returns MAT- MATLAB workspace load Variables in file.

CSV- Comma separated numbers csvread Double array.

DAT- Formatted text importdata Double array.

DLM- Delimited text dlmread Double array.

TAB- Tab separated text dlmread Double array. Spreadsheet formats

XLS - Excel worksheet xlsread Double array and cell array.

WK1- Lotus 123 worksheet wk1read Double array and cell array.

Scientific data formats

CDF - Common Data Format cdfread Cell array of CDF

records

FITS- Flexible Image Transport System fitsread Primary or extension table data

HDF - Hierarchical Data Format hdfread HDF or HDF-EOS data set

Movie formats

A VI - Movie aviread MATLA

B movie. Image formats

TIFF - TIFF image imread Truecolor, grayscale or indexed image(s).

PNG - PNG image imread Truecolor, grayscale or indexed image.

HDF - HDF image imread Truecolor or indexed image(s).

BMP - BMP image imread Truecolor or indexed image.

JPEG - JPEG image imread Truecolor or grayscale image.

GIF - GIF image imread Indexed image.

PCX - PCX image imread Indexed image.

XWD - XWD image imread Indexed image.

CUR - Cursor image imread Indexed image.

ICO - Icon image imread Indexed image.

RAS - Sun raster image imread Truecolor or indexed.

PBM - PBM image imread Grayscale image.

PGM - PGM image imread Grayscale image.

PPM - PPM image imread Truecolor image.

Audio formats

AU - NeXT/Sun sound auread Sound data and sample rate.

SND - NeXT/Sun sound auread Sound data and sample rate.

WA V - Microsoft Wave sound wavread Sound data and sample rate.

3. 数据输入向导(Import wizard)

File 菜单下的工具Import Wizard用于将各种类型数据文件中的数据导入工作空间,称为数据输入向导。在Import 对话框中输入需要导入的数据文件名后出现Import Wizard窗口,可预观测将要导入的数据、显示图象、播放声音等。

几种数据的导入:

(1)mat数据文件( mat data file)

调入途径:File 输入文件名,也可用Browse打开文件浏览器选择输入文件;Clipboard,数据从剪贴板中调入。

窗口内容:左侧,变量名称、大小、类型。右侧观察前10行10列信息。

Next:显示数据输入向导窗口第二页。

(2)ASCⅡ码数据文件:(ASCⅡ code data file) 输入ASCⅡ数据文件名---选择显示数据内容(data)或头文本内容(textdata)---选择Next下一页进行导入内容选择(通过钩选决定将何变量导入工作空间)---- 按Finish 完成导入操作或按Cancel终止数据的导入。(3)图象数据文件:(Graphics data file)输入图形数据文件名---点击show image(可在图象上拖曳放大区域)------按Finish 完成数据导入(或按Cancel终止数据导入)。

(4)声音数据文件:(Sound data file)输入声音数据文件名---点击Play Sound弹出一个显示声音数据波形的图形窗口(按Play agine 按钮重新播放声音,按Done按钮关闭预观察窗口)------按Finish 完成数据导入(或按Cancel终止数据导入)。

(5)剪贴板的数据:(Clipboard data)需要导入已存放在系统剪贴板中的数据,点数据输入向导窗口中的Clipboard选项,--Next进入下一页--按Finish 完成数据导入(或按Cancel终止数据导入)。二.M文件(M-file)

MATLAB 的两种工作方式:1,交互式命令操作方式(interactive mode)—通过命令窗口进行交互式操作;2,M文件(M-file)的编程工作方式(programming mode)。

1.M文件编程:(M-file program)可用普通文本编辑器编制MATLAB文件,文件由纯ASCⅡ字符组成,确定文件名后加.m扩展名,称为M文件。

MATLAB提供了一个方便的编辑/调试器,功能较多,推荐使用。建立M文件的一般步骤:(normal process of M- file creating)

(1)打开文件编辑器:(Opening the file editor)最简单的方法是在操作桌面的工具栏上选择新建文件键(New M- File)或打开已

有文件键(Open File),也可以在命令窗口输入命令edit建立新文

件或输入edit filename, 打开名为filename 的M文件;

(2)编写程序内容:(Compose the program content)编写新的文件或修改已有文件;

(3)保存文件:(save file) 文件运行前必须完成保存操作,与一般的文件编辑保存操作相同;

(4)运行文件:(running file) 在命令窗口输入文件名即可运行。如要在编辑器中直接完成运行,可在编辑器的Debug菜单下save and run选项,或按Run快捷键,最快捷的方法是直接按F5

键执行运行。

M文件有两种形式:命令(脚本)文件(Script File)和函数文件(Function File)

2. 命令文件:(Script File) M文件中最简单的一种,是可用于自动重复执行的一组MATLAB命令和函数组合,不需输出输入参数,用M

文件可以调用工作空间已有的变量或创建新的变量。运行过程中产生的变量都是全局变量。

建立一个命令文件等价于从命令窗口中顺序输入文件里的命令,程序不需要预先定义,只要依次将命令编辑在命令文件中,再将程序保存成为扩展名为.m的M文件即可。

运行命令文件时,只需在命令窗口键入文件名即可。

例:用三角函数计算画出花瓣图形。

theta=-pi:0.01:pi;

rho(1,:) =2*sin(5*theta).^2; %计算四种不同rho

rho(2,:)=cos(10*theta).^3;

rho(3,: )=sin(theta).^2;

rho(4,: )=5*cos(3.5*theta).^3;

for k = 1:4

Subplot(2,2,k),

polar(theta,rho(k,: ))

end

将程序保存成名为petals的M文件,并运行。

注:

(1)‘%‘引导注释行,不予执行;

(2)不需要用“end”作为M文件的结束标志;

(3)若文件存放在自己的目录上,在运行文件前,应先将自己的目录设置为当前工作目录。最简单方法:在当前目录浏览器中设

置。

(4)运行后存放在工作空间的变量可以用工作空间浏览器查看。3。函数文件(Function File)

如果M文件的第一个可执行行以function开始,便是函数文件,每一个函数文件定义一个函数。函数文件区别于命令文件之处在于命令文件的变量在文件执行完成后保留在工作空间中,而函数文件内定义的变量只在函数文件内起作用,文件执行完后即被清除。

例:建立average函数用于计算矢量中单元的平均值。

function y = average(x)

%A VERAGE Mean of vector elements.

%A VERAGE(X),Where X is a vector, is the mean of vector element. %Non-vector input results in an error.

[m,n]=size(x);

if(~((m==1) | (n==1)) | (m==1& n==1))

error(' Input must be a vector')

end

y=sum(x)/length(x);

将文件存盘,缺省状态下自动存储名为average.m的函数。这样只要接受一个输入参数便可计算返回一个输出参数,与其他MATLAB函数一样使用。

例:用已建立的average函数文件求1~99的平均值。

z=1:99;

average(z)

函数文件的基本组成部分:

(1)函数定义行:(the lines for function identification)由function 引导,并定义函数名、输入参数和输出参数,函数定义行必须放在文件的第一个可执行上。可以设多个输入输出参数,如:function[x,y,z]=sphere(theta,phi,rho)

也可以没有输出参数,如:

function printresults(x)

(1)H1行:(Lines H1) lookfor查询时使用的;

(2)帮助文本:(Help text)建立在线查询信息;

(3)函数体:(Function body)包含全部的用于完成计算及给输出参数赋值等工作的语句;

(4)注释:(explanatory notes)以%起始导行尾结束部分的说明文字。可放置在程序中的任何部位。

2.局部变量与全局变量(Local variable and Global variable)用global就可以把一个变量定义为全局变量。MATLAB中变量名是区分大小写的,习惯上常将大写字母定为全局变量。如:global A B C

三.程序结构(Structure of program)

8种控制程序流程(control flow statement)的语句:for, while, if, switch, try, continue, break, return

1。循环语句(Loop statement)

(1)for语句:

for v=表达式通常为一个矢量,形式为:m:s:n(初值:步长:終值)语句体

end

例:

n=10

for i=1:n

x(i)=(i+1).^2;

end

x

x =

4 9 16 2

5 3

6 49 64 81 100 121

例:嵌套循环:注意与end的配对。

m=3; n=4;

for i=1:m

for j=1:n

a(i,j)=1/(i+j-1);

end

end

format rat

a

a =

1 1/

2 1/

3 1/4

1/2 1/3 1/4 1/5

1/3 1/4 1/5 1/6

例:运用非1步长,产生0-20 以内的偶数

for i=0:2:20

a(i/2+1)=i ;

end

a

a =

0 2 4 6 8 10 12 14 16 18 20 (2).While语句:为条件循环语句。循环不确定次数,只要表达式的结果非零,语句体就重复执行,直到循环条件不成立为止。While 表达式

语句体

end

例:while循环,求解n!达到100位数的第一个n是多少。

n=1;

while prod(1:n)<1e100

n=n+1;

end

n

n =

70

2. 条件语句(Selection statement)

(1) if—end语句(simple if statement)

if 表达式

语句体

end

(2)if—else--end语句

if 表达式

语句体1;

else

语句体2:

end

当计算的表达式结果为真时执行语句体1,结果为假时执行语句体2。

例:判断学生是否通过学业。

if ((attendance>=0.90) & (grade>=60))

pass=1;

else

fail=1;

end

(1)i f—elseif—end语句

if 表达式1

语句体1;

elseif 表达式2

语句体2;

else

语句体3;

end

例:用色彩区分数据点的范围。

n=100;

x=1:n;

y=randn(1,n);

hold on

for i=1:n

if y(i)<-1

plot(x(i),y(i),'*g')

elseif y(i)>=-1 & y(i)<=1

plot(x(i),y(i),'ob')

elseif y(i)>=1

plot(x(i),y(i),'xr')

end

end

hold off

(3) 分支语句:switch—case—end

通过对某个变量值的比较做各种不同的执行选择。

形式:

switch 表达式(数字或字符串)

case 数字或字符串1

语句体1;

case 数字或字符串2

语句体2;

……

otherwise

语句体n;

end

例:检查input_num的数值.

switch input_num

case -1

disp(‘negative one’); %当input_num=-1时显示case 0

disp(‘zero’); %当input_num= 0时显示case 1

disp(‘positive one’); %当input_num= 1时显示otherwise

disp(‘other value’); %当input_num等于其他值时显示end

(4) 检测语句:(Detect statement)

try-catch语句用于检测错误并改变流程,形式:

try

语句体 1

catch

语句体2

end

先执行try下面的语句体1,如没有错误,就跳出该结构,如出错误,则执行catch语句下面的语句体2。可用lasterr函数查询错误信息,查询结果为空字符串时表示语句体1成功执行。

例:判断错误语句的用法

n=4;

a=magic(3)

try

a_n=a(n,:), %取a的第n 行元素

catch

a_n=a(end, : ), %如取a的第n 行出错,则改取a的最后一行end

lasterr %显示出错原因

a =

8 1 6

3 5 7

4 9 2

a_n =

4 9 2

ans =

Index exceeds matrix dimensions.

(5)其他流程控制语句:(Other control flow statement)

(a), continue语句:用于控制for循环和while循环跳过某些执行语句。

例:continue语句的用法.

fid=fopen('magic.m','r'); %打开文件

count=0; %计数器置零

while ~feof(fid) %判断是否到文件末尾

line=fgetl (fid);

if isempty(line) | strncmp(line,'%',1)

%判断是否为空行或注释行continue %如果是空行或注释行继续下一次循环end

count=count+1; %如果不是空行或注释行计数器加1

end

disp(sprintf('%d lines' ,count)); %显示行数

25 lines

(b). break语句:用于终止for循环和while循环的执行.

例:break语句的用法.

fid=fopen(‘fft.m’,’r’); %打开文件

s=’ ‘; %清空字符数组

while ~feof(fid) %判断是否为文件末尾

line=fgetl(fid); %从文件中读行

if isempty(line) %如果是空行

break %如果是空行退出循环

end

s=strvcat(s,line); %如果不是空行,丛向连接字符数组

end

disp(s) %显示字符数组结果

(c )return语句:用于终止当前的命令序列,并返回到调用的函数或键盘。

例:return语句的用法.

function d=det(A) %定义函数det(A) 计算矩阵A的行列式

if isempty(A) %如果矩阵是空的

d=1;

return %返回调用函数

else

…%计算过程略

end

四. 数据的输入与输出(Date input and output)

1.数据的输入(Data input)

常用方法:

(a)键盘输入:(keyboard input)数据少时较方便,多时不益使用;

(b)用M文件产生数据:(Generate data by M-file)使用于较多数据的输入;

(C)从ASCⅡ码文件装载数据:(Load data from ASCⅡ

code file)

(c)对文本格式的数据文件可用load命令直接读入

MATLAB,其内容存放在以文件名命名的变量中

(d)利用fopen, fscanf, fread及MATLAB其他低层I/O命令读取数据:用于读取其他外部应用程序建立的各种

特定格式的数据。

2。数据的输出(data output)

(a)利用diary命令输出语句: 运行diary命令可以在当前

工作目录上产生一个名为diary的日记文件,文件内容

可以输出。关闭日记文件的命令为dairy off.

(b)利用Notebook获取数据:于dairy用法相仿优点是文

字质量高,版面规范,且M-book中的命令可以随时运

行或修改,MATLAB工作空间中的数据随之改变。运

行Notebook要求计算机上装有MS-Word。NOTEBOOK Open an m-book in Microsoft Word (Windows only). NOTEBOOK, by itself, launches Microsoft Word and creates a new m-book called "Document 1."

NOTEBOOK(FILENAME) launches Microsoft Word and opens the m-book FILENAME.

NOTEBOOK('-SETUP') runs an interactive setup function for the Notebook. The user is prompted for the version of Microsoft Word and the locations of several files.

NOTEBOOK('-SETUP', WORDVER, WORDLOC, TEMPLATELOC) sets up the Notebook using the specified information. WORDVER is the version of Microsoft Word (one of '97' or '2000' or '2002'), WORDLOC is the directory containing winword.exe, and TEMPLATELOC is a Microsoft Word template directory.

Examples:

notebook

notebook c:\documents\mymbook.doc

notebook -setup

For the case in which Microsoft Word 97 (winword.exe) resides in the C:\Program Files\Microsoft Office 97\Office directory, and the Microsoft Word templates reside in the C:\Program Files\Microsoft Office 97\Templates directory: wordver = '97'; wordloc = 'C:\Program Files\Microsoft Office 97\Office'; templateloc = 'C:\Program Files\Microsoft Office 97\Templates'; notebook('-setup', wordver, wordloc, templateloc)

(c) save命令输出数据:将当前内存中的变量存到文件中去。

(d) 利用fopen, fprintf, fwrite及其他底层I/O命令输出特殊格式的数据:如需要在其他外部应用程序中使用MATLAB输出的特定格式的数据,使用此方法。

3. Save和load命令的使用(Using commend Load and Save)

(1) save(将工作空间的变量存入磁盘)命令的常用调用方法save:将工作空间所有的变量以二进制格式存入名为matlab.mat的缺省文件;

(a) save dfile:将工作空间所有的变量以二进制格式存入dfile.mat文件,扩展名自动产生

(b) save dfile x:只把变量x以二进制格式存入dfile.mat文件,扩展名自动产生

(c) save dfile.dat x-ascii:将变量x以8位ASCⅡ码形式存入dfile.mat 文件;

(d) save dfile.dat x-ascii-double:将变量x以16位ASCⅡ码形式存入dfile.mat文件;

(e) save(fname, ‘a’, ‘-ascii’): fname是一个预先定义好的包含文件名的字符串,该用法将变量a以ASCⅡ码格式存入fname定义的文件中。

(2) load命令的常用方法(usual application of command load)

(a) load:把磁盘matlab.mat的内容读入内存;

(b) load dfile: 将磁盘文件dfile.mat内容读入内存;

(c) load dfile.dat:将磁盘文件dfile.mat内容读入内存,这是一个ASCⅡ码文件,系统自动将文件名定义为变量名;

(c)a=load(fname): fname是预先定义好的包含文件名的

字符串,将由fname定义文件名的数据文件调入a中。

附:

1、命令窗口数据直接输入输出语句(Input)

可利用语句中输入的字符串内容提示用户在命令窗口直接输入程序运行所需的某些参数,

调用格式:

R = INPUT('How many apples'):

执行后出现提示字符串,输入的内容可以是MATLAB可估值的任何表达式.输出保存在变量R中。

R = INPUT('What is your name','s'):

执行后出现提示字符串,等待字符串输入,字符串直接输出为MATLAB字符串形式。

INPUT Prompt for user input.

R = INPUT('How many apples') gives the user the prompt in the text string and then waits for input from the keyboard. The input can be any MATLAB expression, which is evaluated, using the variables in the current workspace, and the result returned in R. If the user presses the return key without entering anything, INPUT returns an empty matrix.

R = INPUT('What is your name','s') gives the prompt in the text string and waits for character string input. The typed input is not evaluated; the characters are simply returned as a MATLAB string.

The text string for the prompt may contain one or more '\n'. The '\n' means skip to the beginning of the next line. This allows the prompt string to span several lines. To output just a '\' use '\\'.

例:编制可由命令窗口输入被处理温度数据的程序。

k=input('选择转换方式(1--摄氏转换为华氏,2--华氏转换为摄氏):');

if k~=1 & k~=2

disp('请指定转换方式')

return

end

tin=input('输入待转变的温度(允许输入数组):');

if k==1

tout=tin*9/5+32; % 摄氏转换为华氏

k1=2;

elseif k==2

tout=(tin-32)*5/9; % 华氏转换为摄氏

k1=1;

end

str=[' ?C';' ?F'];

disp(['转换前的温度', ' ', '转换后的温度'])

disp([' ',num2str(tin),str(k,:), ' ', num2str(tout),str(k1,:)])

%不同的样条插值函数应用方法:

yi=interp1(x,y,xi,‘method’)

yi=method(x,y,xi)

例:有一正弦衰减数据y=sin(x).*exp(-x/10),其中x=0:pi/5:4*pi,用三次样条法进行插值。

未插值:

x0=0:pi/5:4*pi;

y0=sin(x0).*exp(-x0/10);

plot(x0,y0)

方法1:x0=0:pi/5:4*pi;

y0=sin(x0).*exp(-x0/10);

x=0:pi/20:4*pi;

y=spline(x0,y0,x);

plot(x0,y0,'or',x,y,'b')

方法2:x0=0:pi/5:4*pi;

y0=sin(x0).*exp(-x0/10);

x=0:pi/20:4*pi;

y=interp1(x0,y0,x,’splin’)

plot(x0,y0,'or',x,y,'b')

数学建模常用软件

数学建模常用软件有哪些哈 MatlabMathematicalingoSAS详细介绍:数学建模软件介绍一般来说学习数学建模,常用的软件有四种,分别是:matlab、lingo、Mathematica和SAS下面简单介绍一下这四种。 1.MA TLAB的概况MA TLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多. 当前流行的MA TLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类. 开放性使MATLAB广受用户欢迎.除内部函数外,所有MA TLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包. 2.Mathematica的概况Wolfram Research 是高科技计算机运算( Technical computing )的先趋,由复杂理论的发明者Stephen Wolfram 成立于1987年,在1988年推出高科技计算机运算软件Mathematica,是一个足以媲美诺贝尔奖的天才产品。Mathematica 是一套整合数字以及符号运算的数学工具软件,提供了全球超过百万的研究人员,工程师,物理学家,分析师以及其它技术专业人员容易使用的顶级科学运算环境。目前已在学术界、电机、机械、化学、土木、信息工程、财务金融、医学、物理、统计、教育出版、OEM 等领域广泛使用。Mathematica 的特色·具有高阶的演算方法和丰富的数学函数库和庞大的数学知识库,让Mathematica 5 在线性代数方面的数值运算,例如特征向量、反矩阵等,皆比Matlab R13做得更快更好,提供业界最精确的数值运算结果。·Mathematica不但可以做数值计算,还提供最优秀的可设计的符号运算。·丰富的数学函数库,可以快速的解答微积分、线性代数、微分方程、复变函数、数值分析、机率统计等等问题。·Mathematica可以绘制各专业领域专业函数图形,提供丰富的图形表示方法,结果呈现可视化。·Mathematica可编排专业的科学论文期刊,让运算与排版在同一环境下完成,提供高品质可编辑的排版公式与表格,屏幕与打印的自动最佳化排版,组织由初始概念到最后报告的计划,并且对txt、html、pdf 等格式的输出提供了最好的兼容性。·可与C、C++ 、Fortran、Perl、Visual Basic、以及Java 结合,提供强大高级语言接口功能,使得程序开发更方便。·Mathematica本身就是一个方便学习的程序语言。Mathematica提供互动且丰富的帮助功能,让使用者现学现卖。强大的功能,简单的操作,非常容易学习特点,可以最有效的缩短研发时间。 3.lingo的概况LINGO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP—QUARATIC PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。虽然LINDO和LINGO不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。模型建立语言和求解引擎的整合LINGO是使建立和求解线性、非线性和整数最佳化模型更快更简单更有效率的综合工具。LINGO提供强大的语言和快速的求解引擎来阐述和求解最佳化模型。■简单的模型表示LINGO可以将线性、非线性和整数问题迅速得予以公式表示,并且容易阅读、了解和修改。■方便的数据输入和输出选择LINGO建立的模型可以直接从数据库或工作表获取资料。同样地,LINGO可以将求解结果直接输出到数据库或工作表。■强大的求解引擎LINGO内建的求解引擎有线性、非线性(convex and nonconvex)、二次、二次

数学建模(Matlab)

数学规划作业(MatLab) 1、某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、80台.每季度的生产费用为()2 =+ f x ax bx (单位:元), 其中x是该季度生产的台数.若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c元.已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问:工厂应如何安排生产计划,才能既满足合同又使总费用最低.讨论a、b、c变化对计划的影响,并作出合理的解释. 解: 问题的分析和假设: 分析: 问题的关键在于由于工厂的生产能力足以满足每个季度用户的需求,但是为了使总费用最少,那么利用每个季度生产费用的不同,可用利用上个生产费用低的季度多生产来为下个季度进行准备,前提是本月节省下的费用减去总的发动机存储费用还有剩余,这样生产才有价值,才可能满足合同的同时又能使总费用最低。基本假设:1工厂的生产能力不受外界环境因素影响。2为使总费用最低,又能满足合同要求,各个季度之间的生产数量之间是有联系的。3第一季度开始时无存货。4工厂每季度的生关费用与本季度生产的发动机台数有关。5生产要按定单的数量来进行,生产的数量应和订单的数量相同,以避免生产出无用的机器。 符号规定:X1―――第一季度生产发动机的数量 X2―――第二季度生产发动机的数量

X3―――第三季度生产发动机的数量 建模: 1.三个季度发动机的总的生产量为180台。 2.每个季度的生产量和库存机器的数量之和要大于等于本季度的交货数量。 3.每个月的生产数量要符合工厂的生产能力。 4.将实际问题转化为非线性规划问题,建立非线性规划模型 目标函数 min f(x)=50(x1+x2+x3)+0.2(x12+x22+x32)+4(x1-40)+4(x1+x2-100) 整理,得 min f(x)=50(x1+x2+x3)+0.2(x12+x22+x32)+4(2x1+x2-140) 约束函数s.t x1+x2≥100; x1+x2+x3=180; 40≤x1≤100; 0≤x2≤100; 0≤x3≤100; 求解的Matlab程序代码: M-文件 fun.m: function f=fun (x); f=50*(x(1)+x(2)+x(3))+0.2*(x(1)^2+x(2)^2+x(3)^2)+4*(2*x(1) +x(2)-140)主程序fxxgh.m:

2015研究生数学建模MATLAB程序(完整版)

′ú??ò?£o % ?a?ü1y3ì?°??ò??ü??í3?? clear clc fid1=fopen('mingwen1.txt','r'); str1=fgets(fid1); fclose(fid1); fid2=fopen('jiemihou1.txt','r'); str2=fgets(fid2); fclose(fid2); % é?è¥μ¥′ê????μ?????oí±êμ?·?o? ad=find(str2==',');str2(ad)='';ad=find(str2=='.');str2(ad)='';ad=find(str2==';') ;str2(ad)=''; ad=find(str2=='''');str2(ad)='';ad=find(str2=='?');str2(ad)='';ad=find(str2=='£o');str2(ad)=''; ad=find(str2=='"');str2(ad)='';ad=find(str2=='-');str2(ad)='';ad=find(str2= ='/');str2(ad)=''; ad=find(str2==' ');str2(ad)=''; for i=0:25; ad=find(str1=='A'+i);str1(ad)='a'+i; end for i=0:25; ad=find(str2=='A'+i);str2(ad)='a'+i; end n1(1,26)=0; n2(1,26)=0; n1(1)=sum(str1=='a');n2(1)=sum(str2=='a'); n1(2)=sum(str1=='b');n2(2)=sum(str2=='b'); n1(3)=sum(str1=='c');n2(3)=sum(str2=='c'); n1(4)=sum(str1=='d');n2(4)=sum(str2=='d'); n1(5)=sum(str1=='e');n2(5)=sum(str2=='e'); n1(6)=sum(str1=='f');n2(6)=sum(str2=='f'); n1(7)=sum(str1=='g');n2(7)=sum(str2=='g'); n1(8)=sum(str1=='h');n2(8)=sum(str2=='h'); n1(9)=sum(str1=='i');n2(9)=sum(str2=='i'); n1(10)=sum(str1=='j');n2(10)=sum(str2=='j'); n1(11)=sum(str1=='k');n2(11)=sum(str2=='k'); n1(12)=sum(str1=='l');n2(12)=sum(str2=='l'); n1(13)=sum(str1=='m');n2(13)=sum(str2=='m'); n1(14)=sum(str1=='n');n2(14)=sum(str2=='n'); n1(15)=sum(str1=='o');n2(15)=sum(str2=='o');

MATLAB及在数学建模中的应用

第1讲MATLAB及 在数学建模中的应用 ? MatLab简介及基本运算?常用计算方法 ?应用实例

一、 MatLab简介及基本运算 1.1 MatLab简介 1.2 MatLab界面 1.3 MatLab基本数学运算 1.4 MatLab绘图

1.1 MatLab简介?MATLAB名字由MATrix和 LABoratory 两词组成。20世纪七十年代后期, 美国新墨西哥大学计算机科学系主任Cleve Moler教授为减轻学生编程负担,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。

?经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。

?1997年春,MATLAB5.0版问世,紧接着是5.1、5.2、5.3、6.0、6.1、6.5、7.0版。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。 ?20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。

?MATLAB具有用法简易、可灵活运用、程式结构强又兼具延展性。以下为其几个特色: ①可靠的数值运算和符号计算。在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函 数可使用。 ②强大的绘图功能。 MATLAB可以绘制各种图形,包括二维和三维图形。 ③简单易学的语言体系。 ④为数众多的应用工具箱。

数学建模matlab例题参考及练习

数学实验与数学建模 实验报告 学院: 专业班级: 姓名: 学号: 完成时间:年月日

承 诺 书 本人承诺所呈交的数学实验与数学建模作业都是本人通过学习自行进行编程独立完成,所有结果都通过上机验证,无转载或抄袭他人,也未经他人转载或抄袭。若承诺不实,本人愿意承担一切责任。 承诺人: 年 月 日 数学实验学习体会 (每个人必须要写字数1200字以上,占总成绩的20%) 练习1 一元函数的图形 1. 画出x y arcsin =的图象. 2. 画出x y sec =在],0[π之间的图象. 3. 在同一坐标系中画出x y =,2x y =,3 x y = ,3x y =,x y =的图象. 4. 画出3 2 3 2)1()1()(x x x f + +-=的图象,并根据图象特点指出函数)(x f 的奇偶性. 5. 画出)2ln(1++=x y 及其反函数的图象. 6. 画出3 21+=x y 及其反函数的图象.

练习2 函数极限 1.计算下列函数的极限. (1) x x x 4 cos 1 2 sin 1 lim 4 - + π → . 程序: sym x; f=(1+sin(2*x))/(1-cos(4*x)); limit(f,x,pi/4) 运行结果: lx21 ans = 1 (2). 程序: sym x; f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2) 运行结果: lx22 ans = exp(3) (3) 2 2 ) 2 ( sin ln lim x x x - π π → . 程序: sym x; f=log(sin(x))/(pi-2*x)^2; limit(f,x,pi/2) 运行结果: lx23 ans = -1/8 (4) 2 1 2 lim x x e x →. 程序: x x x sec 3 2 ) cos 1( lim+ π →

数学建模MATLAB程序汇总

建模MATLAB程序汇总 求特征值、特征向量、权向量 A=input('A='); E=eig(A) [V,D]=eig(A) t=max(E); disp(t); for i=1:1:3 if E(i)==t; m=i; end end X=V(:,m); mt=X./sum(X); disp(mt) 求π n=1;s=0; while 1/(2*n-1)>10^(-6) s=s+(-1)^(n+1)/(2*n-1); n=n+1; end pai=4*s 求e n=1;s=1; while 1/prod(1:n)>10^(-6) s=s+1/prod(1:n); n=n+1; end e=s 回归分析、 x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]'; X=[ones(16,1) x]; [b,bint,r,rint,stats]=regress(Y,X,0.025); b,bint,stats rcoplot(r,rint) z=b(1)+b(2)*x plot(x,Y,'k+',x,z,'r') 回归曲线 x=[2:16]; y=[6.42 8.20 9.58 9.50 9.70 10 9.93 09.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76]; x1=1./x;

y1=log(y); p=polyfit(x1,y1,1) a=exp(p(2)) b=p(1) z=a.*exp(b./x) plot(x,y,'k+',x,z,'r') 回归预测 x=[20 25 30 35 40 45 50 55 60 65]'; Y=[13.2 15.1 16.4 17.1 17.9 18.7 19.6 21.2 22.5 24.3]'; X=[ones(10,1) x]; [b,bint,r,rint,stats]=regress(Y,X,0.05); b,bint,stats rcoplot(r,rint) z=b(1)+b(2)*x rstool(x,Y,'purequadratic') 灰色GM(1,1) clc,clear x0=[8438.73 9398.53 9959.17 10949.99 11145.92 11800 12700]; n=length(x0); lamda=x0(1:n-1)./x0(2:n) range=minmax(lamda) x1=cumsum(x0) for i=2:n z(i)=0.5*(x1(i)+x1(i-1)); end B=[-z(2:n)',ones(n-1,1)]; Y=x0(2:n)'; u=B\Y x=dsolve('Dx+a*x=b','x(0)=x0'); x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)}); yuce1=subs(x,'t',[0:n-1]); digits(6),y=vpa(x) %为提高预测精度,先计算预测值,再显示微分方程的解yuce=[x0(1),diff(yuce1)] epsilon=x0-yuce %计算残差 delta=abs(epsilon./x0) %计算相对误差 rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda %计算级比偏差值 求余 for n=1:5000 k=n^3; if rem(k,10000)==8888 n end end 人口预测模型

数学建模章绍辉版第四章作业

第四章作业 第二题: 针对严重的交通情况,国家质量监督检验检疫局发布的国家标准,车辆驾驶人员血液中的酒精含量大于或等于20mg/100ml,小于80mg/100ml 为饮酒驾车,血液中的酒精含量大于或等于80mg/100ml 的为醉酒驾车。 下面分别考虑大李在很短时间内和较长时间内(如2个小时)喝了三瓶啤酒,多长时间内驾车就会违反新的国家标准。 1、 问题假设 大李在短时间内喝下三瓶啤酒后,酒精先从吸收室(肠胃)吸收进中心室(血液和体液),然后从中心室向体外排除,忽略喝酒的时间,根据生理学知识,假设 (1) 吸收室在初始时刻t=0时,酒精量立即为 32 D ;在任意时刻,酒精从吸收室吸收进中心室的速率(吸收室在单位时间内酒精含量的减少量)与吸收室的酒精含量成正比,比例系数为1k ; (2) 中心室的容积V 保持不变;在初始时刻t=0时,中心室的酒精含量为0;在任意时 刻,酒精从中心室向体外排除的速率(中心室在单位时间内酒精含量的减少量)与 中心室的酒精含量成正比,比例系数为2k ; (3) 在大李适度饮酒没有酒精中毒的前提下,假设1k 和2k 都是常量,与饮酒量无关。 2、 符号说明 酒精量是指纯酒精的质量,单位是毫克; 酒精含量是指纯酒精的浓度,单位是毫克/百毫升; ~t 时刻(小时) ; ()~x t 在时刻t 吸收室(肠胃)内的酒精量(毫克) ; 0~D 两瓶酒的酒精量(毫克); (t)~c 在时刻t 吸收室(血液和体液)的酒精含量(毫克/百毫升) ; 2()~c t 在时刻t 中心室(血液和体液)的酒精含量(毫克/百毫升); ~V 中心室的容积(百毫升) ; 1~k 酒精从吸收室吸收进中心室的速率系数(假设其为常数2.0079); 2~k 酒精从中心室向体外排除的速率系数(假设其为常数0.1855); 3~k 在短时间喝下三瓶酒的假设下是指短时间喝下的三瓶酒的酒精总量除以中心室体积, 即03/2D V ;而在较长时间内(2小时内)喝下三瓶酒的假设下就特指03/4D V .

matlab在数学建模中的应用

Matlab在数学建模中的应用 数学建模是通过对实际问题的抽象和简化,引入一些数学符号、变量和参数,用数学语言和方法建立变量参数间的内在关系,得出一个可以近似刻画实际问题的数学模型,进而对其进行求解、模拟、分析检验的过程。它大致分为模型准备、模型假设、模型构成、模型求解、模型分析、模型检验及应用等步骤。这一过程往往需要对大量的数据进行分析、处理、加工,建立和求解复杂的数学模型,这些都是手工计算难以完成的,往往在计算机上实现。在目前用于数学建模的软件中,matlab 强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。 1 Matlab在数学建模中的应用 下面将联系数学建模的几个环节,结合部分实例,介绍matlab 在数学建模中的应用。 1.1 模型准备阶段 模型准备阶段往往需要对问题中的给出的大量数据或图表等进行分析,此时matlab的数据处理功能以及绘图功能都能得到很好的应用。 1.1.1 确定变量间关系 例1 已知某地连续20年的实际投资额、国民生产总值、物价指数的统计数据(见表),由这些数据建立一个投资额模型,根据对未来国民生产总值及物价指数的估计,预测未来的投资额。

表1 实际投资额、国民生产总值、物价指数的统计表 记该地区第t年的投资为z(t),国民生产总值为x(t),物价指数为y(t)。 赋值: z=[90.9 97.4 113.5 125.7 122.8 133.3 149.3 144.2 166.4 195 229.8 228.7 206.1 257.9 324.1 386.6 423 401.9 474.9 424.5]' x=[596.7 637.7 691.1 756 799 873.4 944 992.7 1077.6 1185.9 1326.4 1434.2 1549.2 1718 1918.3 2163.9 2417.8 2631.6 2954.7 3073]' y=[0.7167 0.7277 0.7436 0.7676 0.7906 0.8254 0.8679 0.9145 0.9601 1 1.0575 1.1508 1.2579 1.3234 1.4005 1.5042 1.6342 1.7842 1.9514 2.0688]' 先观察x与z之间,y与z之间的散点图 plot(x,z,'*') plot(y,z,'*') 由散点图可以看出,投资额和国民生产总值与物价指数都近似呈

matlab数学建模实例

第四周 3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj() for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769; if (abs(x1)<1.0e-8) x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

基于MATLAB的光伏电池通用数学模型

本文由qpadm贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第 25 卷第 4 期 2009 年 4 月 电 力 For personal use only in study and research; not for commercial use 科 学 与 For personal use only in study and research; not for commercial use 工 程 Vol.25, No.4 Apr., 2009 11 For personal use only in study and research; not for commercial use Electric Power Science and Engineering 基于 MATLAB 的光伏电池通用数学模型 王长江 For personal use only in study and research; not for commercial use (华北电力大学电气与电子工程学院,北京 102206)摘要:针对光伏电池输出特性具有强烈的非线性,根据太阳能电池的直流物理模型,利用 MATLAB 建立了太阳能光伏阵列通用的仿真模型。利用此模型,模拟任意环境、太阳辐射强度、电池板参数、电池板串并联方式下的光伏阵列 I-V 特性。模型内部参数经过优化,较好地反应了电池实际特性。模型带有最大功率点跟踪功能,能很好地实现光伏发电系统最佳工作点的跟踪。关键词:光伏电池;MPPT;I-V 特性中图分类号:TM615 文献标识码:A 引 言 1 光伏电池特性 随着化石能源的消耗,全球都在面临能源危机,太阳能依靠其清洁、分布广泛等特点成为当今发展速度居第二位的能源 [1] 。光伏阵列由多个单体太阳能电池进行串并联封装而成,是光伏发电的能源供给中心,其 I V 特性曲线随日照强度和太阳能电池温度变化,即 I=f ( V, S, T ) 。目前而厂家通常仅为用户提供标准测试的短路电流 I sc 、开路电压 Voc、最大功率点电流 I m 、最大功率点电压 V m 值,所以如何根据已有的标准测试数据来仿真光伏阵列在不同日照、温度下的 I V,P V 特性曲线,在光伏发电系统分析研究中显得至关重要 [2] 。文献 [ 3~4 ] 介绍了一些光伏发电相关的仿真模型,但这些模型都需要已知一些特定参数,使得分析研究有一些困难。文献 [ 5 ] 介绍了经优化的光伏电池模型,但不能任意改变原始参数。文献 [ 6 ] 给出了光伏电池的原理模型,但参数选用典型值,会造成较大的误差。本文考虑工程应用因素,基于太阳能电池的物理模型,建立了适用于任何条件下的工程用光伏电池仿真模型。

数学实验与数学建模(matlab在建模中的应用)

数学实验与数学建模 学习目标 1.掌握利用Matlab软件进行了相关的数学运算的方法. 2.以软件辅助来完成数学实验. 3.了解数学建模思想方法,能够对一些简单问题建立数学模型求解分析. 教学要求 Matlab是Mathworks公司推出的用于数值计算的交互式软件系统,具有强大的数值分析、矩阵运算、信号处理、图形显示和建模仿真功能. Matlab是“Matrix Laboratory”的缩写,意思是“矩阵实验室”,其强大的数据处理能力和丰富的工具箱使它的编程极为简单,因此,它成为科学家和工程技术人员解决实际问题的首选计算工具软件。 本章的第一节主要介绍Matlab软件的简单使用方法,从第二节到第六节在讲解Matlab 用于解决高等数学和线性代数中的相关计算的函数基础上, 通过一些简单的数学实验例题,让学生体会如何用Matlab辅助解决数学问题. 最后,通过一些与线性代数相关的数学建模实例,让学生掌握数学建模的简单方法,学会利用Matlab软件辅助解决实际问题,以培养学生良好的数学意识和数学素质. 6.1 Matlab环境及使用方法 6.1.1 Matlab窗口管理 Matlab启动后显示三个窗口,如图6.1所示。左上窗口为工作区间窗口,显示用户定义的变量及其属性类型及变量长度。工作区间窗口也可显示为当前目录窗口,显示Matlab 所使用的当前目录及该目录下的全部文件名。左下窗口为历史窗口,显示每个工作周期(指Matlab启动至退出的工作时间间隔)在命令窗口输入的全部命令,这些命令还可重新获取应用。右侧窗口为Matlab命令窗口,可在里面输入相关运算命令,完成相应计算。三个窗口中的记录除非通过Edit菜单下的清除操作,否则将一直保存。

MATLAB及其在数学建模中的应用

Modeling and Simulation 建模与仿真, 2015, 4(3), 61-71 Published Online August 2015 in Hans. https://www.wendangku.net/doc/6018769971.html,/journal/mos https://www.wendangku.net/doc/6018769971.html,/10.12677/mos.2015.43008 Study of MATLAB and Its Application in Mathematical Modeling Chuanqi Qin, Ting Wang, Yuanfeng Jin School of Science, Yanbian University, Yanji Jilin Email: yfkim@https://www.wendangku.net/doc/6018769971.html, Received: Jul. 22nd, 2015; accepted: Aug. 11th, 2015; published: Aug. 18th, 2015 Copyright ? 2015 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). https://www.wendangku.net/doc/6018769971.html,/licenses/by/4.0/ Abstract This article firstly introduces the development and the features of MATLAB software. And then the concept and the process of mathematical modeling are explained. After, the article briefly intro-duces some MATLAB solution methods of mathematical modeling problems, giving several in-stances of some methods. At the last of this article, through a relatively complete example, it fo-cuses on the application of MATLAB in mathematical modeling. It has been found that the applica-tion of MATLAB in mathematical modeling can improve the efficiency and quality of mathematical modeling, enrich the means and methods of mathematical modeling, and play a very important role in the teaching of mathematical modeling course. Keywords MATLAB, Mathematical Modeling, Mathematic Model MATLAB及其在数学建模中的应用 秦川棋,王亭,金元峰 延边大学理学院,吉林延吉 Email: yfkim@https://www.wendangku.net/doc/6018769971.html, 收稿日期:2015年7月22日;录用日期:2015年8月11日;发布日期:2015年8月18日

MATLAB数学建模大作业

******大学 本科实验报告 课程名称:****建模与仿真 设计专题:单服务员的排队模型学生姓名:*** 学号:********** 2012年04月30日

一、实验题目和要求 实验题目: 在某商店有一个售货员,顾客陆续来到,售货员 逐个地接待顾客。当到来的顾客较多时,一部分 顾客便须排队等待,被接待后的顾客便离开商店。 设:a.顾客到来间隔时间服从参数为5分钟的指 数分布;b.对顾客的服务时间服从[3,12]上的均 匀分布;c.排队按先到先服务规则,队长无限制, 并假定一个工作日为8小时,时间以分钟为单位。 要求: 1)模拟1个工作日内完成服务的个数及顾客平均 等待时间t。 2)模拟10个工作日,求出平均每日完成服务的个 数及每日顾客的平均等待时间 3)用柱状图画出10个工作日的平均每日完成的 服务个数及每日顾客的平均等待时间。 二、程序结构图(或功能说明) 文件夹中的m文件在j取1时模拟单工作日的服务 情况,j取1到10时模拟10个工作日的服务情况。 三、程序流程图

NO YES NO i=i+1 计算第i 个顾客离开时的时刻t 计算第i+1个顾客的等待时间s 记录i 值,跳出循环 计算第i+1个顾客的等待时间s 计算第i 个顾客离开时的时刻t 构造顾客间隔时间序列(TjM ) 构造顾客所需服务时间序列(TfM ) t>480 j=1

YES NO YES NO j=j+1 i=i+1 计算第i 个顾客离开时的时刻t 计算第i+1个顾客的等待时间s 记录i 值,跳出循环 计算第i+1个顾客的等待时间s 计算第i 个顾客离开时的时刻t 构造顾客间隔时间序列(TjM ) 构造顾客所需服务时间序列(TfM ) t>480 j=1 j<10

基于MATLAB的数学建模题

1求1到20的阶乘和M文件 function p=fac(n) %fac函数由于阶乘 if n==0 p=1; else p=1; i=1; while i<=n p=p*i; i=i+1; end end clear sum=0; for i==1:20 sum=sum+fac(i) end sum (1)

(2)运行结果 2、用起泡法排数 clc clear all s=[9 8 4 2 7 10 6 1 5 3]; %要排序的数列Ls=length(s); for i=1:Ls-1 for j=1:Ls-i if s(j)>s(j+1) t=s(j); s(j)=s(j+1); s(j+1)=t; end

end end s %输出排序后结果 结果 3、matlab 有一函数 f(x,y)=x2+cos(xy)+2y ,写一程序,输入自变量的值,输出函数值. function z= yourfunc(x,y) % script for f(x,y)=x2+cos(xy)+2y % input scalar: x, y % output scalar: z % written by yourname % 10 May 2010 z=x^2+cos(x*y)+2*y;

end 运行结果 4、小球下落问题 h = zeros(11,1); h(1) = 100; for i = 2:11 h(i) = h(i-1)/2; end % 第10次反弹有多高?h(11)

% 它在第10次落地时,共经过多少米? 2*sum(h(1:10))-h(1) 结果如下 5、矩阵问题 有一个4行5列的矩阵,编程求出其最大值以及最大值所处位置clc; clear all; A = rand(4, 5); m = A(1); ind = [1 1]; for i = 1 : size(A, 1) for j = 1 : size(A, 2) if m < A(i, j)

matlab数学建模实例

第四周3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj()for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769;if (abs(x1)<1.0e-8)x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20;k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1;end x1k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1;end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while(abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

数学建模培训作业(MATLAB编程部分)

数学建模培训作业 (MATLAB 编程部分) 1. 请使用switch 语句将百分制的学生成绩转换为五级制的成绩输出。 2. 猜数游戏:首先由计算机随机产生一个 [1,100] 之间的一个整数,然后由用户猜测所产生的这个数。根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示 “High” ,小于则显示 “ Low ” ,等于则显示 “You won !”,同时退出游戏。用户最多有 7 次机会。 3. 使用for 结构计算1+2+3+…+100。 4. 设计一个九九乘法表。 5. 使用while 结构计算1+2+3+…+100。 6. 求1!+2!+ …+10!的值。 7. 编程生成三对角矩阵。 1 10000011100000001110000000111000000011100 000001110000000111000000011100 1 1 轾犏犏犏犏犏犏犏 犏犏 犏犏犏犏犏犏犏犏臌 8. 计算分段函数的值,要求根据不同的x 输入,给出相应的结果。 223135 x x y x x ì?-???+??=í?-????+?? 110011x x x x ?-< ?> 9. 已知1 1111 1(1)435721 n n p -?+-++-- ,编程求 的近似值。 10. 输入下面的矩阵

12345678 910111213141516A 轾犏犏犏=犏犏 犏臌 编程求该矩阵的对角线元素之和,并找出最大和最小元素的值以及其所在的行、列号。 11. 求水仙花数。如果一个三位数的个位数、十位数和百位数的立方和等于该数自身, 则称该数为水仙花数。编一程序求出所有的水仙花数。 12. 给定两个实数a 、b 和一个正整数n ,计算()k a b +和()k a b -,其中n k ,,2,1 。 13. 编写函数,生成一个1!,2!,…,n!的阶乘表。 14. 编一个函数统计字符串中单词的个数。 15. 求n 阶勒让德多项式的值,其递归公式为: (,)((2* 1)**(1,) (p n x n x p n x n p n n =----- (0,) 1;(1,p x p x x == 16. 编写一个判断任意输入正整数是否为素数的函数文件,并在命令窗口调用。 17. 编写一个万年历计算程序,当输入年月日后,能够计算出该日是星期几。

用matlab解决数学建模

2、已知速度曲线v(t) 上的四个数据点下表所示 t=[0.15,0.16,0.17,0.18]; v=[3.5,1.5,2.5,2.8]; x=0.15:0.001:0.18 y=i n t e r p1(t,v,x,'s p l i n e') S=t r a p z(x,y) p=p o l y f i t(x,y,5); d p=p o l y d e r(p); d p x=p o l y v a l(d p,0.18) 运行结果 S= 0.0687 Dpx=- 3、计算图片文件tu.bmp 给出的两个圆A,B 的圆心,和两个圆的两条外公切线和两条内公切线的切点的坐标。 (1)计算A 圆的圆心坐标 I=imread('tu.bmp'); [m,n]=size(I) BW=im2bw(I) BW(:,200:512)=1; figure, imshow(BW) ed=edge(BW); [y,x]=find(ed); x0=mean(x), y0=mean(y) r1=max(x)-min(x),r2=max(y)-min(y) r=(r1+r2)/4 x0 =109.7516 y0 =86.7495 r1 =162 r2 =158 r =80 (2)B圆的圆心坐标和半径 I=imread('tu.bmp'); BW=im2bw(I) BW(:,1:200)=1; imshow(BW) ed=edge(BW); [y,x]=find(ed); x0=mean(x), y0=mean(y) r1=max(x)-min(x),r2=max(y)-min(y) r=(r1+r2)/4 x0 =334.0943 y0 =245.7547 r1 =165 r2 =158 r = 80.7500

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