2014 数学建模练习题

更新时间:2024-03-31 06:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

练习1 基础练习

一、矩阵及数组操作:

1.利用基本矩阵产生3×3和15×8的单位矩阵、全1矩阵、全0矩阵、均匀分布随机矩阵([-1,1]之间)、正态分布矩阵(均值为1,方差为4)。

2.利用fix及rand函数生成[0,10]上的均匀分布的10×10的整数随机矩阵a,然后统计a中大于等于5的元素个数。

3.在给定的矩阵中删除含有整行内容全为0的行,删除整列内容全为0的列。

二、绘图:

4.在同一图形窗口画出下列两条曲线图像: y1=2x+5; y2=x^2-3x+1, 并且用legend标注。

5.画出下列函数的曲面及等高线: z=x^2+y^2+sin(xy).

三、程序设计:

6.编写程序计算(x在[-3,3],间隔0.01)

7.有一列分数序列:

1

求前15项的和。

8.用至少三种方法编写函数实现求任意整数n的阶乘。

9.将任意大于6的偶数m写成两个素数p1、p2的和(试着写出所有的m=p1+p2的可能形式)。

10.是否任意3的倍数m可以写成两个素数p1、p2、p3的和(试着写出所有的m=p1+p2+p3 的可能形式)?

四、数据处理与拟合初步:

11.通过测量得到一组数据: t 1 4.84y 2 2 4 8 9 8 4 6 2 5 分别采用y=c1+c2e^(-t)和y=d1+d2te^(-t)进行拟合,并画出拟合曲线进行对比。

12.计算下列定积分:

2 4.363 3.754 3.365 3.166 3.037 3.038 3.019 3.0110 3.00

13.微分方程组

当t=0时,x1(0)=1,x2(0)=-0.5,求微分方程t在[0,25]上的解,并

2

画出相空间轨道图像。

14.设通过测量得到时间t与变量y的数据:

t=[0 0.3 0.8 1.1 1.6 2.3];

y=[0.5 0.82 1.14 1.25 1.35 1.41]; 分别采用多项式: y=a0+a1t+a2t2 和指数函数 y=b0+b1e^t+b2te^t

进行拟合,并计算均方误差、画出拟合效果图进行比较。 15.观察函数: y=e^x-1.5cos(2*pi*x) 在区间[-1,1]上的函数图像,完成下列两题:

(1)用函数fzero求解上述函数在[-1,1]的所有根,验证你的结果; (2)用函数fminbnd求解上述函数在[-1,1]上的极小、极大、最小和最大值,在函数图像

上标出你求得的最小值点作出验证。

注:可以用help fzero命令查看fzero的调用格式,fzero典型的调用方法是:

fzero(@myfun,x0) %返回函数myfun在x0附近的根; fminbnd典型的调用方法是:

fminbnd(@myfun,x1,x2) %返回函数myfun在区间[x1,x2]上的最小值。

3

练习2 编程练习

1. 题目:判断101-200之间有多少个素数,并输出所有素数。编写以fun1为名的脚本文件。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),

如果能被整除,则表明此数不是素数,反之是素数。 ==================================================== 2.题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。编写以fun2为名的脚本文件。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

==================================================== 3. 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。编写以fun3为名的函数文件。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

4

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

4. 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。编写以fun4为名的函数文件。

========================================================== 5. 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。编写以fun5为名的脚本文件。

=========================================================== 6. 题目:企业发放的奖金根据利润提成。利润x低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润x,求应发放奖金总数?编写以fun6为名的函数文件。

5

7. 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?编写以fun7为名的脚本文件。

程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上168后再开方,如果开方后的结果满足如下条件,即是结果。 =========================================================== 8. 题目:输入三个整数x,y,z,请把这三个数由小到大输出。编写以fun15为名的函数文件。

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

========================================================== 9. 题目:输出9*9口诀。编写以fun9为名的脚本文件。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。=========================================================== 10. 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前n项之和。输入n,输出和s。编写以fun10为名的函数文件。

6

程序分析:请抓住分子与分母的变化规律。

========================================================== 11. 题目:编写以fun11为名的函数文件。将所输入的5个字符,以相反顺序打印出来。

=========================================================== 12. 题目:对n个数进行排序。即输入n个数,输出结果为由大到小的顺序。编写以fun12为名的函数文件。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

=========================================================== 13. 题目:编写一个函数,输入n为偶数时,求1/2+1/4+...+1/n,当输入n为奇数时,求1/1+1/3+...+1/n。编写以fun13为名的函数文件。

14. 题目:输入数字a,按以下规则进行。每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。编写以fun14为名的函数文件。

====================================================15. 题目:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。输入m,输出a,n。编写

7

以fun15为名的函数文件。

==================================================== 16. 题目:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+??+1/(1+2+3+?+n)。编写以fun16为名的函数文件。

==================================

8

练习3 优化问题练习

1、线性规划

规划问题不等式约束默认是?,所有不等式约束都要变成f(x)?b的形式。 函数原型:X=linprog(f,A,b,Aeq,beq,LB,UB,X0,OPTIONS) f:目标函数的系数列向量

A:不等式约束条件的系数矩阵 b:不等式约束条件的

Aeq:等式约束条件的系数矩阵 beq:等式约束条件的 lb:未知数的下界 ub:未知数的上界 x0:初值 option:选项 例:

脚本文件:

clear all,clc; f=[-5;-4;-6];

A=[1 -1 1;3 2 4;3 2 0]; b=[20;42; 30];

lb=[0;0;0];% lb=zeros(3,1); [x,fval]=linprog(f,A,b,[],[],lb)

2、二次规划

函数原型:X=quadprog(H,f,A,b,Aeq,beq,LB,UB,X0,OPTIONS) 将目标函数写成如下形式:

例:

9

脚本文件:

clear all ,clc; H=[1 -1;-1 2]; f=[-2; -6] A=[1 1;-1 2]; b=[2;3]; lb=[0;0];

[x,fval]=quadprog(H,f,A,b,[],[],lb)

3、0-1规划

函数原型:X = bintprog(f,A,b,Aeq,beq,X0,OPTIONS) 例:

4、有约束的最值问题

10

函数原型:X=fimincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS) fun:目标函数句柄

nonlcon:非线性约束条件函数句柄 例1:

写目标函数:

function y=objectf2(x) y=-x(1)*x(2)*x(3);

写脚本文件:

clear all ,clc; x0=[10;10;10]; A=[1 2 3;-1 -2 -3]; b=[72;0];

[x,fval]=fmincon(@objectf2,x0,A,b)

例2:目标函数:f(x)?100(x2?x1)2?(1?x1)2

2约束条件: x1?x2?1

22function y=objectf3(x)

y=100*(x(2)-x(1)^2)^2+(1-x(1))^2;

非线性约束函数:

function [c,ceq]=unitdisk(x)

c=x(1)^2+x(2)^2-1;%不等式约束,不等式右边缺省值是0,不等号为? ceq=[];%等式约束;无等式约束写成空矩阵

脚本文件:

clear all,clc; x0=[0 0];

[x,fval]=fmincon(@objectf3,[0 0],[],[],[],[],[],[],@unitdisk)

11

函数原型:X=fimincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS) fun:目标函数句柄

nonlcon:非线性约束条件函数句柄 例1:

写目标函数:

function y=objectf2(x) y=-x(1)*x(2)*x(3);

写脚本文件:

clear all ,clc; x0=[10;10;10]; A=[1 2 3;-1 -2 -3]; b=[72;0];

[x,fval]=fmincon(@objectf2,x0,A,b)

例2:目标函数:f(x)?100(x2?x1)2?(1?x1)2

2约束条件: x1?x2?1

22function y=objectf3(x)

y=100*(x(2)-x(1)^2)^2+(1-x(1))^2;

非线性约束函数:

function [c,ceq]=unitdisk(x)

c=x(1)^2+x(2)^2-1;%不等式约束,不等式右边缺省值是0,不等号为? ceq=[];%等式约束;无等式约束写成空矩阵

脚本文件:

clear all,clc; x0=[0 0];

[x,fval]=fmincon(@objectf3,[0 0],[],[],[],[],[],[],@unitdisk)

11

本文来源:https://www.bwwdw.com/article/184r.html

Top