实验五:Matlab多项式和符号运算
一、实验目的
1.掌握Matlab多项式的运算。 2.了解符号运算。
二、实验内容
1.将多项式P(x)?(x?2)(x?3)(x?7)(x?1)化为x的降幂排列。 syms x;
y=(x-2)*(x+3)*(x-7)*(x+1); expand(y) ans =
x^4-5*x^3-19*x^2+29*x+42 2.求一元高次方程的根。
x9?5x8?30x7?150x6?273x5?1365x4?820x3?4100x2?576x-2880?0
syms x y;
y=x^9-5*x^8-30*x^7+150*x^6-1365*x^4-820*x^3+4100*x^2+576*x-2880; solve(y,x) ans =
6.8194768794135839294004124431946
1.1365779764942761488953013276419+.15748095564819249061612981291831*i
2.8654872113200760683901828473839+2.4926334821808807616844446271927*i
-1.8876051302159888775697938373354+1.0110818640881167605567812452594*i
-.95151427733108350913000920547633
-5.0968827172792270997017839130991
-1.8876051302159888775697938373354-1.0110818640881167605567812452594*i
2.8654872113200760683901828473839-2.4926334821808807616844446271927*i
1.1365779764942761488953013276419-.15748095564819249061612981291831*i
3.求一元高次方程的根,并画出左边多项式函数在x?[?2,2]区间内的曲线。
x4?2x2?1?0
a=[1 0 -2 0 1]; r=roots(a) syms x; x=-2:2; y=[1 0 -2 0 1]; plot(x,y) r =
1.0000 + 0.0000i 1.0000 - 0.0000i
-1.0000 -1.0000
10.50-0.5
-1-1.5-2-2-1.5-1-0.500.511.52 4.对比用多项式函数的polyder函数及符号函数中的diff函数,求导x2+2x+3。 >>y=[1 2 3]; polyder(y) ans =
2 2 5.求多项式 >> a=[1 3 -2 1]; polyval(a,[2,4,5]) ans =
在点2、4、5的值
17 105 191
6.计算 a(x)=2x3+4x2+6x+8, b(x)=3x2+6x+9的多项式相加(试着编写
一个polyadd的函数,实现多项式相加的功能)
function[poly]=polyadd(poly1,poly2) if length(poly1) mz=length(long)-length(short); if mz>0poly=[zeros(1,mz),short]+long; else poly=long+short; end poly1=[2 3 5 7]; poly2=[8 -6 4 -2]; [poly]=polyadd(poly1,poly2) poly = 10 -3 9 5 32327.求多项式f1(x)?x?3x?5x?7和f2(x)?8x?6x?4x?2的乘积 f(x)?f1(x)f(x);并求的商和余式。(conv() deconv()) f2(x)f1=[1 3 5 7]; f2=[8 -6 4 -2]; f=conv(f1,f2) f = 8 18 26 36 -28 18 -14 >> fll=[zeros(1,length(f)-length(f1)),f1] fll = 0 0 0 1 3 5 7 >> >> [q,r]=deconv(f-fll,f2) q = 1.0000 3.0000 5.0000 6.8750 r = 0 0 0 0 -3.7500 -4.5000 -7.2500 528.求y?x?tan(4x)?3的符号导数。 y='x^5+tan(4*x^2)+3'; >> diff(y)