本文内容概述:

  • 1、多项式的表示
  • 2、多项式的计算
    • polyval函数
  • 3、多项式的根
    • 1)数值根

      • roots函数
      • poly函数
    • 2)符号根
    • 特定区间内的根
      • fzero()
  • 4、多项式求微分和积分
    • 1)求微分/求导数

      • polyder函数
    • 2)求微分
      • polyint函数
  • 5、多项式曲线的拟合
    • polyfit函数

正文

多项式:诸如pnxn+pn−1xn−1+...+p2x2+p1x+p0p_nx^n+p_{n-1}x^{n-1}+...+p_2x^2+p_1x+p_0pn​xn+pn−1​xn−1+...+p2​x2+p1​x+p0​,包含非负整数指数单个变量的表达式。

1、多项式的表示

Mathlab将多项式表示为行向量,其中的每个元素是按降幂排序的系数,例如p=[p2,p1,p0]表示多项式p(x)=p2x2+p1x+p0p(x)=p_2x^2+p_1x+p_0p(x)=p2​x2+p1​x+p0​。

多项式p(x)=4x5−3x2+x+1p(x)=4x^5-3x^2+x+1p(x)=4x5−3x2+x+1的表示:

p=[4 0 0 -3 2 1]

2、多项式的计算

根据特定值计算多项式

polyval(p,1)   %计算多项式p,x=1的值,对于上述例子,输出4

以矩阵形式计算多项式

X = [2 4 5; -1 0 3; 7 1 5];
Y = polyvalm(p,X)
%输出:Y =    154360       78561      19306549001       24072       59692215378      111419      269582

3、多项式的根

(1) 数值根

roots函数
例:创建一个向量以表示多项式 x2−x−6x^2−x−6x2−x−6,然后计算多项式的根。

p = [1 -1 -6];
r = roots(p)
% 输出 r=3-2

poly函数
poly 函数返回具有指定根的多项式。对向量执行运算时,poly 和 roots 为反函数,因此 poly(roots§) 返回 p。

p2 = poly(r)
% 输出 p2 =1    -1    -6

对矩阵执行运算时,poly 函数会计算矩阵的特征多项式。特征多项式的根是矩阵的特征值。因此,roots(poly(A)) 和 eig(A) 返回相同的答案(取决于舍入误差、排序和缩放)。

(2)符号根:以符号形式计算多项式

solve函数
计算多项式的根

syms x     % 声明一个符号变量x
s = solve(x^2-x-6)
% 输出 s =-23

factor函数
计算多项式各项的因子

F = factor(x^2-x-6)
% 输出 F =
[ x + 2, x - 3]
(3)求特定区间内的根

使用 fzero 函数求多项式在特定区间内的根。例如,创建一个函数句柄以表示多项式 。

p = @(x) 3*x.^7 + 4*x.^6 + 2*x.^5 + 4*x.^4 + x.^3 + 5*x.^2;

在区间 [-2,1]内绘制该函数。

x = -2:0.1:1;
plot(x,p(x))
ylim([-100 50])
grid on
hold on

输出:

从绘图中,多项式在 0 和另一个接近 -1.5 的位置各有一个简单的根。使用 fzero 计算并绘制接近 -1.5 的根。

Z = fzero(p, -1.5)     %输出Z=-1.6056
plot(Z,p(Z),'r*')

4、多项式求微分和积分

1)求微分/求导数
使用 polyder函数获取多项式p(x)=x3−2x−5p(x)=x^3-2x-5p(x)=x3−2x−5的导数,生成的多项式为q(x)=ddxp(x)=3x2−2q(x)=\frac d {dx}p(x)=3x^2-2q(x)=dxd​p(x)=3x2−2 。

p = [1 0 -2 -5];
q = polyder(p)
% 输出
q = 3     0    -2

polyder 也可以计算两个多项式积或商的导数。例如,创建两个向量来表示多项式a(x)=x2+3x+5a(x)=x^2+3x+5a(x)=x2+3x+5和b(x)=2x2+4x+6b(x)=2x^2+4x+6b(x)=2x2+4x+6 。
通过调用带有单个输出参数的 polyder来计算两个多项式之积的导数,生成的多项式为c(x)=8x3+30x2+56x+38c(x)=8x^3+30x^2+56x+38c(x)=8x3+30x2+56x+38。

a = [1 3 5];
b = [2 4 6];
c = polyder(a,b)
% 输出
c = 8    30    56    38

通过调用带有两个输出参数的 polyder来计算两个多项式之商的导数,生成的多项式为:q(x)=ddx[a(x)b(x)]=−2x2−8x−24x4+16x3+40x2+48x+36=q(x)d(x)q(x)=\frac d {dx}[\frac {a(x)} {b(x)}]=\frac {-2x^2-8x-2} {4x^4+16x^3+40x^2+48x+36}=\frac {q(x)} {d(x)}q(x)=dxd​[b(x)a(x)​]=4x4+16x3+40x2+48x+36−2x2−8x−2​=d(x)q(x)​

[q,d] = polyder(a,b)
% 输出
q =-2    -8    -2
d =4    16    40    48    36

(2)求微分
使用 polyint函数 对多项式p(x)=4x3−3x2+1p(x)=4x^3-3x^2+1p(x)=4x3−3x2+1求积分,生成的多项式为 q(x)=∫p(x)dx=x4−x3+xq(x)=\int p(x)dx=x^4-x^3+xq(x)=∫p(x)dx=x4−x3+x。

p = [4 -3 0 1];
q = polyint(p)
% 输出
q = 1    -1     0     1     0

5、多项式曲线的拟合

此部分说明如何使用polyfit 函数将多项式曲线与一组数据点拟合。按照如下语法,使用 polyfit 求出以最小二乘方式与一组数据拟合的多项式的系数:

   p = polyfit(x,y,n)

其中:

  • x 和 y 是包含数据点的 x 和 y 坐标的向量
  • n 是要拟合的多项式的次数

举个栗子。

% 包含5个样本点的测试数据(x,y)
x = [1 2 3 4 5];
y = [5.5 43.1 128 290.7 498.4];
% 用三次多项式进行拟合,返回结果
p = polyfit(x,y,3)
%输出p= -0.1917   31.5821  -60.3262   35.3400绘制样本点和拟合曲线,输出结果如下图。
x2 = 1:.1:5;
y2 = polyval(p,x2);
plot(x,y,'o',x2,y2)
grid on
s = sprintf('y = (%.1f) x^3 + (%.1f) x^2 + (%.1f) x + (%.1f)',p(1),p(2),p(3),p(4));
text(2,400,s)

学习笔记-Matlab之多项式详解相关推荐

  1. java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解

    Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...

  2. spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

    spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...

  3. 【学习笔记】线段树详解(全)

    [学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...

  4. [原创]Saltstack学习笔记:命令参数详解以及配置文件说明

    很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...

  5. Laravel学习笔记汇总——Collection方法详解

    ## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...

  6. Android学习笔记——Android 签名机制详解

    Android 签名机制详解 近期由于工作需要在学习 Android 的签名机制,因为没有现成资料,只能通过开发者文档和阅读博客的方式对 Android 签名机制进行大致了解.过程中查阅到的资料相对零 ...

  7. [学习笔记] 伸展树splay详解+全套模板+例题[Luogu P3369 【模板】普通平衡树]

    文章目录 引入概念 全套模板 变量声明 update ==rotate旋转== splay操作 insert插入 delete删除 查找x的位置 查找第k大 前驱/后继 极小值-inf和极大值inf的 ...

  8. cdt规约报文用程序解析_程序员必备的学习笔记《TCP/IP详解(二)》

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP 协议用来找到目标主机的 Ethernet 网卡 Mac 地址,IP 则承载要发 送的消息.数据链路层可以从 ARP 得到数据的传送信息,而从 ...

  9. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

最新文章

  1. Connection closed by foreign host无法连接linux
  2. oracle mysql 数据验证工具_Oracle Orion tool check io(ORACLE Orion 工具查看以及校验IO)
  3. Oracle Partition Outer Join 稠化报表
  4. ExtJs UI框架学习三
  5. LiveVideoStack线上交流分享 (十四) —— 深度学习在视频分析处理的实践
  6. spring rmi_Spring远程支持和开发RMI服务
  7. poj 2965 The Pilots Brothers' refrigerator
  8. 暑假周总结二7.22
  9. php模板引擎如何实现,PHP模板引擎如何实现
  10. Linux内核源代码分析——swap实现
  11. linux系统下安装flash player插件下载安装,Linux16.0.4下安装Adobe Flash Player插件(Firefox)...
  12. Mac双网卡路由设置实现内外网同时访问
  13. 计算机网络自顶向下方法
  14. star法则java简历_在简历中使用STAR法则
  15. 麻省理工学院计算机科学与工程博士,2020美国麻省理工大学计算机科学博士专排...
  16. 漫画:什么是 B+ 树?
  17. 疯狂的程序员 兼职(下)
  18. Mac IntelliJIDEA非正常关闭解决(reopen失败)
  19. win10卸载软件_删除win10全家桶,让你的电脑速度飞起来
  20. 合并两个JSONObject

热门文章

  1. OpenStack-Pike版Ironic安装指导分析-(上)
  2. Android 2.2 (Froyo) 源码已经公布
  3. 在UE4中完美导入MMD的动作,表情;基本导入镜头,材质---最详细教程
  4. 2022年全球市场花生酱威士忌总体规模、主要生产商、主要地区、产品和应用细分研究报告
  5. Latex学习以及IEEE论文投稿Latex排版经历
  6. saber 2.7.1 maven 配置
  7. python 召回率_使用sklearn获取精确性和召回率
  8. 小米AX6S刷OpenWrt和开启OpenClash,及刷回官网固件
  9. 蓝桥杯 ALGO-121 猴子分苹果 java
  10. html相同标签nth,比较CSS3选择器:nth-child和:nth-of-type之间的区别