序号 1 [题目编号=499]
令 I = ∫ 0 1 ∫ 0.5 1 e 2 x 2 + 3 y 2 d x d y I=\int_0^1\int^1_{0.5}e^{2x^2+3y^2}dxdy I=∫01∫0.51e2x2+3y2dxdy. 编程返回 I I I.
function r=myfun
syms x y;
f=exp(2*x^2+3*y^2);
r=int(int(f,x,1,0.5),y,1,0);
序号 2 [题目编号=104]
使用函数 plot 绘制函数$ f(x) = (1- 2e{sinx})(2x3 - 3x^2 + 4)$ 在闭区间 [ 0 , 2 π ] [0,2\pi] [0,2π]上的图形,并返回函数在点 0:0.01:2pi 处函数值.
编写本问题的函数文件第一行格式如下:
function a=myfun
% a 存储所求的函数值
序号 3 [题目编号=727]
求解下列线性规划
m
a
x
f
=
6
x
1
+
5
x
2
+
4
x
3
3
x
1
+
2
x
2
+
2
x
3
≤
25
4
x
1
+
2
x
2
+
3
x
3
≤
45
0
≤
x
i
,
i
=
1
,
2
,
3.
max f= 6x_1 + 5x_2 + 4x_3\\ 3x_1 + 2x_2 + 2x_3 \le25\\ 4x_1 + 2x_2 + 3x_3\le45\\ 0\le x_i, i = 1,2,3.
maxf=6x1+5x2+4x33x1+2x2+2x3≤254x1+2x2+3x3≤450≤xi,i=1,2,3.
编写函数文件返回 2 个参数:第 1 个参数为最优决策,用一个列向量表示,第 2 个返回参数为对应最优决策的目标函数的函数值. 该函数文件第 1 行参考格式如下:
function [x,fval]= myfun
function [a,y]=myfun
A=[3 2 2
4 2 3
-1 0 0
0 -1 0
0 0 -1];
b=[25;45;0;0;0];
c=[6;5;4];
[a,z]=linprog(-c,A,b);
y=-z;
序号 4 [题目编号=2212]
已知一个函数的表达式用类似 MATLAB 语句表示如下(x1,x2 表示自变量): y=3x1^2+1x1+12x2^2+6x2+2x1x2;
请用 fminsearch 搜索该函数在点(2.5,3.5)附近的极小值点.返回该极值点.编写一个函数返回该极值点.要求该极值点以行向量存储.
function a=myfun
y=@(x)(3*x(1).^2+x(1)+12*x(2).^2+6*x(2)+2*x(1).*x(2));
a=fminsearch(y,[2.5,3.5]);
序号 5 [题目编号=243]
请问 1.7 元钱换成 1 分、2 分、5 分,共有多少种换法. 编写一个函数返回换法数量。编写本问题的函数文件第一行参考格式如下:
function n=myfun
% n 为换法数量
function n=myfun
n=0;
for i=0:100
for j=0:200
for k=0:200
a=5*i+2*j+k;
if a==170
n=n+1;
end
end
end
end
序号 6 [题目编号=154]
已知 f ( x , y ) = ∣ s i n ( x y ) ∣ e c o s y f ( x, y) =| sin( xy) | e^{cos y} f(x,y)=∣sin(xy)∣ecosy ,求 s = ∑ i = 1 25 f ( i , i ) s=\sum^{25}_{i=1}f(i,i) s=∑i=125f(i,i)的值。
要求: f (x, y) 定义为函数,尽量避免使用循环语句求 s ,充分利用 Matlab 的数组计算功能。
编写一个函数文件返回 s。
function s=myfun
f=@(x,y)(abs(sin(x*y))*exp(cos(y)));
s=0;
for i=1:25
s=s+f(i,i);
end
序号 7 [题目编号=1134]
调用函数 find 找出向量 v 中元素大于等于 21,且小于等于 24 的所有元素的和 r,编写一个函数返回 r。
程序框架如下,包含了构造向量 v 的代码。 function r=myfun
%向量v由下列代码产生
rand(‘seed’, 139)
v=fix(28rand(1,50));
function all=myfun
rand('seed', 139)
v=fix(28*rand(1,50));
r=find(v>=21&v<=24);
all=sum(v(r));
序号 8 [题目编号=67]
设 $z = xye{cos(x2 - xy+ y^2 )} $请用meshgrid函数产生区域-4≤x≤4,-4≤y≤4上的网格,并计算z在这些点的函数值,网格点由x=-4:0.1:4, y=-4:0.15:4确定。
function r=myfun
x=meshgrid(-4:0.1:4);
y=meshgrid(-4:0.15:4);
z=x.*y.*exp(cos(x.^2-x.*y+y.^2))
序号 9 [题目编号=2171]
求解下列线性规划模型:
min f(x1,x2,x3)= 3.5x1 + 7x2 + 2x3 s.t.
9x1 + 7x2 + 6x3 <= 550
6x1 + 6x2 + 5x3 >= 55
4x1 + 4x2 + 3x3 >= 75
1 <= x1 <= 34
4 <= x2 <= 34
3 <= x3 <= 24
编写程序调用 linprog 求解该模型,并返回 linprog 的前 3 个输出参数,即:第 1 个位最优解,第 2 个为最优值,第 3 个为返回参数.
编写本问题的函数文件第一行格式参考如下语句:
function [x,val,flag]=myfun
function [x,val,flag]=myfun
C=[3.5;7;2];
a=[9 7 6;-6 -6 -5;-4 -4 -3];
b=[550;-55;-75];
c=[];
d=[];
e=[1;4;3];
f=[34;34;24];
[x,val,flag]=linprog(C,a,b,c,d,e,f);
序号 10 [题目编号=474]
请用 ode23 函数求解下面的微分方程,并绘出曲线。
d
x
d
t
=
0.005
(
1
+
1
1
+
t
)
x
−
0.01
x
2
,
x
(
0
)
=
10
,
x
∈
[
0
,
40
]
\frac{dx}{dt}=0.005(1+\frac{1}{1+t})x-0.01x^2,x(0)=10,x\in[0,40]
dtdx=0.005(1+1+t1)x−0.01x2,x(0)=10,x∈[0,40]
编写一个 function 文件返回函数 x(t)在 t=0:0.1:40 处的函数值(用 1 个列向量存储).
function b=myfun
x0=10;
t0=0:0.1:40;
[a,b]=ode23(@hhh,t0,x0)
plot(a,b,'r.');
function dfun=hhh(t,x)
dfun=0.005*(1+1/(1+t))*x-0.01*x^2;
序号 11 [题目编号=1319]
已知一个连续型随机变量 X 服从均值为 15,标准差为 2 的正态分布; 另外离散型随机变量Y1 的分布律如下表所示:
Y 1 Y_1 Y1 | 9 | 10 | 11 | 12 |
---|---|---|---|---|
概率 | 0.2 | 0.2 | 0.4 | 0.2 |
请编写程序估计事件 { X + Y 1 ≤ 30 } \{X + Y_1\le 30\} {X+Y1≤30}发生的概率. 编写一个函数文件返回该概率值.提示:产生正态分布随机数函数 normrnd.
基本用法:
normrnd(均值, 标准差).
normrnd(均值, 标准差,行数,列数).
function gl=myfun
N=10000;
Y=[];
for i=1:N
a=rand(1);
if a<=0.2
Y=[Y,9];
elseif a<=0.4
Y=[Y,10];
elseif a<=0.6
Y=[Y,11];
else
Y=[Y,12];
end
end
X=normrnd(15,2,1,N);
final=X+Y;
r=length(find(final<=30));
gl=r/N;
序号 12 [题目编号=2106]
用数显温度计和欧姆表测得温度 t 和定值电阻阻值 R 的关系,如下表.表 1 电阻 R 与温度 t 关系数据
t: 2.11 3.27 4.24 4.82 5.31 5.33 8.36 8.36 8.48 8.96
R: 38.6045 69.268 104.319 132.336 154.612 156.71 357.703 355.583 367.637 404.467
已知 R 和 t 的函数关系近似为 R = a + bt + ct^2,用多项式拟合法处理数据,并推算温度 t 依次取数组 3:0.5:40 各元素值时电阻值 R.
编写本问题的函数文件第一行格式如下: function r=myfun
%变量 r 与数组 3:0.5:40 同维数
function gl=myfun
t=[2.11 3.27 4.24 4.82 5.31 5.33 8.36 8.36 8.48 8.96];
R=[38.6045 69.268 104.319 132.336 154.612 156.71 357.703 355.583 367.637 404.467];
a=polyfit(t,R,2);
v=3:0.5:40;
gl=polyval(a,v);
序号 13 [题目编号=1144]
编程调用 fzero 求解方程 x 3 + 8 x − 20 = 0 x^3 + 8x - 20 = 0 x3+8x−20=0 ,并将所求根赋给变量 xp,编写一个函数调用 fzero,并返回 xp。要求将 fzero 的第 2 个输入参数(即解方程的初始解)设置为 2.
function fin=myfun
fun=@(x)(x^3+8*x-20);
fin=fzero(fun,2);
序号 14 [题目编号=1302]
编写一个 function 文件调用函数 quad 求定积分 ∫ 0 1 1 ( x 2 − x + 1 ) 3 / 2 d x \int^1_0\frac{1}{(x^2-x+1)^{3/2}}dx ∫01(x2−x+1)3/21dx. 要求该 function 文件返回 1 个参数. 该参数表示调用 quad 所得积分结果.
function fin=myfun
fin=quad(@fun,0,1)
end
function f=fun(x)
f=1./(x.^2-x+1).^(3/2)
end
序号 15 [题目编号=1058]
用蒙特卡罗法求解优化模型
m
a
x
f
=
10
x
1
3
+
x
1
x
2
2
+
x
3
x
1
2
+
x
2
−
x
3
−
5
≤
0
x
1
+
x
2
2
+
x
3
−
3
≤
0
0
≤
x
1.2.3
≤
8
max f= 10x_1^3 + x_1x_2^2 + x_3\\ x_1^2 + x_2 - x_3 - 5\le0\\ x_1 + x_2^2 + x_3 - 3\le0\\ 0\le x_{1.2.3}\le 8
maxf=10x13+x1x22+x3x12+x2−x3−5≤0x1+x22+x3−3≤00≤x1.2.3≤8
编写一个 function 文件返回 2 个参数:第 1 个为该方法估算出的“最大值”;第 2 个为对应的“最大值点”。
要求该函数文件前 2 行如下:
function [val,x] =myfun rand(‘seed’,2089)
function [val,x]=myfun
rand('seed',2089)
N=10000;
x1=8*rand(N,1);
x2=8*rand(N,1);
x3=8*rand(N,1);
r=find(x1.^2+x2-x3-5<=0&x1+x2.^2+x3-3<=0);
f=10*x1(r).^3+x1(r).*x2(r).^2+x3(r);
[val,rr]=max(f);
x=[x1(rr),x2(rr),x3(rr)];
序号 16 [题目编号=2288]
随机产生一个字符串数组(由 26 个英文字母组成),找出字符数组中的出现字符串’cj’的下标(以行向量存储)。编写一个函数返回下标。
要求产生字符串数组 w 的方法采用如下代码: function r=myfun
rand(‘seed’,2547)
w = 97+fix(13rand(1,39500)); %产生小写字母 w = char(w); %根据 ASCII 码值转为字符数组
背景:已知小写字母的 ASCII 码范围是 97~122,大写字母的 ASCII 码范围是 65~90.
function r=myfun
rand('seed',2547)
w = 97+fix(13*rand(1,39500)); %产生小写字母
w = char(w); %根据 ASCII 码值转为字符数组
N=length(w);
r=[];
for i=1:N
if w(i)=='c'&w(i+1)=='j'
r=[r,i];
end
end
序号 17 [题目编号=2154]
某种产品在生产过程中的性能指标 y 与它所含的某种材料的含量 x 有关,现将试验所得数据记录列出:
x: 2 3.2 3.5 3.7 4.5 4.6 6.3 6.8 7.5 8.6 9.7 9.8
y: 21.6589 48.8389 57.0166 65.11 90.8245 95.3963 171.403 199.262 237.889 309.451
390.893 399.454
已知 x 和 y 的函数关系近似的可以用 Matlab 表达式表示如下: y = ax^2+blog(x),
其中参数 a 和 b 为正数.
用 lsqcurvefit 拟合数据(调用函数 lsqcurvefit 时 a,b,c 的初始值均设为 1),并推算 x 在数组 3:0.2:24 各元素取值时,y 的估算值. 编写函数返回 y 的估算值(用行向量存储).
编写本问题的函数文件第一行格式如下: function r=myfun
%变量 r 与数组 3:0.2:24 同维数
function fin=myfun
x=[2 3.2 3.5 3.7 4.5 4.6 6.3 6.8 7.5 8.6 9.7 9.8];
y=[21.6589 48.8389 57.0166 65.11 90.8245 95.3963 171.403 199.262 237.889 309.451 390.893 399.454];
fun=@(a,x)(a(1)*x.^2+a(2)*log(x));
a=[1,1];
a=lsqcurvefit(fun,a,x,y);
r=3:0.2:24;
fin=fun(a,r);
序号 18 [题目编号=2252]
下列模型为一个二元函数有约束极值问题.函数的表达式部分用类似 MATLAB 语句表示
(x1,x2 表示自变量):
max f(x1,x2) = 7x1^2+7x1+3x2^2+7x2+3x1x2 s.t.
5x1 + 5x2 <= 175
5x1 + 3x2 >= 30
9<= x1^2 + 6x2^2 <=2275
0<= x1 <=17
0 <= x2 <= 22
请用 fmincon 求解.初始迭代点取(1.5,6).
编写一个函数返回 fmincon 求出的近似最优解.要求返回值以行向量存储.
function fin=myfun
a=[5 5;-5 -3];
b=[175;-30];
c=[0;0];
d=[17,22];
fun=@(x)-7*x(1).^2-7*x(1)-3*x(2).^2-7*x(2)-3*x(1).*x(2);
fin=fmincon(fun,[1.5;6],a,b,[],[],c,d,@mycon)
fin=fin'
function [g,ceq]=mycon(x)
g=9*x(1).^2+6*x(2).^2-2275;
ceq=[];
序号 19 [题目编号=1068]
请向曲线 x = -3, x = 3, y = 0, y = 10 所围矩形区域内随机投 10000 个点,绘出投点,并统计在曲线 $y = e^{0.1x} + sin x $上方的点出现的频率 p。
编程函数完成以上功能。要求该函数返回变量 p。
function fin=myfun
N=10000;
x=-3+6*rand(N,1);
y=10*rand(N,1);
r=find(exp(0.1*x)+sin(x)<y);
plot(x(r),y(r),'r.')
hold on
ezplot(@(x)exp(0.1*x)+sin(x),[-3,3])
l=length(r);
fin=l/N;
序号 20 [题目编号=2273]
下列模型为一个二元函数有约束极值问题.函数的表达式部分用类似 MATLAB 语句表示
(x1,x2 表示自变量):
max f(x1,x2) = 7x1^2+4x1+9x2^2+9x2+6x1x2
4x1 + 4x2 <= 155
7x1 + 5x2 >= 40
6 x1^2 + 4 x2^2 <= 1550
7 x1 + 4 x1x2 >= 40
0 <= x1 <= 13
0 <= x2 <= 20
请用 fmincon 求解.初始迭代点取(4.5,7).
编写一个函数返回 fmincon 求出的近似最优解.要求返回值以行向量存储.
function fin=myfun
a=[4 4;-7 -5];
b=[155;-40];
c=[0;0];
d=[13;20];
fun=@(x)-7*x(1).^2-4*x(1)-9*x(2).^2-9*x(2)-6*x(1).*x(2);
[h,hh]=fmincon(fun,[4.5;7],a,b,[],[],c,d,@mycon)
fin=h'
function [g,ceq]=mycon(x)
g=[6*x(1)^2+4*x(2)^2-1550;(-7)*x(1)-4*x(1)*x(2)+40];
ceq=[]
序号 21 [题目编号=1942]
已知 f(x)=20sin(x)cos(x)+30exp(-5x),求函数在自变量取值为 0:0.2:50 这些节点时的函数值,并求函数 f(x)在这些点处函数值的和 s,并返回这些节点函数值的绝对值的最大值 m. 编写函数依次返回 2 个参数: 第 1 个输出参数为 s,第 2 个输出参数为 m.
function [s,m]=myfun
x=0:0.2:50;
f=20*sin(x).*cos(x)+30*exp(-5*x);
s=sum(f);
m=max(abs(f));
序号 22 [题目编号=1988]
编写一个函数,其输入参数为一个向量,找出该向量中小于等于 0.9 的数的下标组成的数组(用行向量表示)并返回。
要求返回参数数组中的元素是递增排列的.该函数的声明语句参考如下:
function idx=myfun(v)
function fin=myfun(v)
n=length(v);
fin=[];
for i=1:n
if v(i)<=0.9
fin=[fin,i];
end
end
序号 23 [题目编号=1642]
已知分段函数 y 分为 3 种情况,该分段函数的式子用 MATLAB 表达式进行表述,具体如
下:
-
当 x>=6 时,y=4x^8+10;
-
当 4<=x<6 时,y=5x+10;
-
当 x<4 时,y=2x^2+6.
请编写一个 MATLAB 函数计算该分段函数的函数值。要求:
\1) 输入参数为自变量的取值,可以为一个标量,也可以为一个行向量或列向量。
\2) 当输入参数为向量时,表示可以同时计算该函数在多个点(向量的各个元素)的函数值。
要求该函数的定义形式如下: function y=myfun(x)
function fin=myfun(x)
i=length(x);
fin=[];
for i=1:i
if x(i)>=6
r=4*x(i).^8+10;
elseif x(i)>=4
r=5*x(i)+10;
else
r=2*x(i).^2+6;
end
fin=[fin;r];
end
[a,b]=size(x);
if a==1
fin=fin';
else
fin=fin;
end
序号 24 [题目编号=1289]
编写一个 function 文件调用 fsolve 函数求解下列方程组:
4
x
1
2
+
3
x
2
2
=
1
x
1
3
−
8
x
2
3
=
1
4x_1^2 + 3x_2^2 = 1\\ x_1^3 - 8x_2^3 = 1
4x12+3x22=1x13−8x23=1
要求该function文件返回1个参数:返回一个行向量表示求根结果.调用fsolve函数的初始迭代点取[0 0].
function fin=myfun(x)
x0=[0 0];
fin=fsolve(@fun,x0);
end
function f=fun(x)
f=[4*x(1).^2+3*x(2).^2-1
x(1).^3-8*x(2).^3-1];
end
序号 25 [题目编号=893]
请找出 1 到 500 中能被 29 或 31 整除的所有这些整数平方的和 s。编写函数返回 s.
function fin=myfun
x=[1:500];
i=find(rem(x,29)==0|rem(x,31)==0);
fin=sum(x(i).^2);
序号 26 [题目编号=2064]
已知 4.2 x1+ 3.3 x2+ 4.2 x3<=46,其中 x1, x2, x3 都是非负整数.
编程求出方程组所有的解,用矩阵 M 存储. M 的每一行表示一个解,第 1、2、3 列分别存储 x1,x2,x3 的值.
并且矩阵的元素分别按照第 1 列从小到大排列,如果第 1 列元素相同,则按照第 2 列递增排
列,如果第 2 列相同,则按照第 3 列递增排列.
function fin=myfun
fin=[];
for x1=0:20
for x2=0:20
for x3=0:20
if 4.2*x1+ 3.3*x2+ 4.2*x3<=46
fin=[fin;x1 x2 x3];
end
end
end
end