您的位置:首页 > 编程语言 > MATLAB

MATLAB中的多项式的四则运算与求根方法

2019-05-17 21:40 225 查看

文章目录

1.多项式的加法

当两个多项式的阶次不一样的时候,低阶的多项式用首零填补,使其和高阶多项式有相同的阶次。下面是通用的多项式加法函数示例:


现在为了验证该函数ppadd(a,b),命令行输入以下内容然后按回车键得:

结果是:
c(x)c(x)c(x)=x4x^4x4+3x33x^33x3+6x26x^26x2+10x10x10x+15

2.多项式乘法

在MATLAB中,函数conv支持多项式的乘法(运算法则为两个数组的卷积)
不妨再命令行输入如下指令:

a=[1 2 3 4 5];
b=[1 2 5 6 7];
c=conv(a,b)

按回车键,得到如下结果:

c=
1     4    12    26    47    62    70    58    35

结果是:c(x)c(x)c(x)=x8x^8x8+4x74x^74x7+12x612x^612x6+26x526x^526x5+47x447x^447x4+62x362x^362x3+70x270x^270x2+58x58x58x+353535

3.多项式除法

在MATLAB中,多项式除法是由函数deconv实现的。在命令行窗口输入:

a=[1 5 15 35 69 100 118 110 72];
b=[1 2 4 6 8];
[c,r]=deconv(a,b)

按回车键得到以下结果:

其中c表示商的系数,而r 表示余数,即:
x8+5x7+15x6+35x5+69x4+100x3+118x2+110x+72x4+2x3+4x2+6x+8\frac{x^8+5x^7+15x^6+35x^5+69x^4+100x^3+118x^2+110x+72}{x^4+2x^3+4x^2+6x+8}x4+2x3+4x2+6x+8x8+5x7+15x6+35x5+69x4+100x3+118x2+110x+72​=x4+3x3+5x2+7x+9x^4+3x^3+5x^2+7x+9x4+3x3+5x2+7x+9

4.多项式求根及其逆运算

4.1 多项式求根

所谓多项式求根,即求出多项式为0的值。MATLAB中提供特定函数roots求解一个多项式的根。
例如:求解多项式3x4−10x3+15x+1000=03x^4-10x^3+15x+1000=03x4−10x3+15x+1000=0的x的值
在命令行输入以下指令:

p=[3 -10 0 15 1000];
r=roots(p)

按回车键得到以下结果:

4.2 求根的逆运算

在MATLAB中,无论是多项式还是它的根都是以向量的形式存储,按照MATLAB的规定,多项式是行向量,根是列向量。因此,当我们给出一个多项式的根时,MATLAB也可以构造出相应的多项式。通常,我们调用poly函数,如下所示:
在命令行输入:

c=[4.0283+2.8554i; 4.0283-2.8554i; -2.3616+2.8452i; -2.3616-2.8452i];
p=poly(r)

按回车键输出结果得:


这里需要注意,由于MATLAB无隙处理复数,当用根重组多项式时,如果有一些根是复根(即有虚部)。由于截断误差,poly的结果会有一些小的虚部。消除假的虚部,我们只需要用real函数抽取实部即可。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: