章绍辉习题1参考解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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'”,表示等待用户从键盘输入的是字符数组.
=是既约分数,0 和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 、