精华内容
下载资源
问答
  • 2021-04-23 09:30:39

    68b14eba3b195d5a7c5371f48cae0bb8.png

    求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中,多项式用行向量表示,其元素为多项式的系数,从左到右按照降幂的形式排列,此种形式称之为幂系数。 例题1 将以下多项式利用MATLAB表示出来。 解: MATLAB代码如下: clc;clear; p=..

    目录

    一. 多项式的表示

    1.1 多项式幂级数的表达形式

    1.2 多项式的嵌套形式

    1.3 因子形式

    二. 多项式的零点

    2.1 给定多项式求零点

    例题 2

    2.2 由零点求多项式

    三. 计算多项式的值

    例题4

    四. 由点拟合多项式

    例题5

    五.多项式积分

    例题6

    六. 多项式微分

    七.多项式的和差

    八. 多项式的乘除

    8.1 多项式相乘

    8.2 多项式相除

    例题7


    一. 多项式的表示

    多项式在数学中一共有三种表达形式。

    1.1 多项式幂级数的表达形式

    y=c_1x^n+c_2x^{n-1}+\cdots+c_nx+c_{n+1}

    1.2 多项式的嵌套形式

    y=(\cdots((c_x+c_2)x+c_3)x+\cdots+c_n)x+c_{n+1}

    1.3 因子形式

    y=c_1(x-r_1)(x-r_2)\cdots(x-r_n)

    N阶多项式有n个根,其中就包含重根复根。如果多项式所有的系数都是实数,那么全部的复根都会以共轭对的形式出现。

    在MATLAB中,多项式用行向量表示,其元素为多项式的系数,从左到右按照降幂的形式排列,此种元素称之为幂系数。

    例题1

    将以下多项式利用MATLAB表示出来。

    y=2x^3+x^2+4x+5

    解:

    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=x^6-6x^5+15x^4-20x^3+15x^2-6x+1

    解:

    很明显,函数y是可以合并的,如下:

    y=x^6-6x^5+15x^4-20x^3+15x^2-6x+1=(x-1)^6

    易得此函数的零点是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的值。

    y=3x^4-7x^3+2x^2+x+1

    解:

    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

    某三阶多项式过四个点,(1.1,3.887),(2.3,4.276),(3.9,4.651),(5.1,2.117),请求出该多项式。

    解:

    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=c_1x^n+c_2x^{n-1}+\cdots+c_nx+c_{n+1}

    积分后的Y如下:

    Y=\int ydx=\frac{c_1}{n+1}x^{n+1}+\frac{c_2}{n}x^{n}+\cdots+\frac{c_n}{2}x^{2}+c_{n+1}x+c_{n+2}

    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

    按多项式的方法求解以下积分:

    I=\int_{-1}^3(3x^4-4x^2+10x-25)dx

    解:

    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

    六. 多项式微分

    原多项式如下:

    y=c_1x^n+c_2x^{n-1}+\cdots+c_nx+c_{n+1}

    微分后的多项式,如下:

    y'=nc_1x^{n-1}+(n-1)c_2x^{n-2}+\cdots+c_n

    可以利用polyder()函数来求多项式的一阶导数的系数,c为多项式y的系数。MATLAB调用格式如下:

    b=polyder(c) 

    上式子中b是微分后的系数,可以表示为如下:

    [nc_1,(n-1)c_2,\cdots,c_n]

    七.多项式的和差

    多项式y_a表示为如下:

    y_a=a_1x^m+a_2x^{m-1}+\cdots+a_mx+a_{m+1}

    多项式y_b表示为如下:

    y_b=b_1x^m+b_2x^{m-1}+\cdots+b_mx+b_{m+1}

    由此,可自己定义两个多项式相加的函数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阶的多项式。

    多项式y_a表示为如下:

    y_a=a_1x^m+a_2x^{m-1}+\cdots+a_mx+a_{m+1}

    多项式y_b表示为如下:

    y_b=b_1x^m+b_2x^{m-1}+\cdots+b_mx+b_{m+1}

    由此两个多项式的乘积y_c可表示如下:

    y_c=y_ay_b=c_1x^d+c_2x^{d-1}+\cdots+c_dx+c_{d+1}

    计算y_c系数的MATLAB命令,如下:

    c=conv(a,b)

    8.2 多项式相除

    多项式y_b除多项式y_a,满足如下式子:

    y_a=y_qy_b+y_r

    上式子中,y_q代表商,y_r代表除法的余数。

    由此,多项式y_qy_r,可以由MATLAB命令得到,如下:

    [q,r]=deconv(a,b)

    例题7

    计算多项式a与多项式b相乘的结果。

    a=2x^4-5x^3+6x^2-x+9,\quad b=3x^2-90x-18

    解:

    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

    展开全文
  • 但既然你这么说,我就给你举个求多项式零点的方法吧,很简单的:例:P(x)=5x^4+4x^3+3x^2+2x+1的零点。程序如下:P=[5 4 3 2 1]; %多项式各项的系数roots(p) %零点,也就是多项式的解运行后得结果:ans ...

    满意答案

    02ae427d08e371d7e90d5b995e828d6d.png

    伍芳荃博客

    2013.11.26

    02ae427d08e371d7e90d5b995e828d6d.png

    采纳率: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 多项式的根或零用于使用高斯正交积分,它可以工作但仍然有点低效,同时我找到了使用根的更好方法。
  • 多项式的表示: ...只知道多项式零点,可以用poly函数来创建多项式的系数数组 poly函数的输入还可以是二维数组,此时返回的值为数组的特征多项式|lamdaE-A| 多项式求值: p=[2 -3 0 -1]; a=1.6 %...

    多项式的表示:

    eg: p(x)=2x^{3}-3x^{2}-1

    在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)

    展开全文
  •  int(F,t,0,T) 建议: 对问题先做数学上的简化,最后一步求解再用Matlab辅助计算,比如一些单变量的超越方程求零点 等等; 从开始就把一堆符号方程交给Matlab,不确定性太高,效率太低。 而对于比较复杂的积分,我...
  • 为任何 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
  • 基于MATLAB多项式的Bergman范数零点分析
  • 该函数计算要用于特定数值积分问题的几个正交多项式零点和权重。 实施的正交规则是 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开发-切比雪夫多项式的计算根。计算任意次切比雪夫多项式的根。
  • Matlab之函数零点 | 学步园

    千次阅读 2021-04-18 05:31:04
    Matlab之函数零点Matlab函数零点的函数是fzero(一元函数),fsolve(二元函数),roots(一元多项式)等:fzero:fzero可以任何一元函数的零点函数的零点:x=-3:0.1:4;y=x.^2.*sin(x)-x+1;plot(x, y, 'r'); %绘...
  • matlab实验多项式运算数学实验 Matlab 多项式运算与代数方程求解器 Matlab 多项式运算 Matlab多项式的表示方法 在 Matlab多项式是用它的系数向量来表示的。 例:2x3-x2+3 [2,-1,0,3] 特别注意:系数中的零是不...
  • 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 ...
  • 本文件针对于数值分析课程,主要内容是数值分析课程实验,包括:牛顿法函数零点、牛顿插值法、三次样条插值多项式、通用多项式拟合、插值型积公式、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 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没有现成的函数去二元函数得零点,但你可以用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*...
  • 目标函数 y=11+x2y=11+x2y = \frac{1}...使用的是11次切比雪夫多项式零点(扩展到指定的x空间) 也就是11个特定的节点。可以区别于之前的使用等距节点的情况 插值效果图 龙格现象基本不严重。虽然误差还存在,...
  • 使用递归关系生成 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);%注意用的乘法和乘法都改用.运

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,384
精华内容 553
关键字:

matlab求多项式零点

matlab 订阅