数学建模编程重要知识点文档格式.docx

上传人:b****5 文档编号:18309512 上传时间:2022-12-15 格式:DOCX 页数:16 大小:86.45KB
下载 相关 举报
数学建模编程重要知识点文档格式.docx_第1页
第1页 / 共16页
数学建模编程重要知识点文档格式.docx_第2页
第2页 / 共16页
数学建模编程重要知识点文档格式.docx_第3页
第3页 / 共16页
数学建模编程重要知识点文档格式.docx_第4页
第4页 / 共16页
数学建模编程重要知识点文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数学建模编程重要知识点文档格式.docx

《数学建模编程重要知识点文档格式.docx》由会员分享,可在线阅读,更多相关《数学建模编程重要知识点文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

数学建模编程重要知识点文档格式.docx

plot(x,x.^3);

gridon;

title'

plot-y=x^3'

subplot(2,3,2);

loglog(x,x.^3);

loglog-logy=3logx'

subplot(2,3,3);

plotyy(x,x.^3,x,x);

plotyy-y=x^3,logy=3logx'

subplot(2,3,4);

semilogx(x,x.^3);

semilogx-y=3logx'

subplot(2,3,5);

semilogy(x,x.^3);

semilogy-logy=x^3'

在数据处理和分析应用的其他函数

名称

含义

min

最小值

max

最大值

Mean

平均值

median

中位数

std

标准差

diff

相邻元素的差

sort

排序

length

个数

norm

欧氏(Euclidean)长度

sum

总和

prod

总乘积

dot

内积

cumsum

累计元素总和

cumprod

累计元素总乘积

cross

外积(叉积)

下面是矩阵操作的一些例子:

a=[1,4,6,8,10]%一维矩阵

a(3)%a的第三个元素

6

»

x=[12345678

4567891011];

%二维2x8矩阵

x(3)%x的第三个元素

2

x([125])%x的第一、二、五个元素

143

x(2,3)%x的第二行第三列的元素

ans=

x(1:

5)%x的第前五个元素

14253

x(10:

end)%x的第十个元素后的元素

869710811

-1:

2)%x的第十个元素和第二个元素的倒排

857463524

x(find(x>

5))%x中大于5的元素

67869710811

x(4)=100%给x的第四个元素重新给值

x=

12345678

410067891011

x(3)=[]%删除第三个元素(不是二维数组)

Columns1through12

14100364758697

Columns13through15

10811

x(16)=1%加入第十六个元素

Columns1through12

Columns13through16

108111

当元素很多的时候,则须采用以下的方式:

x=(1:

2.5:

120);

%以:

起始值=1,增量值=2,终止值=120的矩阵

例建立矩阵A,然后找出大于4的元素的位置。

(1)建立矩阵A。

A=[4,-65,-54,0,6;

56,0,67,-45,0]

(2)找出大于4的元素的位置。

find(A>

4)

例3-1分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。

程序1:

首先建立命令文件并以文件名f2c.m存盘。

clear;

%清除工作空间中的变量

f=input('

InputFahrenheittemperature:

'

);

c=5*(f-32)/9

然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为:

73

c=

22.7778

例3-2输入x,y的值,并将它们的值互换后输出。

程序如下:

x=input('

Inputxplease.'

y=input('

Inputyplease.'

z=x;

x=y;

y=z;

disp(x);

disp(y);

例3-3求一元二次方程ax2+bx+c=0的根。

程序如下:

a=input('

a=?

b=input('

b=?

c=input('

c=?

d=b*b-4*a*c;

x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];

disp(['

x1='

num2str(x

(1)),'

x2='

num2str(x

(2))]);

例3-4计算分段函数的值。

x=input('

请输入x的值:

ifx<

=0

y=(x+sqrt(pi))/exp

(2);

else

y=log(x+sqrt(1+x*x))/2;

end

y

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

price<

200没有折扣

200≤price<

5003%折扣

500≤price<

10005%折扣

1000≤price<

25008%折扣

2500≤price<

500010%折扣

5000≤price14%折扣

输入所售商品的价格,求其实际销售价格。

price=input('

请输入商品价格'

switchfix(price/100)

case{0,1}%价格小于200

rate=0;

case{2,3,4}%价格大于等于200但小于500

rate=3/100;

casenum2cell(5:

9)%价格大于等于500但小于1000

rate=5/100;

casenum2cell(10:

24)%价格大于等于1000但小于2500

rate=8/100;

casenum2cell(25:

49)%价格大于等于2500但小于5000

rate=10/100;

otherwise%价格大于等于5000

rate=14/100;

price=price*(1-rate)%输出商品实际销售价格

3.try语句

语句格式为:

try

语句组1

catch

语句组2

try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。

例3-7矩阵乘法运算要求两矩阵的维数相容,否则会出错。

先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。

A=[1,2,3;

4,5,6];

B=[7,8,9;

10,11,12];

C=A*B;

C=A.*B;

C

lasterr%显示出错原因

例5-6在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx),标记两曲线交叉点。

x=linspace(0,2*pi,1000);

y1=0.2*exp(-0.5*x).*cos(4*pi*x);

y2=2*exp(-0.5*x).*cos(pi*x);

k=find(abs(y1-y2)<

1e-2);

%查找y1与y2相等点(近似相等)的下标

x1=x(k);

%取y1与y2相等点的x坐标

y3=0.2*exp(-0.5*x1).*cos(4*pi*x1);

%求y1与y2值相等点的y坐标

plot(x,y1,x,y2,'

k:

x1,y3,'

bp'

MATLAB提供的统计分析绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。

例5-14绘制图形:

(1)某企业全年各季度的产值(单位:

万元)分别为:

2347,1827,2043,3025,试用饼图作统计分析。

pie([2347,1827,2043,3025]);

title('

饼图'

legend('

一季度'

'

二季度'

三季度'

四季度'

M文件

MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件.函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为:

function因变量名=函数名(自变量名)

函数值的获得必须通过具体的运算实现,并赋给因变量.

M文件建立方法:

1.在Matlab中,点:

File->

New->

M-file

2.在编辑窗口中输入程序内容

3.点:

Save,存盘,M文件名必须

与函数名一致。

例:

定义函数f(x1,x2)=100(x2-x12)2+(1-x1)2

1.建立M文件:

fun.m

functionf=fun(x)

f=100*(x

(2)-x

(1)^2)^2+(1-x

(1))^2

2.可以直接使用函数fun.m

例如:

计算f(1,2),只需在Matlab命令窗口键入命令:

x=[12]

fun(x)

Y

【例】采用模型

画一组椭圆。

t=[0:

pi/50:

2*pi]’;

a=[0.5:

.5:

4.5];

X=cos(t)*a;

Y=sin(t)*sqrt(25-a.^2);

plot(X,Y),axis('

equal'

),xlabel('

x'

),ylabel('

y'

AsetofEllipses'

例5-3分析下列程序绘制的曲线。

x1=linspace(0,2*pi,100);

x2=linspace(0,3*pi,100);

x3=linspace(0,4*pi,100);

y1=sin(x1);

y2=1+sin(x2);

y3=2+sin(x3);

x=[x1;

x2;

x3]'

y=[y1;

y2;

y3]'

plot(x,y,x1,y1-1)

一、问题提出

市场上有n种资产

(i=1,2……n)可以选择,现用数额为M的相当大的资金作一个时期的投资。

这n种资产在这一时期内购买

的平均收益率为

,风险损失率为

,投资越分散,总的风险越小,总体风险可用投资的

中最大的一个风险来度量。

购买

时要付交易费,(费率

),当购买额不超过给定值

时,交易费按购买

计算。

另外,假定同期银行存款利率是

,既无交易费又无风险。

=5%)

已知n=4时相关数据如下:

(%)

(元)

S1

28

2.5

1

103

S2

21

1.5

2

198

S3

23

5.5

4.5

52

S4

25

2.6

6.5

40

试给该公司设计一种投资组合方案,即用给定达到资金M,有选择地购买若干种资产或存银行生息,使净收益尽可能大,使总体风险尽可能小。

基本假设:

1.投资数额M相当大,为了便于计算,假设M=1;

2.投资越分散,总的风险越小;

3.总体风险用投资项目

中最大的一个风险来度量;

4.n种资产S

之间是相互独立的;

5.在投资的这一时期内,ri,pi,qi,r0为定值,不受意外因素影响;

6.净收益和总体风险只受ri,pi,qi影响,不受其他因素干扰。

符号规定:

Si——第i种投资项目,如股票,债券

ri,pi,qi----分别为Si的平均收益率,交易费率,风险损失率

ui----Si的交易定额

-------同期银行利率

xi-------投资项目Si的资金a-----投资风险度

Q----总体收益ΔQ---总体收益的增量

2.购买Si所付交易费是一个分段函数,即

pixixi>

ui

交易费=

piuixi≤ui

而题目所给定的定值ui(单位:

元)相对总投资M很小,piui更小,

可以忽略不计,这样购买Si的净收益为(ri-pi)xi

3.要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型:

目标函数MAX

MINmax{qixi}

约束条件

=M

xi≥0i=0,1,…n

a.在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限a,使最大的一个

风险qixi/M≤a,可找到相应的投资方案。

这样把多目标规划变成一个目标的线性规划。

模型1固定风险水平,优化收益

目标函数:

Q=MAX

约束条件:

≤a

,xi≥0i=0,1,…n

b.若投资者希望总盈利至少达到水平k以上,在风险最小的情况下寻找相应的投资组合。

模型2固定盈利水平,极小化风险

R=min{max{qixi}}

≥k,

,xi≥0i=0,1,…n

c.投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合。

因此对风险、收益赋予权重s(0<s≤1),s称为投资偏好系数.

模型3目标函数:

mins{max{qixi}}-(1-s)

=M,xi≥0i=0,1,2,…n

模型1为:

minf=(-0.05,-0.27,-0.19,-0.185,-0.185)(x0x1x2x3x4)T

x0+1.01x1+1.02x2+1.045x3+1.065x4=1

s.t.0.025x1≤a

0.015x2≤a

0.055x3≤a

0.026x4≤a

xi≥0(i=0,1,…..4)

由于a是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者有不同的风险度。

我们从a=0开始,以步长△a=0.001进行循环搜索,编制程序如下:

a=0;

while(1.1-a)>

c=[-0.05-0.27-0.19-0.185-0.185];

Aeq=[11.011.021.0451.065];

beq=[1];

A=[00.025000;

000.01500;

0000.0550;

00000.026];

b=[a;

a;

a];

vlb=[0,0,0,0,0];

vub=[];

[x,val]=linprog(c,A,b,Aeq,beq,vlb,vub);

a

x=x'

Q=-val

plot(a,Q,'

.'

),axis([00.100.5]),holdon

a=a+0.001;

end

xlabel('

a'

),ylabel('

Q'

例1-4求解线性方程组。

a=[2,-3,1;

8,3,2;

45,1,-9];

b=[4;

2;

17];

x=inv(a)*b

矩阵的逆

对于一个方阵A,如果存在一个与其同阶的方阵B,使得:

B=B·

A=I(I为单位矩阵)

则称B为A的逆矩阵,当然,A也是B的逆矩阵。

求一个矩阵的逆是一件非常烦琐的工作,容易出错,但在MATLAB中,求一个矩阵的逆非常容易。

求方阵A的逆矩阵可调用函数inv(A)。

例2-11用求逆矩阵的方法解线性方程组。

Ax=b

其解为:

x=A-1b

方阵的行列式

把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。

在MATLAB中,求方阵A所对应的行列式的值的函数是det(A)。

1.求标准方差

在MATLAB中,提供了计算数据序列的标准方差的函数std。

对于向量X,std(X)返回一个标准方差。

对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。

std函数的一般调用格式为:

Y=std(A,flag,dim)

其中dim取1或2。

当dim=1时,求各列元素的标准方差;

当dim=2时,则求各行元素的标准方差。

flag取0或1,当flag=0时,按σ1所列公式计算标准方差,当flag=1时,按σ2所列公式计算标准方差。

缺省flag=0,dim=1。

2,一般的曲线拟合:

p=lsqcurvefit(‘Fun’,p0,xdata,ydata)

其中Fun表示函数Fun(p,data)的M函数文件,p0表示函数的初值.lsqcurvefit()命令的求解问题形式是

若要求解点x处的函数值可用程序f=Fun(p,x)计算.

例如,已知函数形式

,并且已知数据点

要确定四个未知参数a,b,c,d.

使用curvefit命令,数据输入

初值输

并且建立函数

的M文件(Fun.m).若定义

,则输出

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1