当前位置:服务支持 >  技术文档 >  MATLAB数值分析:计算n+1次勒让德多项式零点的方法

MATLAB数值分析:计算n+1次勒让德多项式零点的方法

阅读数 93
点赞 89
article_banner

Matlab 数值分析求n+1次勒让德多项式的零点

function [Result1,Result2]=LZ(n)

%---------------------------------------------------------------------------------------

%LZ.m为legendreZero的简写,意思是求n+1次勒让德多项式的零点。

%输入勒让德多项式次数

%输出对应勒让德多项式零点(也可以叫高斯点)Result1和高斯点对应的高斯系数Result2

%输出结果为两个数组

%---------------------------------------------------------------------------------------

syms x   

p=sym2poly((x^2-1)^(n+1));  %多项式的n+1次幂转化为矩阵方便计算

for i=1:n+1

    p=polyder(p);%用循环来实现n+1次导

end

pn=p./(factorial(n+1)*2^(n+1));  %完全构建好的勒让德多项式

Result1=sort(roots(pn))';              %求根并按从小到大排好序

Result2=[];   %预先开好一个空集

N=n+1;         %方便循环

a(1:N)=1;       %预先开好一个空集

for i=1:1:N     %循环计算每个高斯系数Ak

    b(x)=0*x+1;

    switch i

        case i==1 

        for j=[2:N]

  a(i)=(Result1(i)-Result1(j))*a(i); %a(i)是分母上的,且总体上看是常数

  b(x)=(x-Result1(j))*b(x);end     %b(x)是分子上的,且总体上看是x的多项式

        case i==N

        for j=[1:i-1]

  a(i)=(Result1(i)-Result1(j))*a(i);

  b(x)=(x-Result1(j))*b(x);end

    otherwise

    for j=[1:(i-1),(i+1):N]

  a(i)=(Result1(i)-Result1(j))*a(i);

  b(x)=(x-Result1(j))*b(x);

    end

    end

   Result2(i)=int(b(x),x,-1,1)/a(i);  %高斯系数公式

end

end

相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空