章绍辉习题1参考解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*

第一章习题参考答案

1. 请编写绘制以下图形的MATLAB命令,并展示绘得的图形.

(1)

221

x y

+=、224

x y

+=分别是椭圆

2

21

4

x

y

+=的内切圆和外切

圆.

解答

方法一(显函数和伸缩变换)

221 x y

+=

的显函数形式为11)

y x

=-≤≤,并利用伸缩

变换:224

x y

+=的横、纵坐标都是221

x y

+=的两倍,

2

21

4

x

y

+=的横、

纵坐标分别是

221

x y

+=的两倍和一倍.

编写程序时运用好MATLAB函数plot的语法格式2(x是向量, y是矩阵),以及格式4,使程序简洁.

;

使用命令axis equal,才能绘得真正的圆.

程序:

x=-1:.05:1; % 由40段折线连接成半圆周

y=sqrt(1-x.^2);

plot(x,[y;-y],'k',2.*x,[y;-y;2.*y;-2.*y],'k')

axis equal

title('方法一(显函数)')

%

绘得的图形:

-2.5

-2-1.5-1-0.500.51 1.52 2.5

-2-1.5-1-0.500.511.5

2方法一(显函数)

评价:方法一绘得的图形在外切圆和椭圆的左右两端看起来明显还是折线,

而在其余地方看起来比较光滑,原因在外切圆和椭圆的左右两端,导数d d y

x

趋于

无穷大,所以,虽然x 的步长是固定的,但是在左右两端,y 会比别处有更显著的变化. 当然,如果令x 的步长更小,例如x=-1:.01:1,绘得的图形将会看起来更光滑一些.

方法二(参数方程和伸缩变换)

221x y +=的参数方程为cos , sin (02)x t y t t π==≤≤,关于伸

缩变化和MATLAB 函数plot 的语法的讨论与方法一相同. 特意选取参数t 的步长,使得半圆周仍然由40段折线连接而成,如同方法一一样.

程序: t=linspace(0,2*pi,81); % 由40段折线连接成半圆周

x=cos(t); y=sin(t);

plot(x,y,'k',2.*x,[y;2.*y],'k') axis equal

title('方法二(参数方程)')

绘得的图形:

-2.5

-2-1.5-1-0.500.51 1.52 2.5

-2-1.5-1-0.500.511.5

2方法二(参数方程)

评价:虽然半圆周由同样多的折线段连接而成,但是方法二绘得的图形看起来处处一样光滑,事实上,方法二通过等分圆心角来取得圆周上的采样点,并连结线段,所以绘得的“圆形”实际上是正多边形. !

(2) 指数函数x y e =和对数函数ln y x =的图像关于直线y=x 对称.

解答

指数函数x

y e =和对数函数ln y x =互为反函数,在

MATLAB 函数plot

的输入当中交换x 和y 的次序,就实现反函数,而且图像就是关于直线y=x 对

称.

根据两点确定一条直线的原理,绘制直线段只需给出两端点的坐标.

使用命令axis equal ,才能绘得真正的对称图形,加上坐标网格,能增强对称效果.

指数函数x

y e =的自变量x 的取值区间的左端不能太小,否则绘得的图像

会在左边有一段与x 轴重合.

程序: x=-3:.1:3;

&

y=exp(x);

plot(x,y,'k',y,x,'k',[-3,20],[-3,20],'k') axis equal

axis([-3,20,-3,20]) grid xlabel('x') ylabel('y')

title('y=e^x 和 y=ln x 的函数图像关于直线 y=x 对称')

绘得的图形:

5

10

15

20

x

y

y=e x 和 y=ln x 的函数图像关于直线 y=x 对称

(3) 黎曼函数

1, (0)(0,1) 0 , (0,1), 0,1q x p q q x y x x x =>∈⎧=⎨∈=⎩

当为既约分数且当为无理数且或者

%

的图像(要求分母q 的最大值由键盘输入).

解答

输入的英文单词是input,通过在MATLAB帮助文档检索input这个关键词,查到实现键盘输入的MATLAB函数是input,语法格式为:

(1) user_entry = input('prompt') 输入项是一个字符数组,input将该字符数组显示在命令窗口,作为提示语,等待用户从键盘输入数值数组并按回车键;input将用户从键盘输入的数值数组赋值给user_entry所代表的变量名.

(2) user_entry = input('prompt', 's') 第二输入项是规定的字符“'s'”,表示等待用户从键盘输入的是字符数组.

=是既约分数,00”,即p和q是正整数,p

和q的最大公约数等于1. 例如:

当q=2时,有黎曼函数的图像的一个坐标点(1/2 , 1/2);

当q=3时,有黎曼函数的图像的两个坐标点(1/3 , 1/3)和(2/3 , 1/3);

&

当q=4时,有黎曼函数的图像的两个坐标点(1/4 , 1/4)和(3/4 , 1/4),而x=2/4不是既约分数;……

可见,在程序中应设置二重循环语句:

第一重(外重)是分母q从2到由键盘输入的最大值的循环,步长为1;

第二重(内重)是分子p从1到q-1的循环,步长为1,如果p和q的最大公约数等于1,就把p/q和1/q分别添加入横坐标数组x和纵坐标数组y.

注意x和y需要在循环语句之前说明为空数组.

当x为有理数(0

程序:

n=input('分母的最大值 n = ');

!

x=[];

y=[];

for q=2:n

for p=1:q-1

if gcd(p,q)==1

x=[x,p./q];

y=[y,1./q];

end

相关文档
最新文档