-
2021-04-23 09:30:39
求N+1次勒让德多项式的m(m=0,1,...)阶导数零点Matlab程序
子程序:
function x=jp(N,alpha,beta)
n=1:N;
a(1)=(alpha+beta+2)/2;
b(1)=(beta-alpha)/2;
a([2:N+1])=(2*n+alpha+beta+1).*(2*n+alpha+beta+2)./(2*(n+1).*(n+alpha+beta+1));
b([2:N+1])=(alpha*alpha-beta*beta)*(2*n+alpha+beta+1)./(2*(n+1).*(n+alpha+beta+1).*(2*n+alpha+beta));
c=(n+alpha).*(n+beta).*(2*n+alpha+beta+2)./((n+1).*(n+alpha+beta+1).*(2*n+alpha+beta));
A=diag(b./a)+diag(1./a([1:N]),1)+diag(c./a([2:N+1]),-1);
x=sort(eig(A))'
主程序
function x=djp(N,alpha,beta,m)
N1=N-m;
alpha1=alpha+m;
beta1=beta+m;
x=jp(N1,alpha1,beta1)
说明:alpha,beta都取0,m表示m阶导数。
比如求5次勒让德多项式1阶导数的零点
>> djp(4,0,0,1) 回车
x =
-0.7651 -0.2852 0.2852 0.7651
又如求10次勒让德多项式的零点
>> djp(9,0,0,0)
x =
-0.9739 -0.8651 -0.6794 -0.4334 -0.1489 0.1489 0.4334 0.6794 0.8651 0.9739
又如求10次勒让德多项式4阶导数的零点
>> djp(9,0,0,4)
x =
-0.7374 -0.4689 -0.1609 0.1609 0.4689 0.7374
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试
更多相关内容 -
MATLAB中计算多项式零点,积分微分,加减乘除(附完整代码)
2022-04-20 22:46:37在MATLAB中,多项式用行向量表示,其元素为多项式的系数,从左到右按照降幂的形式排列,此种形式称之为幂系数。 例题1 将以下多项式利用MATLAB表示出来。 解: MATLAB代码如下: clc;clear; p=..目录
一. 多项式的表示
多项式在数学中一共有三种表达形式。
1.1 多项式幂级数的表达形式
1.2 多项式的嵌套形式
1.3 因子形式
N阶多项式有n个根,其中就包含重根和复根。如果多项式所有的系数都是实数,那么全部的复根都会以共轭对的形式出现。
在MATLAB中,多项式用行向量表示,其元素为多项式的系数,从左到右按照降幂的形式排列,此种元素称之为幂系数。
例题1
将以下多项式利用MATLAB表示出来。
解:
MATLAB代码如下:
clc;clear; p=[2 1 4 5]; %提取系数 poly2sym(p)
运行结果:
ans =
2*x^3 + x^2 + 4*x + 5二. 多项式的零点
2.1 给定多项式求零点
多项式的零点可以由命令roots得到,求出的结果为一个列向量:
r=roots()
例题 2
求例题1中多项式的零点。
解:
MATLAB代码如下:
clc;clear; p=[2 1 4 5]; %提取系数 r=roots(p)
2.2 由零点求多项式
由零点可得原始多项式的系数,当然,得到的结果可能相差一个倍数关系。MATLAB格式如下:
poly(r) %r为其零点
例题3
求函数y的零点。
解:
很明显,函数y是可以合并的,如下:
易得此函数的零点是1。
但来看看MATLAB的运行,你会发现不一样的:
clc;clear; r=roots([1 -6 15 -20 15 -6 1])
运行结果:
r =
1.0030 + 0.0017i
1.0030 - 0.0017i
1.0000 + 0.0034i
1.0000 - 0.0034i
0.9971 + 0.0017i
0.9971 - 0.0017i分析:数学的分析和MATLAB运行的结果不太一样。由于舍入误差的影响,如果存在重根,这种MATLAB的计算会有误差。
三. 计算多项式的值
可以利用命令polyval计算多项式的值。如果输入的x含有多个横坐标值,那么对应的输出y也为与x长度相同的向量。
例题4
当x=2.5或3时,分别计算对应的多项式y的值。
解:
MATLAB代码如下:
clc;clear; c=[3 -7 2 1 1]; x=[2.5,3]; y=polyval(c,x)
运行结果如下:
y =23.8125 76.0000四. 由点拟合多项式
给定n+1个点,可以唯一确定一个n阶多项式。利用polyfit命令可以确定该多项式的系数。
例题5
某三阶多项式过四个点,
,请求出该多项式。
解:
MATLAB代码如下:
clc;clear; x=[1.1,2.3,3.9,5.1]; y=[3.887,4.276,4.651,2.117];%输入四个点 a=polyfit(x,y,length(x)-1) %此函数的第三个参数代表多项式的阶数 poly2sym(a) %转为符号形式
运行结果:
a =
-0.2015 1.4385 -2.7477 5.4370
ans =
- (361*x^3)/1792 + (15467*x^2)/10752 - (3093646650838585*x)/1125899906842624 + 3060758582605503/562949953421312五.多项式积分
原多项式y如下:
积分后的Y如下:
MATLAB求多项式的积分,格式如下:
q=polyint(p,k) %k代表k阶积分
当然,也可以自己构造函数进行积分。思路如下:
%调用格式为 py=poly_itg(p) function py=poly_itg(p) n=length(p); %p代表被积多项式的系数 py=[p.*[n:-1:1].^(-1),0] %py代表求积后多项式的系数 end %此种方法不包括最后一项积分常数
例题6
按多项式的方法求解以下积分:
解:
MATLAB代码如下:
clc;clear; p=[3 0 -4 10 -25]; %创建一个向量来表示多项式 q=polyint(p); %也可以写成 q=polyint(p,1) a=-1; b=3; I=diff(polyval(q,[a b])) %diff函数代表相减
运行结果:
I =49.0667六. 多项式微分
原多项式如下:
微分后的多项式,如下:
可以利用polyder()函数来求多项式的一阶导数的系数,c为多项式y的系数。MATLAB调用格式如下:
b=polyder(c)
上式子中b是微分后的系数,可以表示为如下:
七.多项式的和差
多项式
表示为如下:
多项式
表示为如下:
由此,可自己定义两个多项式相加的函数poly_add(p1,p2),自定义如下:
function p3=poly_add(p1,p2) n1=length(p1); n2=length(p2); if n1=n2 p3=p1+p2; end if n1>n2 p3=p1+[zeros(1,n1-n2),p2]; end if n1<n2 p3=[zeros(1:n2-n1),p1]+p2; end end
由此,两个多项式相加的调用格式如下:
c=poly_add(a,b) %c为求和后的系数数组
两个多项式相减,调用格式如下:
c=poly_add(a,-b)
八. 多项式的乘除
8.1 多项式相乘
根据数学经验,m阶多项式与n阶多项式的乘积是m+n阶的多项式。
多项式
表示为如下:
多项式
表示为如下:
由此两个多项式的乘积
可表示如下:
计算
系数的MATLAB命令,如下:
c=conv(a,b)
8.2 多项式相除
多项式
除多项式
,满足如下式子:
上式子中,
代表商,
代表除法的余数。
由此,多项式
和
,可以由MATLAB命令得到,如下:
[q,r]=deconv(a,b)
例题7
计算多项式a与多项式b相乘的结果。
解:
MATLAB代码如下:
clc;clear; a=[2 -5 6 -1 9]; b=[3 -90 -18]; c=conv(a,b); %相乘 poly2sym(c) %写成符号的形式
运行结果:
ans =6*x^6 - 195*x^5 + 432*x^4 - 453*x^3 + 9*x^2 - 792*x - 162
-
求多项式的零点,用matlab语言中的roots和fzero
2021-04-20 06:58:04但既然你这么说,我就给你举个求多项式零点的方法吧,很简单的:例:求P(x)=5x^4+4x^3+3x^2+2x+1的零点。程序如下:P=[5 4 3 2 1]; %多项式各项的系数roots(p) %求零点,也就是多项式的解运行后得结果:ans ...满意答案
伍芳荃博客
2013.11.26
采纳率:45% 等级:12
已帮助:10512人
你这好像不是问题哦,呵呵。但既然你这么说,我就给你举个求多项式零点的方法吧,很简单的:
例:求P(x)=5x^4+4x^3+3x^2+2x+1的零点。
程序如下:
P=[5 4 3 2 1]; %多项式各项的系数
roots(p) %求零点,也就是多项式的解
运行后得结果:
ans =
0.1378 + 0.6782i
0.1378 - 0.6782i
-0.5378 + 0.3583i
-0.5378 - 0.3583i
这个应该够清楚了吧!
还可以用你提到的fzero来解决:
例:f(x)=x^3-2x-5的零点。
程序如下:
f = @(x)x.^3-2*x-5; %注意函数的书写格式
z = fzero(f,[-100 100]) %求零点,后面的参数是要限定零点的范围,即在-100---100之间的数值,实际情况也是如此。
结果是:
z =
2.0946
应该清楚了吧!
O(∩_∩)O~
30分享举报
-
Legendre Roots:用于查找 Legendrie 的多项式根或零点的程序。-matlab开发
2021-06-01 20:24:50这是我为家庭作业编写的一个简单程序,legendre 多项式的根或零用于使用高斯正交积分,它可以工作但仍然有点低效,同时我找到了使用根的更好方法。 -
MATLAB 处理多项式函数 多项式的matlab计算
2021-04-27 16:36:33多项式的表示: ...只知道多项式的零点,可以用poly函数来创建多项式的系数数组 poly函数的输入还可以是二维数组,此时返回的值为数组的特征多项式|lamdaE-A| 多项式求值: p=[2 -3 0 -1]; a=1.6 %...多项式的表示:
eg: p(x)=
在matlab中可以用数组表示:
p=[2 -3 0 -1]
多项式的根:
roots(p)
多项式的创建:poly函数的运用
p=[2 -3 0 -1];r=roots(p);
ss=poly(r)
ss
只知道多项式的零点,可以用poly函数来创建多项式的系数数组
poly函数的输入还可以是二维数组,此时返回的值为数组的特征多项式|lamdaE-A|
多项式求值:
p=[2 -3 0 -1];
a=1.6 %the point you want to evaluate
polyval(p,a) $p=[2 -3 0 -1];%compute the value in that point a.
polyvalm可以接受二维数组的输入参数。
多项式的运算:
conv函数可以直接计算两个function的乘积和。
conv(p,p1)
① (*)用于数组乘法,要求第一个数组的列数等于第二个数组的行数
② (.*)用于逐个元素乘法,要求两个数组具有相同尺寸
deconv函数用于除法
[q,r]=deconv(f,g)
q为商多项式,r为余多项式。
多项式的微分:
polyder函数:
polyder(p) % 直接计算p的微分
polyder(a,b) %计算conv(a,b)的微分
[q,r]=polyder(a,b) %计算deconv(a,b)的微分,namely, q/r=(a/b)'
多项式的曲线拟合:
polyfit(x,y,n)
-
如何用matlab求得多项式极值
2021-04-22 15:30:22int(F,t,0,T) 建议: 对问题先做数学上的简化,最后一步求解再用Matlab辅助计算,比如一些单变量的超越方程求零点 等等; 从开始就把一堆符号方程交给Matlab,不确定性太高,效率太低。 而对于比较复杂的积分,我... -
勒让德多项式Pm(x):勒让德多项式Pm(x)。-matlab开发
2021-05-31 03:06:19为任何 M 和 X 构造勒让德多项式 Pm(x) 的函数,其中 M 是多项式的次数,X 是变量或函数。 -
matlab切比雪夫多项式
2011-10-25 21:24:02用matlab实现了切比雪夫多项式的计算 -
MATLAB多项式
2021-04-18 04:11:39多项式的表达式MATLAB用一个行向量来表示多项式,此行向量就是将幂指数降序排列之后多项式各项的系数。例如,考虑下面的表达式:这就是Wallis在他第一次在法国科学院提出牛顿法的时候所用的多项式。在MATLAB中,该... -
基于MATLAB的多项式的Bergman范数零点分析.pdf
2021-06-27 17:35:24基于MATLAB的多项式的Bergman范数零点分析.pdf -
基于MATLAB的多项式的Bergman范数零点分析.zip
2021-10-16 02:03:51基于MATLAB的多项式的Bergman范数零点分析 -
几个正交多项式的高斯求积:这个函数计算几个正交多项式的零点和权重-matlab开发
2021-06-01 08:55:43该函数计算要用于特定数值积分问题的几个正交多项式的零点和权重。 实施的正交规则是 Hermite(概率型)、Hermite(物理学家型)、Legendre、Chebyshev 和 Laguerre。 一个有趣的贡献是(概率类型的)高斯-厄米正交... -
使用MATLAB计算切比雪夫多项式系数
2021-09-20 19:24:50学习了Dolph-Chebyshev加权,此种加权方法可以使得生成的波束图拥有均匀的旁瓣。... %切比雪夫多项式阶数 T0 = [1]; T1 = [1,0]; for ii = 2:N eval(['T',num2str(ii),'=','conv(','T',num2str(ii-1),',','[2,0]' -
MATLAB求函数零点与极值
2016-12-04 17:46:13针对多项式求零点(详见MATLAB多项式及多项式拟合) 2. fzero函数 返回一元函数在某个区间内的的零点. x0 = fzero(@(x)x.^2-3*x-4,[1,5]); 只能求区间里面的一个零点,并且要求在给定区间端点函数值异号,所以使用... -
matlab求极点和零点
2021-04-29 04:01:47利用 MATLAB 的 fdatool 观察传递函数 H(z)的零极点分布、幅度响应、脉冲响 应及阶跃响应,并观察零极点分布与系统稳定性......假设为一个零点,多个极点系统且 b=[ 0.2 0.8 1/2 0.64],a=1,用 zplane(b,a)就可以画出... -
matlab求零点
2021-04-18 05:19:55数值计算方法第四章 计算函数零点和极值点的迭代法 本章讨论非线性方程(组)的求解问题 2...1. 已知离散时间系...Matlab 自带的入门引导 inv 求矩阵逆 invhilb Hilbert ...MATLAB求根的几种方法_数学_自然科学_专业资... -
matlab开发-切比雪夫多项式的计算根
2019-08-24 17:49:36matlab开发-切比雪夫多项式的计算根。计算任意次切比雪夫多项式的根。 -
Matlab之函数零点 | 学步园
2021-04-18 05:31:04Matlab之函数零点Matlab中求函数零点的函数是fzero(一元函数),fsolve(二元函数),roots(一元多项式)等:fzero:fzero可以求任何一元函数的零点:求函数的零点:x=-3:0.1:4;y=x.^2.*sin(x)-x+1;plot(x, y, 'r'); %绘... -
matlab实验多项式运算.ppt
2021-04-28 06:49:59matlab实验多项式运算数学实验 Matlab 多项式运算与代数方程求解器 Matlab 多项式运算 Matlab 中多项式的表示方法 在 Matlab 中多项式是用它的系数向量来表示的。 例:2x3-x2+3 [2,-1,0,3] 特别注意:系数中的零是不... -
matlab多项式运算【技术材料】
2021-04-24 14:57:34《matlab多项式运算【技术材料】》由会员分享,可在线阅读,更多相关《matlab多项式运算【技术材料】(33页珍藏版)》请在人人文库网上搜索。1、Matlab 多项式运算与代数方程求解器,主要内容 多项式的表达方式 多项式... -
matlab多项式求导
2021-04-22 18:32:43实验五:Matlab 多项式和符号运算一、实验目的 1.掌握 Matlab 多项式的运算。 2.了解符号运算。二、实验内容 1.将多项式 P(x) (x 2)(x 3)(x 7)(x 1) ......? ? ? ? ? 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 ... -
数值分析程序代码(MATLAB)_牛顿插值法_三次样条插值多项式_插值型求积_多项式插值_样条插值_
2021-10-01 08:17:24本文件针对于数值分析课程,主要内容是数值分析课程实验,包括:牛顿法求函数零点、牛顿插值法、求三次样条插值多项式、通用多项式拟合、插值型求积公式、Runge-Kutta 4阶算法等。本文件仅为个人课程实验程序代码,... -
matlab----多项式、函数
2018-12-01 16:36:41一个p阶的多项式可以用一个含有p+1个元素的向量表示,MATLAB表示多项式为包含由下降幂排列的系数的行向量,例如 p(x)=2*x^2+1 可以表示为 p = [2 0 1]; conv 多项式的乘法。 p1=[1 1];%它是x+1的系数矩阵 p2=[1 0];... -
matlab多项式运算与代数方程求解解析.ppt
2021-04-18 10:15:03* 多项式运算与代数方程求解 数学软件 Matlab Matlab基础及应用 * 多项式转化为符号表达式:poly2sym 四则运算:conv、deconv 导数与积分:ployder、polyint 求值与零点:polyval、polyvalm、roots、poly 多项式运算... -
MATLAB中勒让德多项式程序
2015-11-25 15:31:23%求勒让德多项式的函数 %计算勒让德多项式中的x^2-1 f = ( t * t - 1)^n; %对f多项式进行n阶求导 y = diff( f , n); %求n得阶乘 str = prod(1 : n); %勒让德多项式的一般表示式 l = (1 / (2^n * str))*y; ... -
MATLAB中求一个双变量函数的零点
2021-04-19 03:34:17答:matlab没有现成的函数去求二元函数得零点,但你可以用solve函数求解啊,z=f(x,y)=0,得到得应该是一条曲线 syms x y y=solve('f(x,y)=0','x') 即可求出解来答:1. 一元函数: f=@(x)(...) 如:f=@(x)(2*x.^2+5*... -
拉格朗日插值--11次切比雪夫多项式零点作为节点Python实现并计算误差
2018-05-27 15:39:46目标函数 y=11+x2y=11+x2y = \frac{1}...使用的是11次切比雪夫多项式的零点(扩展到指定的x空间) 也就是11个特定的节点。可以区别于之前的使用等距节点的情况 插值效果图 龙格现象基本不严重。虽然误差还存在,... -
高斯 Hermite 求积法则:生成 n 次 Hermite 多项式的零点到容差“tol”及其相关权重。-matlab开发
2021-05-30 18:04:15使用递归关系生成 Hermite 函数并通过符号变化和线性插值找到零点。 如果指定了容差,则例程将使用更精细的网格递归调用自身,直到达到收敛,或者执行最大数量的循环(默认为 5)。 -
MATLAB多项式及多项式拟合
2016-12-04 17:35:05求多项式在某一点或某几个点的值. p = [1,1,1];%x^2+x+1 x = [-1,0,1];y = polyval(p,x); 另外求函数在某一点或某几个点的值可以用函数feval. x = [-1,0,1]; y = feval(@(x)exp(x),x);%注意用的乘法和乘法都改用.运