资源描述
2021/6/71例例1.4 作螺旋线作螺旋线x=sint,y=cost,z=t. 键入:键入: t=0:pi/50:10*pi; plot3(sin(t),cos(t), sin(t).*cos(t);对于对于 t 的的501个个取值,绘制并连取值,绘制并连接接501个空间点,个空间点,形成空间曲线形成空间曲线1.5.2 三维图形三维图形1.空间曲线空间曲线 2. 空间曲面绘图空间曲面绘图 MATLAB要求我们对平面网格的每一个点(x,y),定义立坐标z。 然后在mesh命令下联接各个空间点(x,y,z),形成曲面。2021/6/72例:例:x=1 2 3; y=4 5; X Y=meshgrid(x,y); % 平面点集的横坐标矩阵为平面点集的横坐标矩阵为X,纵坐标矩阵为,纵坐标矩阵为YX=1 2 31 2 3Y=4 4 45 5 5实现上述任务的命令为:实现上述任务的命令为: 定义向量定义向量x,y; X Y=meshgrid(x,y); 由由X,Y定义空间点的立坐标定义空间点的立坐标 Z, 即即Z=f(X,Y) mesh(X,Y,Z); (或或surf(X,Y,Z)xyZ=X.2+Y.2;Z=17 20 2526 29 34mesh(X,Y,Z)2021/6/73例例1.5 作曲面作曲面z=f(x,y)的图形的图形2222sin, 7.5,7.5xyzx yxy键入:键入: x=-7.5:0.5:7.5;y=x; X,Y=meshgrid(x,y); R=sqrt(X.2+Y.2); Z=sin(R)./(R+eps) ; mesh(X,Y,Z); 例题例题 x=0:pi/100:2*pi; y=x; X Y=meshgrid(x,y); Z=sin(X).*cos(Y); mesh(X,Y,Z)2021/6/74等高线等高线MATLAB还提供了画二维和三维等高线图的函数还提供了画二维和三维等高线图的函数contour和和contour3. 例例1.6 作出库函数作出库函数peaks产生的二元函数的曲面及其等值线图。产生的二元函数的曲面及其等值线图。键入:键入: X,Y,Z=peaks(30); surf(X,Y,Z); figure(2); %打开另一个图形窗口打开另一个图形窗口 contour(X,Y,Z,16); figure(3); contour3(X,Y,Z,16); 可将上述的画网格图的可将上述的画网格图的mesh命令改为命令改为surf(X,Y,Z);则输出的曲;则输出的曲面图,效果有所不同。面图,效果有所不同。%产生网格细度为产生网格细度为30的描述山峰特征的空间点的横的描述山峰特征的空间点的横坐标、纵坐标、立坐标矩阵坐标、纵坐标、立坐标矩阵%16个等距的水平平面与山峰相交,交线投影在平面上个等距的水平平面与山峰相交,交线投影在平面上% 16个等距的水平平面与山峰相交,交线放置在原有空间位置个等距的水平平面与山峰相交,交线放置在原有空间位置2021/6/751.6 M文件编写文件编写 前面看到了一些用前面看到了一些用MATLAB语言编写的简单程序,要想实现更强的功语言编写的简单程序,要想实现更强的功能,需要用到循环控制、选择控制。几乎所有实用的程序都包含循环控制、能,需要用到循环控制、选择控制。几乎所有实用的程序都包含循环控制、选择控制,熟练使用选择控制,熟练使用MATLAB的循环结构、选择结构是编程的基本要求。的循环结构、选择结构是编程的基本要求。MATLAB提供四种循环和选择控制结构,它们是:提供四种循环和选择控制结构,它们是:for循环,循环,while循环,循环,if-else-end结构和结构和switch-end结构。结构。1.6.1运算符运算符 MATLAB的运算符可分为三类:算术运算符、关系运算符和逻辑运算的运算符可分为三类:算术运算符、关系运算符和逻辑运算符。其中算术运算符的优先级最高,其次是关系运算符,再其次是逻辑运符。其中算术运算符的优先级最高,其次是关系运算符,再其次是逻辑运算符。算术运算符算符。算术运算符 +、-、*、/、.*、./、. (后三个是矩阵的运算符后三个是矩阵的运算符)前面已经介绍,这里再介绍关系运算符和逻辑运算符前面已经介绍,这里再介绍关系运算符和逻辑运算符2021/6/76 关系运算符对于程序的流程控制非常有用关系运算符对于程序的流程控制非常有用.MATLAB共有六个关系运算符共有六个关系运算符,它们分别是它们分别是 小于;小于;大于;大于;=大于等于;大于等于;=等于等于;= 不等不等于于。关系运算符用于比较同类型的算术表达式,运算结果为逻辑值:。关系运算符用于比较同类型的算术表达式,运算结果为逻辑值:1(表示表示真即成立真即成立),0(表示假即不成立表示假即不成立)。 例如:例如:3*52*3/4+1 x=9;y=4;z=5; 3*x+y-z/8=sin(z)/(1/x) 2*x=18 3*x=5*z+2 3*y=10关系运算符还可以比较同型矩阵,此时将生成一个关系运算符还可以比较同型矩阵,此时将生成一个0-1矩阵,当相应元素经矩阵,当相应元素经关系运算为真时,对应位置上生成关系运算为真时,对应位置上生成1,否则为,否则为0。1.关系运算符关系运算符2021/6/77例如例如a=1 2 3 ; 4 5 6 ; 6 4 2;b=1 2.2 2.3 ; 4.1 4 5 ; 0 9 7;ab 运算结果为运算结果为 0 0 10 1 11 0 0MATLAB共有三个逻辑运算符:与 (&)、或( | )、非().用于连接多个关系表达式关系表达式,构成程序控制中的复合条件。复合条件。运算结果为逻辑值逻辑值 1 或或 02 逻辑运算符逻辑运算符2021/6/78& 运算:参与运算的表达式都为真时,结果为真,否则,结果为假。| 运算:参与运算的表达式都为假时,结果为假,否则,为真。 运算:只有一个参与运算的数据,当该运算数据为真时,运算结果为假,否则,结果为真。一个数在逻辑运算情况下,非零算作“真”,为零算作“假”。 例如 80 | y5 & 4*x-3=23 为真对于数值矩阵,当元素为0时,逻辑上为假;当元素为非0时,逻辑上为真。MATLAB对两矩阵的相应元素分别运算,结果为一个0-1矩阵。 在给变量赋值的运算中,当逻辑表达式的值为真时,变量赋值当逻辑表达式的值为真时,变量赋值1,否,否则为则为0。例如。例如 x=(12) % 结果为0; x=(10) % 结果为1 提示提示:只有在编程环境下,同学们才能较好的体会表达式及其各种运算 2021/6/79(常数、变量、函数常数、变量、函数)(常数、变量、函数常数、变量、函数)算术运算符算术运算符(关系表达式关系表达式)(算术表达式算术表达式)(算术表达式算术表达式)关系运算符关系运算符(关系表达式关系表达式)(关系表达式关系表达式)逻辑运算符逻辑运算符逻辑运算符逻辑运算符逻辑表达式逻辑表达式 + MATLAB命令命令 MATLAB 语句语句语言构成示意图语言构成示意图2021/6/710 for循环用于对一组命令以固定的和预定的次数重复执行。循环用于对一组命令以固定的和预定的次数重复执行。 For循环的一循环的一般形式为:般形式为: for x=表达式表达式1:表达式:表达式2:表达式:表达式3 语句体语句体 end其中表达式其中表达式1的值为循环的初值,表达式的值为循环的初值,表达式2的值为步长,表达式的值为步长,表达式3的值为的值为循环的终值。如果省略表达式循环的终值。如果省略表达式2,则默认步长为,则默认步长为1。该循环体的执行过程如。该循环体的执行过程如下:下: 1)将表达式)将表达式1的值赋给的值赋给x: 2)对于正的步长,当)对于正的步长,当x的值大于表达式的值大于表达式3的值时,结束循环;对于负的的值时,结束循环;对于负的步长,当步长,当x的值小于表达式的值小于表达式3的值时结束循环。否则,执行的值时结束循环。否则,执行for和和end之间的之间的语句体,然后执行下面的第语句体,然后执行下面的第3)步。)步。 3)x加上一个步长后,返回第加上一个步长后,返回第2)步继续执行。)步继续执行。1.6.2 for循环循环for x=1:2:15 sqrt(x)+x2end2021/6/711 示例程序示例程序1: for k=1:4 x(k)=1/k ; end x 示例程序示例程序2: % 累加累加 p=0; k=1; while k=100 p=p+k; k=k+1; end p% 对数组对数组 x 的各分量赋值的各分量赋值2021/6/712 format rat %设置输出格式为有理数 x 1 1/2 1/3 1/4for语句可以嵌套使用;2)当有一个等效的数组方法来解给定的问题时,当有一个等效的数组方法来解给定的问题时,应避免用应避免用for循环。循环。例如,上例可被重写为 n=1:4;x=1./n;format rat;x这种方法执行更快。注意注意 3)使用命令 help format 可了解各种输出格式 k=1;p=0;while k=4 q=1; for l=1:k q=q*l; end p=p+q; k=k+1;endp阶乘再相加2021/6/713 while循环需要根据情况来确定循环次数的情况。循环需要根据情况来确定循环次数的情况。 While循环的一般形循环的一般形式为:式为: while 表达式表达式 语句体语句体 end 只要表达式的值为只要表达式的值为1(真),就执行(真),就执行while与与end之间的语句体,直到表之间的语句体,直到表达式的值为达式的值为0(假)时终止该循环。如果表达式的运算结果为向量或矩阵时,(假)时终止该循环。如果表达式的运算结果为向量或矩阵时,当向量或数组的所有元素都为真,才执行当向量或数组的所有元素都为真,才执行while与与end之间的语句之间的语句1.6.3 while循环循环2021/6/714 在很多情况下在很多情况下,语句序列必须有条件地执行语句序列必须有条件地执行.在编程语言里在编程语言里,这种条件判定这种条件判定 由由if-else-end 结构来完成结构来完成,最简单的形式为最简单的形式为: if表达式表达式 语句体语句体 end 如果表达式的值为真如果表达式的值为真,则执行则执行if与与end之间的语句体之间的语句体,否则否则,执行执行end的后续命令的后续命令. if结构的另一种形式结构的另一种形式 if 表达式表达式1 else 语句体语句体2 end 后续语句后续语句1.6.4 if-else-end 结构结构2021/6/715 如果表达式的值为真如果表达式的值为真,则执行语句体则执行语句体1,然后跳出该选择结构然后跳出该选择结构,执行执行end后续语句;如果表达式的值为假后续语句;如果表达式的值为假,则执行语句体则执行语句体2, 然后然后,执行执行end后续语句后续语句 当有三个或更多的选择时当有三个或更多的选择时,可采用可采用if结构的下列形式结构的下列形式If 表达式表达式1 语句体语句体1elseif 表达式表达式2 语句体语句体2 elseif 表达式表达式n 语句体语句体 n else 语句体语句体n+1end2021/6/716如果表达式如果表达式 为真,则执行语句体为真,则执行语句体j ,然后执行,然后执行end的后续语的后续语句。否则,当句。否则,当if和和elseif后的所有表达式的值都为假时,执行语句体后的所有表达式的值都为假时,执行语句体n+1,然然后执行后执行end的后续语句。例如,可用以下程序得到符号函数。的后续语句。例如,可用以下程序得到符号函数。1,2,j jnfunction y=sign(x)If x0 y=-1elseif x=0 y=0;else y=1;end2021/6/717例题:挑选1到100之间的素数。for k=1:100 t=2; % 除数 while t=sqrt(a),即,即数列下方有界。数列下方有界。2)又因为)又因为 xn-xn+1=0 即单调下降即单调下降所以数列极限存在。所以数列极限存在。 设设xn的极限为的极限为b,则,则xn+1的极限也是的极限也是b。在迭代公式两边取极限,在迭代公式两边取极限,就有就有b=0.5*(b+a/b),联立解之,联立解之得得b=sqrt(a)。.211nnnxaxx2021/6/728x在数学中,可通过第一项和通项公式给出数列在数学中,可通过第一项和通项公式给出数列x1 , x2 , xn , 在计算机中,从当前的问题出发,我们只需根据前一在计算机中,从当前的问题出发,我们只需根据前一项算出后一项,然后计算两项之差,并与精度要求比项算出后一项,然后计算两项之差,并与精度要求比较即可。因此,设置一个变量较即可。因此,设置一个变量首先,首先,x = 前一项前一项 ;然后,利用然后,利用x 算出后一项算出后一项xax212021/6/729x如果如果x -xax21的绝对值小于的绝对值小于10(-5)前项前项后项后项则可把则可把 看成是看成是 的近似值;的近似值;ax =如果如果x -xax21的绝对值的绝对值=10(-5)前项前项后项后项则重新赋值则重新赋值xax21重复上述过程。重复上述过程。2021/6/730% 5的开方程序的开方程序a=5;x=1; %数列的第一项数列的第一项n=0;while abs(x-0.5*(x+a/x) )10(-5) x=0.5*(x+a/x); n=n+1; 记录迭代次数记录迭代次数endx,nfunction y=stusqrt(a)% 任意正实数的开方程序任意正实数的开方程序x=1;n=0;while abs(x-0.5*(x+a/x) )10(-5) x=0.5*(x+a/x) ; n=n+1;endy=x ;调用方式:调用方式:a=13;y=stusqrt(a) 回车回车存盘起名存盘起名ssqrt.m ssqrt 回车回车2021/6/731 x1=0.5*(x+a/2) x2=0.5*(x1+a/2) x(n+1)=0.5*(xn+a/2) 在程序中,我们用一个变量x来依次存储数列的每一项。当然,后存的数据会覆盖先存的数据。n 越大,我们存的数就越接近sqrt(a)。如果数列的前后两项之差尚大于10(-5)时,认为还不够接近sqrt(a),因此,还要继续计算数列的项。 x 是前面一项时, 0.5*(x+a/2)就是后面的一项。因此,我们在循环条件中设置了条件 x 0.5*(x+a/2) 10(-5)程序的说明:程序的说明:2021/6/732x0.5*(x+a/x)程序所体现的方法叫做迭代法1 为初始值 sqrt(a)2021/6/733挑选1-300间的素数:i=1; for k=1:300 j=2; while jk if mod(k,j)=0 break end j=j+1; end if j=k s(i)=k; i=i+1; endendssprintf()是与显示相关的函数备忘部分资料从网络收集整理而来,供大家参考,感谢您的关注!
展开阅读全文