MATLAB_简介(2)输入及输出格式与多项式函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
号 ' 之间键入提示文字
Type radius: % 现在键入 2 做为半径值 r= 2 >> area=pi*r^2; % 键入面积算式
>> name = input('Your name please: ','s') % 要键入文字则须在加上's',s 是代表字串
(string)
Your name please: % 键入名字 J.C. Wu
%因此无须定义它选择 x=3 附近求根
,求根方式如下:
>> r=fzero('sin',3) % 因为sin(x)是内建函数,其名称为sin, r=
3.1416
>> r=fzero('sin',6) % 选择 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=
以下就介绍相关范例,来说明二个多项式的乘 除运算: >> a=[1 2 3 4]; b=[1 4 9 16]; >> e=conv(a,b) e= 1 6 20 50 75 84 64
(c Hale Waihona Puke Baidu [ 2 6 12 20])
>> g=e+[0 0 0 c] g= 1 6 20 52 81 96 84
>> [f,r]=deconv(e,b) f= 1234 r= 0 0 0 0 0 0 0 % 因为是整除所以余数多项式的各系数皆为零
用来去除因计算时产生的假虚部系数,为何会有
此种情形请参考以下的例子。
>> r=[-2 -1]; >> pp=poly(r) % pp=(x+2)(x+1)=x^2+3x+2 pp = 132 >> p=[1 -4 6 -4]; >> r=roots(p) r= 2.0000 1.0000 + 1.0000i 1.0000 - 1.0000i >> pp=poly(r) % 这个多项式的系数与原多项式 p 相同 pp = 1 -4 6 -4
在此要稍加说明的是输出数据的格式,以下的 例子各说明了不同型态的输出格式 >> fprintf('f_form: %12.5f\n',12345.2) % 输出 值为12位数,含5位小数 f_form: 12345.20000 >> fprintf('f_form: %12.3f\n',1.23452) % 输出 值为12位数,含3位小数 f_form: 1.235
MATLAB常用的三角函数 sin(x):正弦函数 asin(x):反正弦函数 cos(x):余弦函数 acos(x):反余弦函数 tan(x):正切函数 atan(x):反正切函数
sinh(x):超越正弦函数 asinh(x):反超越正弦 cosh(x):超越余弦函数 acosh(x):反超越馀弦函 数 tanh(x):超越正切函数 函数 atanh(x):反超越正切函数
y = polyval(p,x) 返回n次多项式p在x处的值。输入变量p=[p0 p1 p2…pn]是一个长度为n+1的向量,其元 素为按降排列的多项式系数。 y=pn+pn-1*x+…p0*x^n x可以是一个矩阵或者一个向量,在这两种情况 下,polyval计算在X中任意元素处的多项式 p的估值。
>> [h,r]=deconv(g,a) h= 1 4 9 18 r= 0 0 0 0 2 6 12 % 余数多项式为 2*x^2 + 6*x + 12
多项式的根 一个多项式视其阶数而定,它的根可以有一
个到数个,可能为实数也可能是复数。要求
一高阶多项式的根往 往须借助数值方法,所
幸MATLAB已将这些数值方法写成一函数
name =
J.C. Wu
输出格式 至于输出有二种格式:自由格式 (disp) 和格式
化输出 (fprintf)。要直接输出文字或是一数值,
可使用disp,例如 >> temp=20; >> disp(temp); disp('degrees C'); disp('度 C') %中文也接受呢! 20 degrees C 度C
以fzero的语法fzero('function',x0) 即可求出在 x0 附近的根,其中 function 是先前已定义的函数名 称。如果从函数分布图看出根不只一 个,则须 再代入另一个在根附近的 x0,再求出下一个根。 以下分别介绍几个方程式,来说明如何求解它们 的根。
例一、方程为 sin(x)=0 我们知道上式的根有
要求任一方程的根有三步骤:
(1)先定义方程。要注意必须将方程安排成
f(x)=0 的形式,例如一方程为sin(x)=3, 则该方
程式应表示为 f(x)=sin(x)-3。可以 用m-file 定
义方程。
(2)代入适当范围的 x, y(x) 值,将该函数的分 布图画出,藉以了解该方程的「长相」。
(3)由图中决定y(x)在何处附近(x0)与 x 轴相交,
:
上述二个运算式不能直接运算,须要另外定义函 数conv做乘法运算以及函数deconv做除法运算。 当二多项式相乘,在数学上等于二个阵列做卷积 (convolution)运算(因为我们是以阵列来代表一 个多项式的各阶系数), 因此可利用conv函数做 乘法运算,其语法为conv(a,b),其中a, b代表二 个多项式的阵列。而二多项式相除就相 当于反卷 积(de-convolution) 运算,因此有 deconv 函数, 其语法稍有不同 [q,r]=deconv(a,b),其中q,r分别 代表整 除多项式及余数多项式。
而指令fprintf则是用来控制输出数据及文字的格 式,它的基本格式如
>> fprintf('The area is %8.5f\n', area)
在二个单引号间包括输出的字串The area is, 接着是输出数据的格式%8.5f,再来是跳行符号 以避免下一个输出 数据或是提示符号也挤在同 一行,最后键入要输出的数据名area。 The area is 12.56637 % 输出值为8位数含5位小数 注意输出格式前须有%符号,跳行符号须有\符 号
我们接着说明如何对二个多项式做加减乘除运 算。当二个多项式间要做加减乘除时,加 减运 算可以直接进行。假设有二个多项式 a(x) 和 b(x) 定义如下:
如果多项式 c(x) 为上述二多项式相加,即
c(x) = a(x) + b(x), 因此
如果是二多项式相减得到的多项式为 d(x) = a(x) - b(x), 则
用法:linspace(x1,x2,N) 功能:linspace是Matlab中的一个指令, 用于产生x1,x2之间的N点行矢量。其中x1、 x2、N分别为起始值、终止值、元素个数。 若缺省N,默认点数为100。在matlab的命 令窗口下输入help linspace或者doc linspace可以获得该函数的帮助信息。
Matlab输入输出格式及多项式函数
Matlab输入及输出格式
在运算式中常需要做数据的输入及输出,采用 的方式可以是交谈式的或是指定格式。
•输入及输出
• 交谈式的输入
• 输出格式
交谈式的输入 我们来看一个例子,计算面积 Area= 可利用指令input在荧幕印出提示文字做为交
谈式的输入。
>> r = input('Type radius:') % 在两个单引
与 roots 相关的函数尚有 poly,real,这二个函 例如有一个二次方程式的根为-2, -1,则以下式计
数的用途是要验算求解的根展开能求得原多项式。
算原多项式
p(x)=(x+2)(x+1)=x2+3x+2 poly 函数就是在求出多项式的各阶系数,其语法
为 poly(r),其中 r 是代表根的阵列。而 real 则是
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 - 1.4672i
>> fprintf('e_form: %12.5e\n',12345.2) % 输 出值为指数格式的12位数,含5位小数
e_form: 1.23452e+004 >> fprintf('f_form: %12.0f\n',12345.2) % 输出
值为整数格式的12位数
f_form: 12345
>> x=linspace(-2,3);
>> y=f_1(x);
>> plot(x,y), grid % 由图中可看出在2和-1附近有二个根
>> r=fzero('f_1',2); % 决定在2附近的根
r=
2.0946
>> p=[1 0 -2 -5] >> r=roots(p) % 以求解多项式根方式验证 r= 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i
>> p=x.^3+4*x.^2-7*x-10 为了能直接运用多项式,可以用函数 polyval直 接做运算,语法为 polyval(p,x),其中p 即是代 表多项式各阶系数 的阵列。因此
>> x=linspace(-1,3,N);
>> p=[1 4 7 -10];
>> v=polyval(p,x);
例四、方程式为
求根方式如下:
% m-function, f_2.m
function y=f_2(x) % 定义 f_2.m 函数
y=x.^2.*sin(x)+cos(x);
1.2995
例三、方程式为 这个方程式其实是个多项式,我们说明除了用 roots 函数找出它的根外,也可以用这节介绍的 方法求根,注意二者的解法及结果有所不同。 求根方式如下:
% m-function, f_1.m
function y=f_1(x) % 定义 f_1.m 函数
y=x.^3-2*x-5;
非线性方程的实根 如果求根的方程不为多项式的形式, 就不能用 roots 函数。而这类的方程多半是非线性方程, 其函数形式变化很大。对于解这类方程的根,可 以用 fzero函数,它其实是用来找一函数 f(x) 的 x
值代入时,会使该函数值为零 (f(x)=0);而这也
就是根的特性,因此我们可以用 fzero求根。
以下就介绍相关范例,来说明二个多项式的加 减运算:
>> a=[1 2 3 4]; b=[1 4 9 16]; >> c=a+b c= 2 6 12 20 >> d=a-b d= 0 -2 -6 -12
而将两个多项式相乘可以得到一新的多项式 e(x) = a(x) b(x)
如果是两个多项式相除,即
Matlab多项式函数
多项式常被用来模拟一个物理现象的解析函数,
之所以采用多项式,是因为它很容易计算。在
这里我们将说明如何做多项式的计算及解多项
式的根。
令p(x) 代表一个多项式如下
MATLAB 以一最简便方式代表上述的多项式 p=[1 4 -7 -10],其中的数值是多项式的各阶项 (从高到低)的 各个系数,其实p 也是一个阵 列不过是用以代表这个多项式。 有了多项式的表示式后,我们即可来计算其函数 值。假设要计算一组数据x对应的多项式值,依 照一般的函数 计算须以下列式子计算:
>> 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.0000 9.0000