学习笔记-Matlab之多项式详解
本文内容概述:
- 1、多项式的表示
- 2、多项式的计算
- polyval函数
- 3、多项式的根
- 1)数值根
- roots函数
- poly函数
- 2)符号根
- 特定区间内的根
- fzero()
- 1)数值根
- 4、多项式求微分和积分
- 1)求微分/求导数
- polyder函数
- 2)求微分
- polyint函数
- 1)求微分/求导数
- 5、多项式曲线的拟合
- polyfit函数
正文
多项式:诸如pnxn+pn−1xn−1+...+p2x2+p1x+p0p_nx^n+p_{n-1}x^{n-1}+...+p_2x^2+p_1x+p_0pnxn+pn−1xn−1+...+p2x2+p1x+p0,包含非负整数指数的单个变量的表达式。
1、多项式的表示
Mathlab将多项式表示为行向量,其中的每个元素是按降幂排序的系数,例如p=[p2,p1,p0]表示多项式p(x)=p2x2+p1x+p0p(x)=p_2x^2+p_1x+p_0p(x)=p2x2+p1x+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)=dxdp(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之多项式详解相关推荐
- java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解
Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...
- spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)
spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...
- 【学习笔记】线段树详解(全)
[学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...
- [原创]Saltstack学习笔记:命令参数详解以及配置文件说明
很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...
- Laravel学习笔记汇总——Collection方法详解
## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...
- Android学习笔记——Android 签名机制详解
Android 签名机制详解 近期由于工作需要在学习 Android 的签名机制,因为没有现成资料,只能通过开发者文档和阅读博客的方式对 Android 签名机制进行大致了解.过程中查阅到的资料相对零 ...
- [学习笔记] 伸展树splay详解+全套模板+例题[Luogu P3369 【模板】普通平衡树]
文章目录 引入概念 全套模板 变量声明 update ==rotate旋转== splay操作 insert插入 delete删除 查找x的位置 查找第k大 前驱/后继 极小值-inf和极大值inf的 ...
- cdt规约报文用程序解析_程序员必备的学习笔记《TCP/IP详解(二)》
把这三个协议放到一起学习是因为这三个协议处于同一层,ARP 协议用来找到目标主机的 Ethernet 网卡 Mac 地址,IP 则承载要发 送的消息.数据链路层可以从 ARP 得到数据的传送信息,而从 ...
- [读书笔记]C#学习笔记三: C#类型详解..
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
最新文章
- Connection closed by foreign host无法连接linux
- oracle mysql 数据验证工具_Oracle Orion tool check io(ORACLE Orion 工具查看以及校验IO)
- Oracle Partition Outer Join 稠化报表
- ExtJs UI框架学习三
- LiveVideoStack线上交流分享 (十四) —— 深度学习在视频分析处理的实践
- spring rmi_Spring远程支持和开发RMI服务
- poj 2965 The Pilots Brothers' refrigerator
- 暑假周总结二7.22
- php模板引擎如何实现,PHP模板引擎如何实现
- Linux内核源代码分析——swap实现
- linux系统下安装flash player插件下载安装,Linux16.0.4下安装Adobe Flash Player插件(Firefox)...
- Mac双网卡路由设置实现内外网同时访问
- 计算机网络自顶向下方法
- star法则java简历_在简历中使用STAR法则
- 麻省理工学院计算机科学与工程博士,2020美国麻省理工大学计算机科学博士专排...
- 漫画:什么是 B+ 树?
- 疯狂的程序员 兼职(下)
- Mac IntelliJIDEA非正常关闭解决(reopen失败)
- win10卸载软件_删除win10全家桶,让你的电脑速度飞起来
- 合并两个JSONObject
热门文章
- OpenStack-Pike版Ironic安装指导分析-(上)
- Android 2.2 (Froyo) 源码已经公布
- 在UE4中完美导入MMD的动作,表情;基本导入镜头,材质---最详细教程
- 2022年全球市场花生酱威士忌总体规模、主要生产商、主要地区、产品和应用细分研究报告
- Latex学习以及IEEE论文投稿Latex排版经历
- saber 2.7.1 maven 配置
- python 召回率_使用sklearn获取精确性和召回率
- 小米AX6S刷OpenWrt和开启OpenClash,及刷回官网固件
- 蓝桥杯 ALGO-121 猴子分苹果 java
- html相同标签nth,比较CSS3选择器:nth-child和:nth-of-type之间的区别