2024年3月21日发(作者:湖北孝感高一数学试卷)

3sinx

ycosx

0.5

(1x

2

)



,把x=0~2π间分为101点,画出以x为横坐标,y1、 设

为纵坐标的曲线。

第一题的matlab源程序:

① 考虑cos(x)为一个整体,然后乘以中括号里面的全部

x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi

y=cos(x).*(0.5+3*sin(x)./(1+x.^2)); %y的表达式

plot(x,y) %画出图形

图如下:

②考虑对整体求解cos,先求x乘以括号中的部分

x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi

y=cos(x.*(0.5+3*sin(x)./(1+x.^2))); %y的表达式

plot(x,y) %画出图形

图如下:

2、产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵

全体数的平均值和均方差。

第二题的matlab源程序如下:

R1=randn(8,6) %产生正态分布随机矩阵

R1 =

1.0933 -0.7697 1.5442 -0.1924 1.4193 0.2157

1.1093 0.3714 0.0859 0.8886 0.2916 -1.1658

-0.8637 -0.2256 -1.4916 -0.7648 0.1978 -1.1480

0.0774 1.1174 -0.7423 -1.4023 1.5877 0.1049

-1.2141 -1.0891 -1.0616 -1.4224 -0.8045 0.7223

-1.1135 0.0326 2.3505 0.4882 0.6966 2.5855

-0.0068 0.5525 -0.6156 -0.1774 0.8351 -0.6669

1.5326 1.1006 0.7481 -0.1961 -0.2437 0.1873

aver=(sum(R1(1:end,1:end)))./8 %产生各行的平均值

aver =

0.0768 0.1363 0.1022 -0.3473 0.4975 0.1044

a=std(R1(1:end,1:end)) %产生各行的均方差也就是标准差

a =

1.0819 0.8093 1.3456 0.8233 0.8079 1.2150

aver1=(sum(R1(:)))./48 %全体数的平均值

aver1 =

0.0950

b=std(R1(:)) %全体数的均方差即标准差

b =

1.0103

3、设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=0~10区间生成的x~y

曲线。

第三题的matlab源程序如下:

t=0:0.1:10; %t的取值以0.1的步长从0到10

r=2; %r=2

x=r*cos(t)+3*t; %x的表达式

y=r*sin(t)+3; %y的表达式

plot(x,y,\'r-\') %用红色线绘制曲线

hold on %保持窗口figure窗口不关闭

t=0:0.1:10; %t的取值以0.1的步长从0到10

r=3; %r=3

x=r*cos(t)+3*t; %x的表达式

y=r*sin(t)+3;

plot(x,y,\'b-.\')

hold on

t=0:0.1:10;

r=4;

x=r*cos(t)+3*t;

y=r*sin(t)+3;

plot(x,y,\'m-\')

%y的表达式

%用蓝色点划线绘制曲线

%保持窗口figure窗口不关闭

%t的取值以0.1的步长从0到10

%r=4

%x的表达式

%y的表达式

%用红紫色线绘制曲线

图形如下:

4、设f(x)=x

5

- 4x

4

+3x

2

- 2x+ 6

(1) 在x=[-2,8]之间取100个点,画出曲线,看它有几个过零点。(提示:用polyval

函数)

(2) 用roots函数求此多项式的根。

(1)matalab的源程序如下:(利用的是在同一图中展现两条线,通过放大看交点)

x=-2:0.1:8; %x的取值范围

y=0; %y=0

plot(x,y,\'m\') %用红紫色表示绘制出的y=0的图像

hold on %保持figure窗口不关闭

x=-2:0.1:8; %x的取值范围

p=[1,-4,0,3,-2,6]; %p表示函数表达式的系数矩阵

y=polyval(p,x),plot(x,y) %y=polyval表示求多项式x处的y值,绘制图像

图如下:

将图形进行放大(如下),发现在实数域上有3个零点。

(2)matlab源程序如下:

roots(p) %求函数的根

ans =

3.7999

-1.2607

1.3479

0.0564 + 0.9623i

0.0564 - 0.9623i

可见实数解有三个,复数解有两个。

5、建立一个字符串向量,然后对该向量做如下处理:

(1) 取第1~5个字符组成的子字符串。

(2) 将字符串倒过来重新排列。

(3) 统计字符串中小写字母的个数。

整个题的源程序如下所示:

ch=\'abcj245DFGK\'; %建立一个字符串

subch=ch(1:5) %取1~5个字符

subch =

abcj2

revch=ch(end:-1:1) %倒序排列

revch =

KGFD542jcba

a=find(ch>=\'a\'&ch<=\'z\'); %找到小写字母的位置

length(a) %输出小写字母的个数

ans =

4

6、设x=sint, y=sin(nt+a),

(1) 若a=1,令n =1,2,3,4,在四个子图中分别画出其曲线。

(2) 若n=2,取a=0,π/3,π/2,及π,在四个子图中分别画出其曲线。

(1)matlab源程序如下;

t=-pi:0.1:pi; %t的取值范围

a=1;n=1; %a=1,n=1

x=sin(t); %x的表达式

y=sin(n*t+a); %y的表达式

subplot(221),plot(x,y) %在子图第一张,画出图像

hold on %保持figure不关闭

t=-pi:0.1:pi; %t的取值范围

a=1;n=2; %a=1,n=2

x=sin(t);

y=sin(n*t+a);

subplot(222),plot(x,y)

hold on

t=-pi:0.1:pi;

a=1;n=3;

x=sin(t);

y=sin(n*t+a);

subplot(223),plot(x,y)

hold on

%x的表达式

%y的表达式

%在子图的第二张画出图像

%保持figure不关闭

%t的取值范围

%a=1,n=3

%x的表达式

%y的表达式

%在子图的第三张,画出图像

%保持figure不关闭

t=-pi:0.1:pi; %t的取值范围

a=1;n=4; %a=1,n=4

x=sin(t); %x的表达式

y=sin(n*t+a); %y的表达式

subplot(224),plot(x,y) %在子图的第四张上,绘制图像

图形如下所示:

(2)matlab源程序如下所示:

t=-pi:0.1:pi; %t的取值

a=0;n=2; %a与n的取值

x=sin(t); %x的表达式

y=sin(n*t+a);

subplot(221),plot(x,y)

hold on

t=-pi:0.1:pi;

a=pi./3;n=2;

x=sin(t);

y=sin(n*t+a);

subplot(222),plot(x,y)

hold on

t=-pi:0.1:pi;

%y的表达式

%在子图的第一张绘制图像

%保持figure窗口不关闭

%t的取值

%a与n的取值

%x的表达式

%y的表达式

%在子图的第二张绘制图像

%保持figure窗口不关闭

%t的取值

a=pi./2;n=2; %a与n的取值

x=sin(t); %x的表达式

y=sin(n*t+a); %y的表达式

subplot(223),plot(x,y)

hold on

t=-pi:0.1:pi;

a=pi;n=2;

x=sin(t);

y=sin(n*t+a);

subplot(224),plot(x,y)

%在子图的第三张绘制图像

%保持figure窗口不关闭

%t的取值范围

%a与n的取值

%x的表达式

%y的表达式

%在四个字图的第四张画出图像

图形如下所示:

2(x

7、绘制

zxe

2

y

2

)

在定义域x=[-2,2],y=[-2,2]内的曲面。

Matlab源程序如下:

[x,y]=meshgrid([-2:0.1:2]); %此处描述x,y的范围

z=x.^2.*exp(-(x.^2+y.^2)); %z的表达式

surf(x,y,z) %绘制曲面

图形如下所示:

经过旋转之后的图形:

(x

2

4x3)/23x1

y

x

2

11x1

(x

2

4x3)/21x3

8、,画出在

3,3

上的曲线

所建立的M文件如下所示:

function y=A(x); %文件名为A

if x>=-3&x<-1 %在-3《x<-1的条件下

y=(-x.^2-4*x-3)./2; %y所对应上述条件下的表达式

elseif x>=-1&x<1 %-1《x<1

y=-x.^2+1; %y所对应的上述条件下的表达式

else x>=1&x<=3 %1《x《3

y=(-x.^2+4*x-3)./2; %y所对应的上述条件下的表达式

end %结束

在command windows 中输入:fplot(\'A\',[-3,3]) %绘制在-3到3上的曲线

所得图形如下所示:

9、(1)设,求

syms x %定义变量x

y=x.*exp(2.*x); %y的表达式

s=diff(y,x,20) %对y求x的20阶导数

s =

10485760*exp(2*x) + 1048576*x*exp(2*x)

(2)设,求

syms x %定义变量x

y=sin(x).^4+cos(x).^4; %y的表达式

s=diff(y,x,10) %对y求x的10阶导数

s =

- 262144*cos(x)^4 + 1572864*cos(x)^2*sin(x)^2 - 262144*sin(x)^4

(3)设,求

syms x y %定义自变量x,y

z=y.^4.*(sin(x).^4)+x.^4.*(cos(y).^4); %z的表达式

s=diff(z,x) %对z求x的偏导数

s =

4*x^3*cos(y)^4 + 4*y^4*cos(x)*sin(x)^3

1

(x

2

1)(x

2

x)

dx

(4)

syms x %定义自变量x

i=int(1/((x.^2+1).*(x.^2+x))); %不定积分表达式

pretty(i) %求解不定积分

/ i log(x + 1) / i

log(x) + log(x + i) | - - - 1/4 | - ---------- + log(x - i) | - - 1/4 |

4 / 2 4 /

(5)

(9x

2

)

3

x

6

dx

syms x %定义自变量 x

i=int(sqrt((9-x.^2).^3)./(x.^6)); %不定积分表达式

pretty(i) %求解不定积分

/ 9 2 3 1/2

| -- - 1 | (- (x - 9) )

| 2 |

x /

- ---------------------------

3

45 x

2

dx

(6)

1

xx

3

syms x

i=int(1./(x+x.^3),2,1)

i =

log(10^(1/2)/4)

%定义自变量x

%定积分表达式

%定积分的解

n2

n

2

n1

(7)求级数的和:

syms n %定义自变量n

f=(n+2)./(2.^n); %级数的表达式

symsum(f,n,n-1,inf) %对级数求和

ans =

2*2^(1 - n)*(n + 2)

(8)利用函数int计算二重不定积分

syms x y %定义自变量x,y

i=int(int((x+y).*exp(-x.*y))); %二重不定积分表达式

pretty(i) %求解二重不定积分

2

y + x y + 2

------------

3

y exp(x y)

10、编制m文件,输入n(正整数),显示所有小于n的质数。

编制的m文件如下所示:

function xin10; %定义文件名为xin10

clc,clear %清屏,清内存

n=input(\'输入一个正整数:\') %输入数据

for i=1:1:n %i的变化范围

if isprime(i) %判断是否为质数

disp(i) %输出质数

end %结束if

end %结束for

end %结束function

11、从键盘输入若干个数,当输入0时结束输入,求这些数的平均值以及平方和。

编制的m文件如下所示:

假设输入数据结束时输入0作为结束,不考虑输入的数据中出现会结束输入的现象,则

程序如下:

function lin11; %定义文件名为lin11

clc,clear %清屏,清内存

m=input(\'以1*n矩阵的形式输入数据并以0结尾:\') %输入数据

k=size(m) %m的大小

for i=1:k(2) %i的变化范围

if m(i)==0 %m=0时的每一个k值

k(2)=i-1; %另k(2)=i-1

end %结束if循环

end %结束for循环

M=m(1:k(2)) %将若干个数输出

B=sum(M)./k(2) %对若干个数求和再求平均值

C=sum(M.^2) %输出m的值,进行求值

end %结束function

12、利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。

编制的m文件如下所示:

function lin12; %定义文件名为lin12

clc,clear %清屏,清内存

a=rand(10,1) %产生10个随机数,这个地方可加可不加‘;

for i=1:length(a) %i的取值范围

for j=1:length(a)-1 %j的取值范围

if a(j)

t=a(j); %将小的数赋值给t

a(j)=a(j+1); %将大数赋值给a(j)

a(j+1)=t; %将t赋值给a(j+1)

end %结束if循环

end %结束for循环

end %结束for循环

a %输出数据a此处一定要写上a,不然没有数据输出

end %结束function

13、将一个整型数组的元素按逆序重新存放(如原序为:8,6,5,4改为:4,5,

6,8)。

编制的m文件如下所示:

function lin13; %定义文件名为lin13

clc,clear %清屏,清内存

a=input(\'请输入数据:\') %输入数据

n=length(a); %判断数据的长度

for i=1:n/2 %i的变化范围

b=a(i); %将a(i)赋值给b

a(i)=a(n+1-i); %将对应位置的值复制给a(i)

a(n+1-i)=b; %将b值赋值给a(n+1-i)

end %结束for循环

fprintf(\' %d\',a) %这个地方%d之前有一个空格,保证输出数据时分开的

end %结束function

14、 输入一个整数,写一程序输出它是几位数。

编制的m文件如下所示:

function lin14; %定义文件名为lin14

clc,clear %清屏,清内存

a=input(\'请输入数据:\',\'s\') %此处由于输入的整数是以整体的形式输入,所以‘

n=length(a); %计算a的长度

s’

fprintf(\'位数 %d\',n); %输出a的位数

end %结束function

15、从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+…(共n项)的和。

例a=2,n=4,则sum=2+22+222+2222.

编制的m文件如下所示:

function lin15; %定义文件名为lin15

clc,clear %清屏,清内存

a=input(\'请输入a=\') %输入a的值

n=input(\'请输入n=\') %输入b的值

i=1;sum=0;he=0; %定义i,sum,he的初始值

while i:n %i的变化范围

he=he+a*10^(i-1); %通过i值得变化得到不同的数值

sum=sum+he; %令sum为总和

i=i+1; %i的变化

end %结束while

fprintf(\'sum is %ld\',sum); %输出总和

end %结束function

16、设计一个用于计算个人所有税的程序。假设个人所得税的缴纳标准为:月收入少

于等于800元者不纳税;超出800元的部分,纳税5%;超出2000元的部分,纳税10%;

超出5000元的部分,纳税20%;超出10000元的部分,纳税30%;超出100000元的

部分,纳税40%。

编制的m文件如下所示:

function xin16; %定义文件名为xin16

clc,clear %清屏,清内存

a=input(\'请输入月收入:\') %输入a的值

if a>100000 %工资数目大于100000时

j=(a-100000)*0.4+90000*0.3+5000*0.2+3000*0.1+1200*0.5; %交税计算公式

elseif a>10000 %工资数目大于10000且小于100000的条件下时

j=(a-10000)*0.3+5000*0.2+3000*0.1+1200*0.5; %交税计算公式

elseif a>5000 %工资数目大于5000且小于10000时

j=(a-5000)*0.2+3000*0.1+1200*0.5; %交税计算公式

elseif a>2000 %工资数目大于2000且小于5000时

j=(a-2000)*0.1+1200*0.05; %交税计算公式

elseif a>800 %工资数目大于800且小于2000时

j=(a-800)*0.05; %交税计算公式

else %工资低于800时

j=0 %不交税

end %结束if循环

fprintf(\' %d\',j) %输出交税数目

end %结束function

17、求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩余1阶;若每步跨3

阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每

步跨7步,最后正好一阶不剩。

编制的m文件如下所示:

function xin17; %建立文件xin17

clc,clear %清屏,清内存

for a=7:1000 %a的取值变化范围

if rem(a,2)==1&rem(a,3)==2&rem(a,5)==4&rem(a,6)==5&rem(a,7)==0

%判断条件就是题目的要求

break %跳出if,再进行循环

end %结束if循环

end %结束for循环

fprintf(\'台阶 is %d\',a); %输出台阶数目

end %结束function

通过计算结果显示为119阶台阶。

18、将一个正整数n输出成“千分位”形式,即从个位数起,每三位之间加一个逗号,

例如,将7654321输出成7,654,321.

编制的m文件如下所示:

function xin18; %建立文件名为xin18

clc,clear %清屏,清内存

a=input(\'请输入数据\',\'s\') %输入数据

n=length(a); %计算a的长度

b=[]; %令b为空集

e=[]; %令e为空集

d=\',\'; %令d为‘,’

z=fix(n/3); %z为对三求商然后对零取整,z是添加几个‘,’的标志

if rem(n,3)~=0; %如果n对三取余不等于0

c=rem(n,3); %c为对三取余数之后的余数,为1或2

for i=1:c %i的取值范围

b=[b,a(i)]; %将a的最高位赋值给b,如果c=1,b=a最高位上的一位数,如果

c=2,b=a最高位上的两位数

end

if c==1 %讨论c=1的情况

for i=1:z %i的变化范围

e=[e,d]; %将逗号放到e中去

for i=(3*i-1):(3*i+1) %i的变化范围

e=[e,a(i)]; %根据i随z的变化,将2,3,4。5,6,7。……等位置上的数据放到e

中的逗号后面

end %结束for循环

end %结束for循环。此处的for循环,就是输入一个逗号,输入三

个数据,以此类推

else c==2 %讨论c=2的情况

for i=1:z %i的变化范围

e=[e,d]; %将逗号放到e中去

for i=(3*i):(3*i+2) %i的取值范围

e=[e,a(i)]; %将3,4,5。6,7,8。…等位置上的数据放到逗号后面

end %结束for循环

end %结束for循环

end %结束if循环

else %此处讨论恰好整除的情况

for i=1:3 %i的取值范围

b=[b,a(i)]; %整除的情况下把前三位直接赋值到b中去

end %结束for循环

for i=1:(z-1) %i的取值范围。由于恰好整除,所以前三位不用加逗号,所

以逗号数为z-1

e=[e,d]; %将逗号放到e中

for i=3*i+1:3*i+3 %i的取值范围

e=[e,a(i)]; %根据i随z的变化,将4,5,6。7,8,9。……等位置上的数据

放到e中的逗号后面

end %结束for循环

end %结束for循环

end %结束if循环

f=[b,e] %将b得到的前几位与e得到的逗号数据放入f中去

end %结束function

19、求出矩阵a中每行元素的平均值和平均最大的行号。

编制的m文件如下所示:

function lin19; %定义文件名为lin19

clc,clear %清屏,清内存

a=input(\'输入矩阵:\'); %输入矩阵

b=[]; %定义b为空集

[i,j]=size(a); %对a求行列数,放到[i,j]中

for i=1:i %i的取值范围

s=0; %令s=0

for j=1:j %j的取值范围

s=s+a(i,j); %对i一定时对行累加,改变i值,不同的行重新进行求和

end %结束for循环

fprintf(\' 平均值(i=%d)=%dn\',i,s/j) %输出每行平均值

b=[b,s/j]; %平均值放入b中去

end %结束for循环

w=0; %令w=0

for p=1:i %p的取值范围

if b(p)>w %每一行的平均值与w比较

w=b(p); %如果平均值大于w,将平均值赋值给w

end %结束if循环

end %结束for循环

fprintf(\'平均最大行 %dn\',p) %输出平均最大的行号

end %结束function

20、

(使用函数csapi和spapi及其相关函数)

x=3:0.4:8; %x的取值

y=(sqrt(1+x)-sqrt(x-1))./(sqrt(2+x)+sqrt(x-1)); %y的表达式

Sp=csapi(x,y) %得到分段三次样条的有关数据

Sp =

form: \'pp\'

breaks: [3 3.4000 3.8000 4.2000 4.6000 5 5.4000 5.8000 6.2000 6.6000 7.0000

7.4000 7.8000]

coefs: [12x4 double]

pieces: 12

order: 4

dim: 1

%显示每个区间上三次多项式的系数

ans =

-0.0034

-0.0034

-0.0018

-0.0013

-0.0009

-0.0007

-0.0005

-0.0004

-0.0003

0.0169

0.0127

0.0086

0.0064

0.0048

0.0038

0.0030

0.0024

0.0020

0.1605

0.1416

0.1268

0.1149

0.1050

0.0968

0.0897

0.0836

0.0783

-0.0534

-0.0415

-0.0330

-0.0270

-0.0225

-0.0190

-0.0163

-0.0142

-0.0124

-0.0002 0.0016 -0.0110 0.0737

-0.0002 0.0014 -0.0098 0.0695

-0.0002 0.0012 -0.0087 0.0658

ezplot(\'(sqrt(1+x)-sqrt(x-1))./(sqrt(2+x)+sqrt(x-1))\',[3,8]) %在区间绘制y

hold on %保持figure不关闭

fnplt(Sp) %绘制出插值效果

分段三次样条插值拟合效果:图a,函数拟合

syms x %定义自变量x

y=(sqrt(1+x)-sqrt(x-1))./(sqrt(2+x)+sqrt(x-1)); %y的表达式

y2=diff(y,x,2); %对函数求二阶导数

ezplot(y2,[3,8]) %绘制在区间上二阶导数的图像

hold on %保持figure窗口不关闭

s2=fnder(Sp,2);fnplt(s2) %对二阶导数进行插值拟合

分段三次样条插值拟合效果:图b,函数二阶导数

x=3:0.4:8; %x的取值

y=(sqrt(1+x)-sqrt(x-1))./(sqrt(2+x)+sqrt(x-1)); %y的表达式

Sp=spapi(6,x,y) %6阶B-样条的相关数据

Sp =

form: \'B-\'

knots: [1x19 double]

coefs: [1x13 double]

number: 13

order: 6

dim: 1

ezplot(\'(sqrt(1+x)-sqrt(x-1))./(sqrt(2+x)+sqrt(x-1))\',[3,8])

hold on %保持figure窗口不关闭

fnplt(Sp) %对B-样条进行插值拟合

%绘制区间上y的图

B-样条插值拟合效果:图c,函数拟合

syms x %定义自变量x

y=(sqrt(1+x)-sqrt(x-1))./(sqrt(2+x)+sqrt(x-1)); %y的表达式

y2=diff(y,x,2); %对函数求二阶导数

ezplot(y2,[3,8]) %画出区间上二阶导数的图像

hold on %保持figure窗口不关闭

s2=fnder(Sp,2);fnplt(s2) %对函数进行插值拟合

B-样条插值拟合效果:图d,函数二阶导数

21、

(csapi和fnplt及其相关函数)

x=1:10; %x的取值范围

y=[244.0,221.0,208.0,208.0,211.5,216.0,219.0,221.0,221.5,220.0];%y对应的值

s=csapi(x,y) %得到分段三次样条的有关数据

%显示每个区间上三次多项式的系数

fnplt(s) %绘制出插值结果

hold on %保持figure窗口不关闭

plot(x,y,\'o\') %在各点做标记


更多推荐

输入,数据,输出,结束,绘制,进行