MATLAB简介输入及输出格式与多项式函数

上传人:宝路 文档编号:52505530 上传时间:2018-08-22 格式:PPT 页数:39 大小:80.89KB
返回 下载 相关 举报
MATLAB简介输入及输出格式与多项式函数_第1页
第1页 / 共39页
MATLAB简介输入及输出格式与多项式函数_第2页
第2页 / 共39页
MATLAB简介输入及输出格式与多项式函数_第3页
第3页 / 共39页
MATLAB简介输入及输出格式与多项式函数_第4页
第4页 / 共39页
MATLAB简介输入及输出格式与多项式函数_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《MATLAB简介输入及输出格式与多项式函数》由会员分享,可在线阅读,更多相关《MATLAB简介输入及输出格式与多项式函数(39页珍藏版)》请在金锄头文库上搜索。

1、Matlab输入输出格式及多项式函数,在运算式中常需要做数据的输入及输出,采用的方式可以是交谈式的或是指定格式。,输入及输出 交谈式的输入 输出格式,Matlab输入及输出格式,我们来看一个例子,计算面积 Area= 可利用指令input在荧幕印出提示文字做为交谈式的输入。 r = input(Type radius:) % 在两个单引号 之间键入提示文字 Type radius: % 现在键入 2 做为半径值 r = 2 area=pi*r2; % 键入面积算式,交谈式的输入, name = input(Your name please: ,s) % 要键入文字则须在加上s,s 是代表字串(

2、string) Your name please: % 键入名字 J.C. Wu name = J.C. Wu,输出格式,至于输出有二种格式:自由格式 (disp) 和格式化输出 (fprintf)。要直接输出文字或是一数值,可使用disp,例如 temp=20; disp(temp); disp(degrees C); disp(度 C) %中文也接受呢! 20 degrees C 度 C,而指令fprintf则是用来控制输出数据及文字的格式,它的基本格式如 fprintf(The area is %8.5fn, area) 在二个单引号间包括输出的字串The area is,接着是输出数据

3、的格式%8.5f,再来是跳行符号以避免下一个输出 数据或是提示符号也挤在同一行,最后键入要输出的数据名area。 The area is 12.56637 % 输出值为8位数含5位小数 注意输出格式前须有%符号,跳行符号须有符号,在此要稍加说明的是输出数据的格式,以下的例子各说明了不同型态的输出格式 fprintf(f_form: %12.5fn,12345.2) % 输出值为12位数,含5位小数 f_form: 12345.20000 fprintf(f_form: %12.3fn,1.23452) % 输出值为12位数,含3位小数 f_form: 1.235, fprintf(e_form

4、: %12.5en,12345.2) % 输出值为指数格式的12位数,含5位小数 e_form: 1.23452e+004 fprintf(f_form: %12.0fn,12345.2) % 输出值为整数格式的12位数 f_form: 12345,MATLAB常用的三角函数 sin(x):正弦函数 asin(x):反正弦函数 cos(x):余弦函数 acos(x):反余弦函数 tan(x):正切函数 atan(x):反正切函数 sinh(x):超越正弦函数 asinh(x):反超越正弦 cosh(x):超越余弦函数 acosh(x):反超越馀弦函数 tanh(x):超越正切函数 函数 ata

5、nh(x):反超越正切函数,Matlab多项式函数,多项式常被用来模拟一个物理现象的解析函数,之所以采用多项式,是因为它很容易计算。在这里我们将说明如何做多项式的计算及解多项式的根。,令p(x) 代表一个多项式如下 MATLAB 以一最简便方式代表上述的多项式 p=1 4 -7 -10,其中的数值是多项式的各阶项(从高到低)的 各个系数,其实p 也是一个阵列不过是用以代表这个多项式。 有了多项式的表示式后,我们即可来计算其函数值。假设要计算一组数据x对应的多项式值,依照一般的函数 计算须以下列式子计算:, p=x.3+4*x.2-7*x-10 为了能直接运用多项式,可以用函数 polyval直

6、接做运算,语法为 polyval(p,x),其中p 即是代表多项式各阶系数 的阵列。因此 x=linspace(-1,3,N); p=1 4 7 -10; v=polyval(p,x);,y = polyval(p,x) 返回n次多项式p在x处的值。输入变量p=p0 p1 p2pn是一个长度为n+1的向量,其元素为按降排列的多项式系数。 y=pn+pn-1*x+p0*xn x可以是一个矩阵或者一个向量,在这两种情况下,polyval计算在X中任意元素处的多项式p的估值。,用法:linspace(x1,x2,N) 功能:linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢

7、量。其中x1、x2、N分别为起始值、终止值、元素个数。若缺省N,默认点数为100。在matlab的命令窗口下输入help linspace或者doc linspace可以获得该函数的帮助信息。,我们接着说明如何对二个多项式做加减乘除运算。当二个多项式间要做加减乘除时,加 减运算可以直接进行。假设有二个多项式 a(x) 和 b(x) 定义如下:,如果多项式 c(x) 为上述二多项式相加,即 c(x) = a(x) + b(x), 因此,如果是二多项式相减得到的多项式为 d(x) = a(x) - b(x), 则,以下就介绍相关范例,来说明二个多项式的加减运算:, a=1 2 3 4; b=1 4

8、 9 16; c=a+b c = 2 6 12 20 d=a-b d = 0 -2 -6 -12,而将两个多项式相乘可以得到一新的多项式 e(x) = a(x) b(x),如果是两个多项式相除,即 :,上述二个运算式不能直接运算,须要另外定义函数conv做乘法运算以及函数deconv做除法运算。当二多项式相乘,在数学上等于二个阵列做卷积(convolution)运算(因为我们是以阵列来代表一个多项式的各阶系数), 因此可利用conv函数做乘法运算,其语法为conv(a,b),其中a, b代表二个多项式的阵列。而二多项式相除就相 当于反卷积(de-convolution) 运算,因此有 deco

9、nv 函数,其语法稍有不同 q,r=deconv(a,b),其中q,r分别代表整 除多项式及余数多项式。,以下就介绍相关范例,来说明二个多项式的乘除运算: a=1 2 3 4; b=1 4 9 16;, e=conv(a,b) e = 1 6 20 50 75 84 64 g=e+0 0 0 c g = 1 6 20 52 81 96 84,(c = 2 6 12 20), f,r=deconv(e,b) f = 1 2 3 4 r = 0 0 0 0 0 0 0 % 因为是整除所以余数多项式的各系数皆为零, h,r=deconv(g,a) h = 1 4 9 18 r = 0 0 0 0 2

10、 6 12 % 余数多项式为 2*x2 + 6*x + 12,多项式的根,一个多项式视其阶数而定,它的根可以有一个到数个,可能为实数也可能是复数。要求一高阶多项式的根往 往须借助数值方法,所幸MATLAB已将这些数值方法写成一函数roots(p),我们只要输入多项式的各阶系数( 以 p 代表)即可求解到对应的根, p=1 3 2; r=roots(p) r = -2 -1 p=1 -12 0 25 116; % 注意二阶项系数为零须要输入,否则多项式的阶数就不对 r=roots(p) % 有实数根及复数根 r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251

11、 - 1.4672i,与 roots 相关的函数尚有 poly,real,这二个函数的用途是要验算求解的根展开能求得原多项式。 例如有一个二次方程式的根为-2, -1,则以下式计算原多项式 p(x)=(x+2)(x+1)=x2+3x+2 poly 函数就是在求出多项式的各阶系数,其语法为 poly(r),其中 r 是代表根的阵列。而 real 则是用来去除因计算时产生的假虚部系数,为何会有此种情形请参考以下的例子。, r=-2 -1; pp=poly(r) % pp=(x+2)(x+1)=x2+3x+2 pp = 1 3 2 p=1 -4 6 -4; r=roots(p) r = 2.0000

12、 1.0000 + 1.0000i 1.0000 - 1.0000i pp=poly(r) % 这个多项式的系数与原多项式 p 相同 pp = 1 -4 6 -4, pp=1 7 12 9; % 再看另一个多项式 r=roots(pp) r = -4.9395 -1.0303 + 0.8721i -1.0303 - 0.8721i pp=poly(r) % 注意因计算的误差会有假虚部产生 pp = 1.0000 7.0000 12.0000 9.0000 + 0.0000i pp=real(pp) % 可以real将假虚部去除,将原多项式还原 pp = 1.0000 7.0000 12.000

13、0 9.0000,非线性方程的实根,如果求根的方程不为多项式的形式, 就不能用 roots 函数。而这类的方程多半是非线性方程, 其函数形式变化很大。对于解这类方程的根,可以用 fzero函数,它其实是用来找一函数 f(x) 的 x 值代入时,会使该函数值为零 (f(x)=0);而这也就是根的特性,因此我们可以用 fzero求根。,要求任一方程的根有三步骤: (1)先定义方程。要注意必须将方程安排成 f(x)=0 的形式,例如一方程为sin(x)=3, 则该方程式应表示为 f(x)=sin(x)-3。可以 用m-file 定义方程。 (2)代入适当范围的 x, y(x) 值,将该函数的分布图画

14、出,藉以了解该方程的长相。,(3)由图中决定y(x)在何处附近(x0)与 x 轴相交,以fzero的语法fzero(function,x0) 即可求出在 x0附近的根,其中 function 是先前已定义的函数名称。如果从函数分布图看出根不只一 个,则须再代入另一个在根附近的 x0,再求出下一个根。 以下分别介绍几个方程式,来说明如何求解它们的根。,例一、方程为 sin(x)=0 我们知道上式的根有 ,求根方式如下: r=fzero(sin,3) % 因为sin(x)是内建函数,其名称为sin, %因此无须定义它选择 x=3 附近求根 r = 3.1416 r=fzero(sin,6) % 选

15、择 x=6 附近求根 r = 6.2832,例二、方程为MATLAB 内建函数 humps,我们不须要知道这个方程的形态为何,不过我们可以将它画出来,再找出根的位置。求根方式如下: x=linspace(-2,3); y=humps(x); plot(x,y), grid % 由图中可看出在0和1附近有二个根 r=fzero(humps,1.2) r = 1.2995,例三、方程式为 这个方程式其实是个多项式,我们说明除了用 roots 函数找出它的根外,也可以用这节介绍的方法求根,注意二者的解法及结果有所不同。求根方式如下:,% m-function, f_1.m function y=f_1(x) % 定义 f_1.m 函数 y=x.3-2*x-5; x=linspace(-2,3); y=f_1(x); plot(x,y), grid % 由图中可看出在2和-1附近有二个根,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号