matlab简单编程21个题目及问题详解Word格式.docx

上传人:b****1 文档编号:5365501 上传时间:2023-05-05 格式:DOCX 页数:29 大小:368.48KB
下载 相关 举报
matlab简单编程21个题目及问题详解Word格式.docx_第1页
第1页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第2页
第2页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第3页
第3页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第4页
第4页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第5页
第5页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第6页
第6页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第7页
第7页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第8页
第8页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第9页
第9页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第10页
第10页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第11页
第11页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第12页
第12页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第13页
第13页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第14页
第14页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第15页
第15页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第16页
第16页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第17页
第17页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第18页
第18页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第19页
第19页 / 共29页
matlab简单编程21个题目及问题详解Word格式.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

matlab简单编程21个题目及问题详解Word格式.docx

《matlab简单编程21个题目及问题详解Word格式.docx》由会员分享,可在线阅读,更多相关《matlab简单编程21个题目及问题详解Word格式.docx(29页珍藏版)》请在冰点文库上搜索。

matlab简单编程21个题目及问题详解Word格式.docx

第三题的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-'

)%用红色线绘制曲线

holdon%保持窗口figure窗口不关闭

r=3;

%r=3

b-.'

)%用蓝色点划线绘制曲线

holdon%保持窗口figure窗口不关闭

r=4;

%r=4

m-'

)%用红紫色线绘制曲线

图形如下:

4、设f(x)=x5-4x4+3x2-2x+6

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

(提示:

用polyval函数)

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

(1)matalab的源程序如下:

(利用的是在同一图中展现两条线,通过放大看交点)

x=-2:

8;

%x的取值范围

y=0;

%y=0

m'

)%用红紫色表示绘制出的y=0的图像

holdon%保持figure窗口不关闭

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)%输出小写字母的个数

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:

pi;

%t的取值范围

a=1;

n=1;

%a=1,n=1

x=sin(t);

y=sin(n*t+a);

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

holdon%保持figure不关闭

n=2;

%a=1,n=2

subplot(222),plot(x,y)%在子图的第二张画出图像

n=3;

%a=1,n=3

subplot(223),plot(x,y)%在子图的第三张,画出图像

n=4;

%a=1,n=4

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

图形如下所示:

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

%t的取值

a=0;

%a与n的取值

subplot(221),plot(x,y)%在子图的第一张绘制图像

a=pi./3;

subplot(222),plot(x,y)%在子图的第二张绘制图像

holdon%保持figure窗口不关闭

a=pi./2;

subplot(223),plot(x,y)%在子图的第三张绘制图像

a=pi;

subplot(224),plot(x,y)%在四个字图的第四张画出图像

7、绘制

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

Matlab源程序如下:

[x,y]=meshgrid([-2:

2]);

%此处描述x,y的范围

z=x.^2.*exp(-(x.^2+y.^2));

%z的表达式

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

经过旋转之后的图形:

8、

,画出在

上的曲线

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

functiony=A(x);

%文件名为A

ifx>

=-3&

x<

-1%在-3《x<

-1的条件下

y=(-x.^2-4*x-3)./2;

%y所对应上述条件下的表达式

elseifx>

=-1&

1%-1《x<

1

y=-x.^2+1;

%y所对应的上述条件下的表达式

elsex>

=1&

=3%1《x《3

y=(-x.^2+4*x-3)./2;

end%结束

在commandwindows中输入:

fplot('

A'

[-3,3])%绘制在-3到3上的曲线

所得图形如下所示:

9、

(1)设

symsx%定义变量x

y=x.*exp(2.*x);

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

s=

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

(2)设

symsx%定义变量x

y=sin(x).^4+cos(x).^4;

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

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

(3)设

symsxy%定义自变量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

(4)

symsx%定义自变量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)

symsx%定义自变量x

i=int(sqrt((9-x.^2).^3)./(x.^6));

pretty(i)%求解不定积分

/9\231/2

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

|2|

\x/

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

3

45x

(6)

i=int(1./(x+x.^3),2,1)%定积分表达式

i=%定积分的解

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

(7)求级数的和:

symsn%定义自变量n

f=(n+2)./(2.^n);

%级数的表达式

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

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

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

i=int(int((x+y).*exp(-x.*y)));

%二重不定积分表达式

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

2

y+xy+2

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

yexp(xy)

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

编制的m文件如下所示:

functionxin10;

%定义文件名为xin10

clc,clear%清屏,清内存

n=input('

输入一个正整数:

'

)%输入数据

fori=1:

1:

n%i的变化范围

ifisprime(i)%判断是否为质数

disp(i)%输出质数

end%结束if

end%结束for

end%结束function

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

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

functionlin11;

%定义文件名为lin11

m=input('

以1*n矩阵的形式输入数据并以0结尾:

k=size(m)%m的大小

k

(2)%i的变化范围

ifm(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循环对其进行排序(从大到小)。

functionlin12;

%定义文件名为lin12

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

length(a)%i的取值范围

forj=1:

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

ifa(j)<

a(j+1)%冒泡法进行排序,判断两个数的大小

t=a(j);

%将小的数赋值给t

a(j)=a(j+1);

%将大数赋值给a(j)

a(j+1)=t;

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

end%结束for循环

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

end%结束function

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

8,6,5,4改为:

4,5,6,8)。

functionlin13;

%定义文件名为lin13

a=input('

请输入数据:

)%输入数据

n=length(a);

%判断数据的长度

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)

fprintf('

%d'

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

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

functionlin14;

%定义文件名为lin14

'

s'

)%此处由于输入的整数是以整体的形式输入,所以‘s’

%计算a的长度

位数%d'

n);

%输出a的位数

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

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

functionlin15;

%定义文件名为lin15

请输入a='

)%输入a的值

请输入n='

)%输入b的值

i=1;

sum=0;

he=0;

%定义i,sum,he的初始值

whilei:

he=he+a*10^(i-1);

%通过i值得变化得到不同的数值

sum=sum+he;

%令sum为总和

i=i+1;

%i的变化

end%结束while

sumis%ld'

sum);

%输出总和

end%结束function

16、设计一个用于计算个人所有税的程序。

假设个人所得税的缴纳标准为:

月收入少于等于800元者不纳税;

超出800元的部分,纳税5%;

超出2000元的部分,纳税10%;

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

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

超出100000元的部分,纳税40%。

functionxin16;

%定义文件名为xin16

请输入月收入:

ifa>

100000%工资数目大于100000时

j=(a-100000)*0.4+90000*0.3+5000*0.2+3000*0.1+1200*0.5;

%交税计算公式

elseifa>

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

j=(a-10000)*0.3+5000*0.2+3000*0.1+1200*0.5;

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

j=(a-5000)*0.2+3000*0.1+1200*0.5;

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

j=(a-2000)*0.1+1200*0.05;

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

j=(a-800)*0.05;

else%工资低于800时

j=0%不交税

end%结束if循环

j)%输出交税数目

17、求爱因斯坦数学题。

有一条长阶,若每步跨2阶,则最后剩余1阶;

若每步跨3阶,则最后剩2阶;

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

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

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

functionxin17;

%建立文件xin17

fora=7:

1000%a的取值变化范围

ifrem(a,2)==1&

rem(a,3)==2&

rem(a,5)==4&

rem(a,6)==5&

rem(a,7)==0

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

break%跳出if,再进行循环

end%结束for循环

台阶is%d'

a);

%输出台阶数目

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

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

functionxin18;

%建立文件名为xin18

请输入数据'

b=[];

%令b为空集

e=[];

%令e为空集

d='

%令d为‘,’

z=fix(n/3);

%z为对三求商然后对零取整,z是添加几个‘,’的标志

ifrem(n,3)~=0;

%如果n对三取余不等于0

c=rem(n,3);

%c为对三取余数之后的余数,为1或2

fori=1:

c%i的取值范围

b=[b,a(i)];

%将a的最高位赋值给b,如果c=1,b=a最高位上的一位数,如果c=2,b=a最高位上的两位数

end

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

z%i的变化范围

e=[e,d];

%将逗号放到e中去

fori=(3*i-1):

(3*i+1)%i的变化范围

e=[e,a(i)];

%根据i随z的变化,将2,3,4。

5,6,7。

……等位置上的数据放到e中的逗号后面

end%结束for循环。

此处的for循环,就是输入一个逗号,输入三个数据,以此类推

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

%将逗号放到e中去

fori=(3*i):

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

%将3,4,5。

6,7,8。

…等位置上的数据放到逗号后面

end%结束for循环

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

3%i的取值范围

b=[b,a(i)];

%整除的情况下把前三位直接赋值到b中去

(z-1)%i的取值范围。

由于恰好整除,所以前三位不用加逗号,所以逗号数为z-1

%将逗号放到e中

fori=3*i+1:

3*i+3%i的取值范围

%根据i随z的变化,将4,5,6。

7,8,9。

end%结束if循环

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

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

functionlin19;

%定义文件名为lin19

输入矩阵:

%输入矩阵

%定义b为空集

[i,j]=size(a);

%对a求行列数,放到[i,j]中

i%i的取值范围

s=0;

%令s=0

j%j的取值范围

s=s+a(i,j);

%对i一定时对行累加,改变i值,不同的行重新进行求和

end%结束for循环

fprintf('

平均值(i=%d)=%d\n'

i,s/j)%输出每行平均值

b=[b,s/j];

%平均值放入b中去

w=0;

%令w=0

forp=1:

i%p的取值范围

ifb(p)>

w%每一行的平均值与w比较

w=b(p);

%如果平均值大于w,将平均值赋值给w

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

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2