实验五:Matlab多项式和符号运算
一、实验目的
1.掌握Matlab多项式的运算。
2.了解符号运算。
二、实验内容
1.将多项式()(2)(3)(7)(1)
=-+-+化为x的降幂排列。
P x x x x 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.求一元高次方程的根。
98765432
--++--++=
53015027313658204100576-28800 x x x x x x x x x
syms x y;
y=x^9-5*x^8-30*x^7+150*x^6-1365*x^4-820*x^3+410
0*x^2+576*x-2880;
solve(y,x)
ans =
6.81947687944124431946
1.42761488953013276419+.8192491831*i
2.865487219+2.49263348244446271927*i
-1.887673354+1.812452594*i
-.9583509633
-5.922730991
-1.887673354-1.812452594*i
2.865487219-2.49263348244446271927*i
1.42761488953013276419-.8192491831*i
3.求一元高次方程的根,并画出左边多项式函数在[2,2]
x∈-区间内的曲线。
42
-+=
x x
210
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
-2-1.5-1-0.500.51 1.52
-2-1.5
-1
-0.50
0.5
1
4.对比用多项式函数的polyder 函数及符号函数中的diff 函数,求导x 2+2x+3。
>>y=[1 2 3];
polyder(y)
ans =
2 2
5.求多项式
在点2、4、5的值
>> a=[1 3 -2 1];
polyval(a,[2,4,5])
ans =
17 105 191
6.计算 a(x)=2x 3+4x 2+6x+8, b(x)=3x 2+6x+9的多项式相加(试着编写一个polyadd 的函数,实现多项式相加的功能)
function[poly]=polyadd(poly1,poly2)
if length(poly1)<length(poly2)
short=poly1;
long=poly2;
else short=poly2;
long=poly1;
end
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
7.求多项式321()357f x x x x =+++和322()8642f x x x x =-+-的乘积
()f x ;并求12()()()
f x f x f x -的商和余式。
(conv() deconv()) 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
8.求52
=++的符号导数。
y x x
tan(4)3
y='x^5+tan(4*x^2)+3';
>> diff(y)
ans =
-26 -41 -10 73 -19 13 -70 12 -10
78 -26 -44 -9 2 8
f x的表达式。
观察在不使用collect(f)
9.用符号运算求实验内容6中的()
函数以及使用后的结果。
三、设计提示
1.关于多项式运算的函数有poly、roots、diff、conv/deconv等。
2.多项式做加减运算时要注意等长度。
3.符号表达式的输入可以用字符串方式,也可以用sym函数, syms函数。
4.了解以下符号多项式函数
1.collect(f): 函数用途是合并多项式中相同的项,
syms x t
f=(1+x)*t+x*t;
collect(f)
2.expand(f):展开多项式,
syms x
f=x*(x*(x-1)+3)+2;
expand(f);
3.horner(f)对转换多项式为Horner形式, 这种形式的特点是乘法嵌套, 其有着
不错的数值计算性质.
syms x;
f=x^3+2*x^2+5*x-2
horner(f)
4.factor(f): 多项式的因式分解. 如果无法在有理数的范围内作分解, 那么返回
的结果还是输入值.
syms x;
f=x^3-6*x^2+11*x-6;
factor(f)
5.simplify(f): 通过数学运算化简符号表达式
syms x;
f=cos(x)^2+sin(x)^2
simplify(f)
6.simple(f): 威力比较强大, 它会尝试各种办法来化简符号表达式, 其化简的标
准是使得符号表达式的长度最短.
syms x
f=sin(x)^2+cos(x)^2;
simple(f)
7.subexpr(f): 通过计算机自动寻找, 将表达式中多次出现的因式用简短的符号
表示, 返回的结果中包含替换之后的表达式, 以及被替换的因式.
syms x a;
f=solve(x^2+a*x-1);
r=subexpr(f);
8.pretty(f): 用"我们人能看到懂"的表示方法表示出符号表达式.
syms a x;
f=solve(x^2+a*x-1);
pretty(f);
四、实验报告要求
1.编写实现第2个实验内容中所使用的函数文件,并记录相应的生成结果和图形。
2.对于多项式的结果应以多项式向量和多项式表达式两种方式记录。
3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。