搜档网
当前位置:搜档网 › 数学实验与数学建模(matlab在建模中的应用)

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

数学实验与数学建模(matlab在建模中的应用)
数学实验与数学建模(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运行期间(即程序退出之前),除非调用Clear函数,否则Matlab会在内存中保存全部变量值,包括命令输入的变量以及执行程序文件所引入的变量。清除工作空间变量值也可以通过Edit下拉菜单中的Clear Workspace命令实现。Clear函数可以清除内存中的所有变量。

Matlab命令窗口输入的信息会保持在窗口中,并可通过通过滚动条重新访问。一旦信息量超出其滚动内容容量,则最早输入的信息将会丢失。可以通过在命令窗口中输入clc 命令来清除命令窗口中的内容,也可以通过Edit下拉菜单中的Clear Command Window子菜单清除,但这个操作仅清除命令窗口中的内容,但不能删除变量,要删除变量,只能通过clear.

为在命令窗口中能够更加清晰地显示字母及数字,Matlab提供了format函数的几种功能。其中

format short e

是系统默认的设置,显示5位数字,

format long e

显示格式转换为16位数字加3位指数位的显示格式.

format compact

命令将剔除显示中多余的空行或空格. 这此属性值也可通过单击File菜单的s

preference

子菜单,弹出的s

preference设置窗口后选择Command Window项进行设置(如图

6.2).

图6.1 图6.2

使用Matlab 过程中有两个有用的组合键“^c ”(Crtl+c)用于终止程序或函数的执行,也可用于退出暂停的程序或函数;“^p ”(Ctrl+p)用于将最近键入的信息显示在Matlab 命令窗口中,按Enter 键可再次执行该命令,连续按两次“^p ”,可调用上两次的输入信息,以此类推.

6.1.2 Matlab 的基本语法

Matlab 允许用户创建的变量名不可超过63个字符,多余部分将被忽略掉.变量名要求以大写或小写字母开头,后面跟大小写字母,数字或下划线。字符间不允许有空格. 变量名区分大小写,例变量名A1与a1表示不同变量. 此外,不能使用希腊字母,或者上下标字符作为变量名,但可以拼写希腊字母,或在下标字符前加入下划线表示变量. 例如,1λ可写为lamda_1.

Matlab 在命令窗口运行时,要求首先在“>>”提示符后定义一个或多个变量,并进行赋值,然后表达式才能够使用变量。赋值运算符为“=”,输入变量名和等号后,按Enter 表示结束.例如要实现2=a ,则要在命令窗口中进行以下信息交互:

>> a=2 用户输入

a = 系统响应 2

注:表达式后加分号(;)可省略系统响应信息的显示.

Matlab 允许在一行中输入多个表达式,表达式间以逗号或分号进行分隔,行尾以Enter 键结束.用逗号分隔时系统会回显输入的值,如果用分号分隔表达式,不会输出响应信息. 例如按如下格式输入信息:

>> a=2;b=2.5,c=3; 系统显示为:

b =

2.5000

此时变量a 和b 的值不显示,但内存中存在. 标量的加、减、乘、除和幂运算分别用+,- ,*,/,^表示,默认的运算次序为:幂运算为最高,其次为乘除,最后为加减。同时在表达式中可用圆括号来确定运算次序。

例6-1计算当6,3,2===c b a ,时c

ab t ??

?

??+=213的值.

输入:

>> a=2;b=3;c=6;t=(3/(1+2*a*b))^c 结果: t =

1.5103e-004

Matlab 软件中包含了大量的函数,表6.1、表6.2、表6.3、表6.4给出了一些常用的函数及其功能说明.

表6.1 常用初等函数的Matlab表示

数学函数Matlab表示

exp(x)

x

e

sqrt(x)

x

ln log(x)

x

lg log10(x)

x

x abs(x)

)

sgn(x sign(x) 表6.2 三角函数和双曲函数的Matlab表示

三角函数双曲函数

数学函数原函数反函数原函数反函数

表6.3 Matlab复数运算函数

Matlab函数功能

a Complex(a,b) 表示复数bi abs(z) 取复数z的模

conj(z) 取复数z的共扼复数

real(z) 取复数z的实部

imag(z) 取复数z的虚部

表6.4 小数转换为整数的Matlab函数

Matlab函数功能

fix(x) 舍去小数部分

round(x) 四舍五入

ceil(x) 取上整

floor(x) 取下整

Matlab 软件中还有一些内置的常量,如表6.5所示

表6.5 部分常量的Matlab 表示

数学常量

Matlab 表示 π

pi ∞

inf 虚数单位i

i(或j)

一些特殊字符在Matlab 中有特殊的功能,如表6.6所示

表6.6 特殊字符及其功能说明 符号 名称 功能

有了上述基本知识后,我们就可以利用Matlab 进行一些简单的运算了. 例6-2 计算7ln 1arcsin 3

sin

2e -+π

输入:

>> sin(pi/3)+asin(1)-exp(2)*log(7) 结果: ans =

-11.9416

注:命令窗口作为计算器应用且未将计算结果分配给表达式时,Matlab 默认将计算结果分配给变量名ans.

6.1.3 Matlab 的编辑器

为了避免在命令窗口中输入多个表达式或重复输入一组表达式,且输入的表达式在执行完后能够进行修改, Matlab 定义了程序文件:包含一组命令的文件,文件中每一命令行的执行都同在命令窗口里的执行一样.程序文件可由Matlab 编辑器创建,编辑器的启动可由

File 下拉菜单中New 子菜单下的file M 来完成,窗口如图6.3所示

.

使用Matlab 编辑器创建的程序文件,点击图6.3所示的Run 图标,可执行文件. 但在执行前首先要保存,保存可用File 下拉菜单中的as Save 子菜单,文件扩展名“.m ”将自动添加到文件名末尾. 文件名的命名规则与变量名的命名规则相同.

例6-3 编写一个m 文件,用来计算下面的表达式

)(θ2)(πθcos 2r R r R S L +++=

其中)arcsin(

θS

r

R =,50,12,30===S r R ,求L m 文件如下: R=30; r=12; S=50;

theta=asin((R-r)/S);

L=2*S*cos(theta)+pi*(R+r)+2*theta*(R-r) 运算结果: >> L = 238.4998

Matlab 编辑器的另外一个重要的功能是用来定义函数. 函数具有模块化、结构化和重用性的特点,是Matlab 程序的重要组成部分,下面我们给出Matlab 定义函数的方法.

Matlab 定义函数格式如下:

Function [OutputVariables ]=FunctionName(InputVariables )

图6.3

%Comments Expression(s)

其中,OutputVariables 是输出变量,变量之间用逗号隔开;InputVariables 是输入变量,变量之间用逗号隔开;Function 是保留字;FunctionName 是函数名称,命名规则与变量命名规则一致;函数文件可以存储在任何已定义或即将定义的路径下,但文件名必须是FunctionName.m ; %Comments 是函数程序的注释部分,为了增强程序的可读性;Expression(s)是实现函数功能的主体程序,由一行或多行Matlab 语句组合完成,函数的定义是在Matlab 的编辑器中完成的.

注:当函数只是为了实现某一特定功能,而不涉及参数传递时,OutputVariables 或InputVariables 是可以省略的.

例6-4 定义函数xy x y x f sin ),(2

+=,并求当2

,5π

==y x 时的函数值.

定义函数程序如下(在编辑器中输入): function value1=hanshu1(x,y) value1=x^2+sin(x*y); 保存为hanshu1.m

在命令窗口中输入如下信息: >> hanshu1(5,pi/2) 结果: ans = 26

6.2 高等数学与Matlab

Matlab 的符号运算工具箱包含了微积分运算、解微分方程等几个方面的工具,本节我们主要介绍利用Matlab 软件辅助解决高等数学中的相关计算问题.

6.2.1 求函数极限

求函数极限是高等数学中的重要计算,它在数学模型的分析和预测中起着重要的作用,Matlab 提供了求极限的符号函数limit 来完成这项工作,其调用格式和功能如表6.7所示.

表6.7 limit 函数使用说明

格式

功能

l=limit(S,x,a) 求符号函数S ,当a x →时的极限 l=limit(S,x,a,’right ’) 求符号函数S ,当+

→a x 时的右极限 l=limit(S,x,a,’left ’)

求符号函数S ,当-

→a x 时的左极限

注:对于符号函数S ,也可以是普通的Matlab 内置或自定义函数. 下面通过实例来说明这一函数用法: 例6-5 求x

x x

x e e -∞→+∞

→lim lim 和

输入: >> syms x

>> r_value=limit(exp(x),x,+inf), l_value=limit(exp(x),x,-inf) 结果: r_value = inf

l_value = 0 注:“syms x ”语句是用来创建符号变量. 例6-6 求x

x x

x e e 01

lim lim →→-和

输入:

>> syms x

>> l_value=limit(exp(1/x),x,0,'left'),value=limit(exp(1/x),x,0) 结果: l_value = 0

value = NaN

注:NaN 在Matlab 里面表示数值(结果)不存在.

6.2.2 求导运算

求函数的导数和微分是高等数学中的基本计算,也是解决实际问题过程中的常用的一种方法,Matlab 提供了专门求导数的符号函数diff ,能够帮助解决求导数和微分的问题.diff 的调用格式和功能如表6.8所示

表6.8 diff 函数使用说明

格式 功能

d=diff(S,’x ’) 求符号函数S 关于变量x 的一阶导数(偏导数) d=diff(S,’x ’,n)

求符号函数S 关于变量x 的n 阶导数(偏导数)

注:对于符号函数S ,也可以是普通的Matlab 内置或自定义函数.

下面我们通过两个实例来说明这函数的用法:

例6-7 求导数x dx d

sin ,求偏导数

3

3

?)sin(?,?)sin(?x xy x xy 输入:

>> df1=diff('sin(x)','x'),df2=diff('sin(x*y)','x'),... df3=diff('sin(x*y)','x',3) 结果: df1 = cos(x) df2 =

cos(x*y)*y df3 =

-cos(x*y)*y^3

或输入: >> syms x y

>> df1=diff(sin(x),x),df2=diff(sin(x*y),x),... df3=diff(sin(x*y),x,3)

也可得到相同的结果,后面类似问题两种输入方法均可,不再赘述. 例6-8 求函数xy x y x f sin ),(2

+=对变量x 的一阶、二阶偏导.

在例6-4定义的函数基础上,我们在命令窗口中输入如下信息: >> syms x y

>> df1=diff(hanshu1(x,y),x),df2=diff(hanshu1(x,y),x,2) 结果: df1 =

2*x+cos(x*y)*y df2 =

2-sin(x*y)*y^2

多元函数的雅克比矩阵是一个非常重要的概念,多元函数的积分、矩阵微积分及坐标转换等都要用到它,在Matlab 中用jacobian 函数求雅克比矩阵,其调用格式如下:

j=jacobian(F,V)

其中F 是函数向量,V 是自变量向量.

例6-9 计算函数向量T t e xyz x

f ])sin([2=关于自变量t z y x ,,,的雅克比矩阵.

在命令窗口中输入下列命令: >> syms x y z t;

>> f=[x^2 sin(x*y*z) exp(t)]; >> v=[x y z t]; >> j=jacobian(f,v) 输出结果为: j =

[ 2*x, 0, 0, 0] [ cos(x*y*z)*y*z, cos(x*y*z)*x*z, cos(x*y*z)*x*y, 0] [ 0, 0, 0, exp(t)]

注:关于向量、矩阵的表示及相关运算,我们将在下一节作详细介绍,这里主要介绍一下jacobian 函数的用法.

6.2.3 积分运算

Matlab 提供了两类计算积分的函数,一类是符号积分函数,一类是数值积分函数.下面我们先介绍符号积分函数int ,其调用格式和功能如表6.9所示:

表6.9 int 函数使用说明

格式 功能

int(F) 求符号表达式F 求关于自变量的不定积分 int(F,’s ’) 求符号表达式F 求关于自变量s 的不定积分 int(F,a,b) 求符号表达式F 当自变量从a 到b 的定积分 int(F,’s ’,a,b)

求符号表达式F 当自变量s 从a 到b 的定积分

下面我们通过实例来说明函数的用法: 例6-10 计算?=

xdx y f sin 1和dy xy dx f x ?

?-=2

10

1

2

输入:

>> syms x y

>> f1=int(y*sin(x),x),f2= int(int(x*y,y,0,sqrt(1-x^2)),x,0,1) 结果: f1 =

-y*cos(x) f2 =

1/8

下面我们来介绍数值积分函数quad,dblquad,triplequad 的用法

表6.10 数值积分函数使用说明

格式

功能

quad(F,a,b)

从a 到b 计算符号函数F 的数值积分 dblquad(F,x1,x2,y1,y2)

计算符号函数F 在区域[]

2121,,,y y x x 上的二重数值积分 triplequad(F,x1,x2,y1,y2,z1,z2)

计算符号函数F 在区域

[]212121,,,,,z z y y x x 上的三重数值积分

注:关于上述三个函数更详细的用法请参考软件提供的帮助. 例6-11 计算xdy y dx f sin 11

1

2

?

?

-=

和???-+=π0

10

1

1

)cos sin (2dz x z x y dy dx f

输入:

>>f1=dblquad('sqrt(y)*sin(x)',-1,1,0,2),...

f2=triplequad('y*sin(x)+z*cos(x)',0,pi,0,1,-1,1) 结果: f1 =

-4.4306e-018 f2 =

2.0000

6.2.4 微分方程的求解

Matlab 提供了两类求解微分方程的函数,一类是求微分方程的符号解,一类是求微分方程的数值.本部分主要介绍利用dsolve 求微分方程的符号解,其调用格式如表6.11.

表6.11 dsolve 函数使用说明

格式

功能

dsolve(’equation ’)

求方程equation 通解,自变量默认为t dsolve(’equation ’,’condition ’)

求方程equation 满足初始条件condition

的特解,自变量默认为t

dsolve(’equation ’,’x ’)

求方程equation 通解,自变量为x

数学建模(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+ π →

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

第四章作业 第二题: 针对严重的交通情况,国家质量监督检验检疫局发布的国家标准,车辆驾驶人员血液中的酒精含量大于或等于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及其在数学建模中的应用

Modeling and Simulation 建模与仿真, 2015, 4(3), 61-71 Published Online August 2015 in Hans. https://www.sodocs.net/doc/4619143852.html,/journal/mos https://www.sodocs.net/doc/4619143852.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.sodocs.net/doc/4619143852.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.sodocs.net/doc/4619143852.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.sodocs.net/doc/4619143852.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

数学建模作业题+答案

数学建模MATLAB 语言及应用上机作业1 1. 在matlab 中建立一个矩阵135792468101234501234A ???? ? ?=??-----???? 答案: A = [1,3,5,7,9;2,4,6,8,10;-1,-2,-3,-4,-5;0,1,2,3,4] 2. 试着利用matlab 求解出下列方程的解(线性代数22页例14) 1234124 23412342583692254760 x x x x x x x x x x x x x x +-+=??--=?? -+=-??+-+=? 答案: A=[2 ,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6]; B=[8;9;-5;0]; X=A\B 或 A=[2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6] b=[8,9,-5,0]' X=inv(A)*b 3. 生成一个5阶服从标准正态分布的随机方阵,并计算出其行列式的值,逆矩阵以及转置矩阵。 答案: A=randn(5) det(A) inv(A) A' 4. 利用matlab 求解出 110430002A -?? ??=-?? ???? 的特征值和特征向量。 答案: A=[-1,1,0;-4,3,0;0,0,2] [V,D]=eig(A)

5.画出衰减振荡曲线3 sin3t y e t -=在[0,4]π上的图像。 要求,画线颜色调整为黑色,画布底面为白色。 (在实际中,很多打印机时黑白的,因此大多数作图要考虑黑白打印机的效果。) 给出恰当的x ,y 坐标轴标题,图像x 轴的最大值为4π。 6. 生成一个0-1分布的具有10个元素的随机向量,试着编写程序挑选出向量中大于0.5的元素。 数学建模和Matlab 上机作业2(2016-9-20) 跟老师做(不用整合进作业中): 上机演示讲解:函数,递归的两个例子的写法。 附: 1. Fibonacci Sequence (斐波那契数列) 在数学上,费波那西数列是以递归的方法来定义: F1= 1;F2= 1;F (n )=F (n-1)+F (n-2) 2. 阶乘举例: 数学描述:n!=1×2×……×n ;计算机描述:n!=n*(n-1)! 自己做(需要整合进作业中,提交到系统中): 1. 写一个m 文件完成分值百分制到5分制的转换(即输入一个百分制,转换后输出一个5级对应的得分,联系条件控制语句)。 对应规则如下: 优秀[90,100] 良好[80,90) 中等[70,80) 及格[60,70) 不及格[0,60] 完成函数后,利用命令行对所写的函数进行测试。 答案: score=input('your score is: '); if score>=90 && score<=100 disp('优秀'); if score>=80 && score<90 disp('良好'); if score>=70 && score<80 disp('中等'); if score>=60 && score<70 disp('及格'); if score>=0 && score<60 disp('不及格'); else disp('请输入正确的成绩');

10909-数学建模-应用MATLAB建模的一个例子

应用MATLAB 的一个例子 ——数学也是一门技术 王天顺 整理 本来想用 “数学也是一门技术”作题目,主要是基于两点,一是从数学的应用角度,它的确具备了作为一门技术的特征,这也就是今天我要通过一个例子要表达的;二是咱们在座的大多数都是从事职业教育的老师,不知道我理解得是不是正确,职业教育与普通教育的区别是较为侧重于教授技术,我主观上感觉这个题目和大家的关系更紧密一些。但是,这个题目有点太大了!和领导商量了一下还是换个题目吧。 首先可以证明:数学确是一门技术,比如说要从技术的定义入手,流行的做法是:查查《辞海》,查查相关的如《科学学辞典》和《科技辞典》等等,看看他们是怎样给技术定义的;其次,论述一下数学的确是符合这些定义的。 实际上,我也确实查阅过这些资料,可以说没有问题,一定可以找到证据证明这个论断! 注:“技术”一词的中文解释有两种,一种是以《辞海》为代表的解释,把技术定义为:(1 )泛指根据生产实践经验和自然科学原理而发展成的各种工艺操作方法与技能;(2)除操作技能外, 广义的还包括相应的生产工具和其他物质设备,以及生产的工艺过程或作业程序、方法。另一种是以《科学学辞典》和《科技辞典》为代表的解释,把技术定义为:是为社会生产和人类物质文化生活需要服务的,供人类利用和改造自然的物质手段、智能手段和信息手段的总和。 可见, “技术”一词所包含的内容除了有形的物化形态之外,还包括无形的智能形态方面。无形的智能形态的技术是客观存在的,在某种意义上说,这方面技术的作用并不亚于物化形态的技术,更不能为物化形态技术所取代(背景资料)。因此,有关“技术”的涵义,有人概括为:指的是有形的物化技术和无形的智能技术的总和。 当然,容易想到我们把数学看作一门技术,可能更多的是从技术的无形“智能形态”角度论述的。我想这只是他的一个方面,今天先给各位介绍的是一个例子,展现他的另一个方面,用数学(包括相关的软件)去解决一个实际问题,其过程就像“传统的”、物化形态的技术一样;其次,结合上述例子,探讨有关数学建模及相关培训指导工作的一般原则和步骤,谈一点个人对此项工作的认识;最后,介绍我校的这些年数学建模培训工作的一些具体做法。 一、足球比赛中的吊门问题 1. 问题:只考虑如下的因素:球与球门的距离为a ,守门员与球门的距离为b (假设在调 门过程中,守门员不能移动),球门高h ,守门员最大摸高H ,球出脚的初速度为0v ,与水平方向的夹角为α(称为初射角).针对下列数据求能吊门成功的α,h=2.44m ,H=3.20m ,s m v /300= ,重力加速度g=10m/s 2,针对下列几组数据分别给出具体能吊门成功的相应初射角范围,要求精度在小数点后第4位。 (1) a=6m ,b=1m ; (2) a=10m ,b=3m ; (3) a=20m ,b=5m ; 2. 问题分析 (1) 在不考虑空气阻力的情况下,抛射体的运动轨迹是抛物线:

matlab数学建模实例

第四周 3. 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 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; n=n+1; end n Seidel迭代法: function s=seidel(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1);

matlab数学建模实例

m a t l a b数学建模实例集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

第四周3. function y=mj() for x0=0::8 x1=x0^*x0^2+*; if (abs(x1)< 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)>= 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)>= 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 x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0);

k=1; while (abs(x1-x0)>= 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)>= x0=s; s=B*x0+G; n=n+1; end n Seidel迭代法: function s=seidel(a,d,x0) D=diag(diag(a));

相关主题