数学软件MATLAB附加习题 下载本文

内容发布更新时间 : 2024/6/12 2:57:32星期一 下面是文章的全部内容请认真阅读。

第2章 Matlab矩阵及其运算

1. 给定一实数矩阵A,试写一组指令,将其所有非正元素设定为0. 2. 给定一实数矩阵A,试写一组指令,将其所有nan元素设定为0.

3. 给定一实数和虚数交错的矩阵A,试写一组指令,将其所有虚数元素设定为nan. 4. 请写一组指令,产生元素值为0或1的向量,向量长度为100,且出现0或1的概率各占一半。如果要求元素值为-1或1呢?

5. 假设有一整数矩阵A,请写一函数,将此整数矩阵以ASCII的整数方式存于文件之中。例如当矩阵内容如下时

?1234???5678??, ??则储存到文件中的内容为

1 2 3 4 5 6 7 8

6. 本题练习二进制文件的读写。

(1)请将A=magic(10)以uint8的数据类型存入一个二进制文件mytest.bin,使用指令为fwrite.

(2)请再用fread指令将此魔方阵读至工作空间中的AA变量中。

7. 设计一个函数captalize.m,其用法如下:

outputStr=capitalize(inputStr)

其中inputStr是一英文字符串,函数会将此字符串中每个单词的第一个字母改为大写,其余为小写,并将多余空格代换成一个空格,outputStr则是最后的输出字符串。例如,当输入是’ how are you! ’时,所得到的输出字符串是’ How are you! ’. 8. 请创建下列4×3的元胞数组A: 张惠妹 听海 1998 周华健 花心 1992 一场游戏一场王杰 1988 梦 孙燕姿 超快感 2000 9. 在上面的元胞数组中,每一横行代表一个记录,我们要用不同的方法来排序:

⑴ 请依歌星名字内码来排序,产生新的元胞数组B。 ⑵ 请依年代来排序,产生新的元胞数组C。

⑶ 请依歌名字数来排序,产生新的元胞数组D(若字数相同,则按歌名中字符的内码来排序)。

10. 在上题的元胞数组中,求出年代的最大值、最小值、平均值及中位数。 11.假设一元胞数组A内容如下: 张惠妹 听海 1998 周华健 花心 1992 一场游戏一场王杰 1988 梦 孙燕姿 超快感 2000

1

试将此元胞数组A转成结构体数组song,其中 song(1).singer=’张惠妹’ song(1).name=’听海’ song(1).year=’1998’ song(2).singer=’周华健’ ?

1、 此题用到上题的结构体数组song.

⑴ 请将结构体数组song依歌星名字的内码来排序。 ⑵ 请将结构体数组song依年代来排序。 2、 此题用到第5题的结构体数组song.

⑴ 请取出所有歌星的名字,顺次存成一个元胞数组。 ⑵ 请取出所有的年代,顺次存成一个数值数组。

第3章 Matlab程序设计

1. 写一函数project1.m,其输出输入格式如下:

out=project1(x, u)

其中x和u是维数相同的向量,out则是x在u方向上的投影的平方。 2. 写一函数quadzero.m,其输入输出格式如下:

root=quadzero(coef)

其中coef是一个3?1的向量,代表一个一元二次方程的系数(降幂排列),而root则是此方程的根所形成的向量。若coef(1)不是0,则root的长度为2。若coef(1)是零,则可能有一解(roots长度为一)或无解(root为空矩阵)。(请注意:你的程序必须套用二次方程的求根公式,而不可直接使用系统提供的roots命令来解题。)

3. 给定一向量A,依其元素值不同,在屏幕上输出不同信息。例如,当A=[-1, 1, 0, 2+i]时,你的程序应输出: A(1)=-1是负数 A(2)=1是正数 A(3)=0是零 A(4)=2+I是复数

请用下列的A来测试你的程序:

A=randn(20,1)+(rand(20,1)>0.7)*I;

4. 下列程序是计算由1到50的总和,但在MATLAB下执行时会发生错误。请指出并改正之。 begin = 1; end = 50;

vector = begin:end;

total = sum(vector); % 计算向量总和

fprintf('The sum of %g to %g is %g.\\n', begin, end, total); % 输出结果 5. 下列程序是计算由1到100的平均值,但在MATLAB下执行时会发生错误。请指出并改正之。

clear all % 清除所有变量 vector = 1:100; total = 0;

2

for i=vector,

total = total+i; end

mean = total/1000; % 用我的方法算平均值

mean2 = mean(vector); % 用 MATLAB 內建函數 mean 來算平均值

fprintf('Difference in computation: %g.\\n', abs(mean-mean2));%输出结果

第4章 MATLAB绘图

1. 一条曲线的参数方程为

?x?sin(t), ?y?1?cos(t)?t/10?当t由0变化到4*pi时,请写一个MATLAB脚本plotParam.m,在XOY面上画出此曲线。

2. 李萨如图形可用下列参数方程来表示:

?x?cos(m?) ?y?sin(n?)?试画出取不同m、n值时的李萨如图形:

⑴ m=n=1 ⑵ m=3, n=2 ⑶ m=10, n=10

3. 当一个圆沿着一条直线滚动时,圆上的任一点形成的轨迹称为“摆线”。请用MATLAB画出一个典型的摆线,其中圆的半径为1,而且至少要滚三圈。

4. 此题和上题类似。当一个小圆沿着一条曲线滚动时,圆上的任一点就会形成的变化丰富的摆线。假设小圆半径r=2。

⑴ 当小圆绕着一个大圆(半径R=5)的外部滚动时,画出其摆线。 ⑵ 重复上一小题,但改成在大圆内部滚动。 注:只考虑小圆沿着大圆以顺时针旋转的情形。 5. 画出下列方程的曲面图及等高线图:

Z=sin(x/2)*cos(y),

其中x的21个均匀分布在[-2*pi, 2*pi]范围,y的31个均匀分布在[-1.5*pi, 1.5*pi]范围。请使用subplot(1,2,1)和subplot(1,2,2)将产生的曲面图和等高线图显示在同一视窗中。

第5章 函数与方程

1. 请依下列步骤进行:

⑴ 使用randn产生一个10×10的矩阵A. ⑵ 计算B=(A+A′)/2.

⑶ 计算矩阵B的所有特征向量e1, e2, ?, e10。 ⑷ 验证当i≠j时,ei和ej的内积为0.

2. 设a=(1,2,3), b=(2,4,3), 分别计算a./b, a.\\b, a/b, a\\b,分析结果的意义。 3. 用矩阵除法解下列线性方程组。

3