数学建模竞赛-程序设计训练题目

2018-12-19 21:41

Matlab程序设计题目

电子科技大学应用数学学院 张勇

2008-4-27

各题目求解文档组成:

(1)相应函数文件和测试程序文件(程序有适当的注释); (2)程序运行结果(用一个word文件编排所有运行结果)。

一. 有一个向量v??a1,a2,?,an?,编程求解下列式子:

s1??ai2i?1i?1n,

22s2?a12?a3???au其中u为不超过n的最大奇数。

自己给出测试例子,并给出运算结果。 二. 模拟一次扑克牌洗牌过程,输出牌的顺序。

%4*13+2

paihao=[11:23,31:43,51:63,71:83,98,99]; if length(paihao)~=54,

error('error in number') end

PAIXU=randperm(54); fapai = paihao(PAIXU) 三. 模拟1000次投币过程,输出出现正面的频率。

程序1:

num_zheng=0; for i=1:1000, cur=rand; if cur<0.5,

num_zheng=num_zheng + 1; end end

f = num_zheng/1000

程序2:

更精练的代码?精练还有什么好处? 四. 问题:现有一个文本文件,格式如下, 19:35 07:47

19:14 07:12 19:21 07:19 18:53 08:23 19:07 07:05 19:00 06:58 21:37 08:04 20:40 07:40 21:44 07:22 21:30 07:25 19:28 06:48 22:00 07:10

需要将其以0:00时刻记为初始时刻,转为分钟。 准备知识:

(1) 文件打开(fopen),关闭(fclose); (2) 读取各行数据(fgetl)

(3) 解析各行数据,并转换数据 注:处理方法不唯一。 五. (适中)有一个文件mytest.txt,内容如下: %请将此文件中的数值读取为1个向量 1 4 7 2 5 8 3 6 9 2 7 8 6 4 特点:第2行开始为数值数据。 请编程将这个文件中从第2行开始的所有数保存为1个列向量(按行先后顺序排列这些数) 六. (适中)编写一个函数实现将一个矩阵数据保存为文本文件格式。 参考接口如下:

function flag=writemx(filename,A) %input:

%A 待保存的矩阵或向量 %filename 输出的文本文件名 %

%output:

%flag 0 保存失败;1保存成功 %

考核目的:文件函数操作 七. (较难)编写一个函数读取如下格式的文本文件,并将文件内容按照一定格式返回。返回格式自己设计。函数的输入参数为文件名,输出参数为文件的数字矩阵。

测试时就采用有如下内容的文件。注意:实际上要读取的行数不确定。 1991 353 13:30 1992 467 14:50 1993 1010 09:30 注意:第3列是时刻数据,要求提取出小时和分钟。 提示:可能用到的一些函数有fopen,fgetl,fclose等。

2x1x2?x3?x4八. (较难)有一个函数y?1?,另有2x5?x3一个函数f(x)定义如下。

?y?y?y?y?yx1?x2?x3?x4?x5。 ?x1?x2?x3?x4?x5编写函数完成计算函数f(x)在任意点的函数值的功能。 1. 创建符号变量x,编写符号表达式y; syms x1 x2 x3 x4 x5

e1=sqrt(x1*x2+x3+x4^2)/(x5+x3^2); y=sqrt(1+e1);

2. 利用diff计算偏导并创建f(x)的表达式

funx = diff(y,x1)*x1+ diff(y,x2)*x2+ diff(y,x3)*x3+ diff(y,x4)*x4+ diff(y,x5)*x5;

3. 复制funx表达式文本,并粘贴到一个程序文件 4. 在命令行输入myfun(1:5)检查语法是否正确

%diff(exp,x) %exp为符号表达式 九. (难)求解下列优化模型:

minf(x)f(x)?2?1?x1?x2?10??0.5?x1,x2,x3?5, s.t.??1?x4?3?1?x?45?其中目标函数如上题所示。

要求:分别采用蒙特卡罗法和Matlab提供的fmincon函数求解,并比较结果。 提示:

(1) 函数char:可以将一般的变量转变为字符串。 (2) 函数subs:替换函数

(3) 优化模型的目标函数程序可以通过文件操作产

生(根据这类文件的一般格式)。

一段参考代码: syms x1 x2

y = x1^2+x2^2;

f=diff(y,x1)+diff(y,x2) strfun = char(f);

strfun = subs(strfun,'x1','x(1)') strfun = subs(strfun,'x2','x(2)')

参考代码结果输出: f =

2*x1+2*x2

strfun = 2*(x(1))+2*x2

strfun =

2*(x(1))+2*(x(2))


数学建模竞赛-程序设计训练题目.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:经济评价

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: