⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 legendre_gauss.m

📁 此程序包含求任意点高斯积分节点和对应的Gauss的求解系数(同时也编写了Lagrange插值公式)
💻 M
字号:
% 此程序包含求任意点高斯积分节点和对应的Gauss的求解系数(同时也编写了Lagrange插值公式)
% 并对给定函数用Gauss型求积公式求积分


clc
clear
syms x;
nn=inputdlg({'请输入高斯节点数','输出数据的有效数字位数'},'Gauss_Legendre 积分公式',1,{'5','6'});
n=str2num(char(nn(1)));
nnn=str2num(char(nn(2)));
F=x^2-1;
Pn=diff(F^n,'x',n)/(2.^n*gamma(n+1));
root=roots(sym2poly(Pn));
im_node=sort(root);
disp([num2str(n),'点高斯积分节点        ', num2str(im_node',nnn)]);
syms xx xxx;
for k=1:n
    LL(k)=xxx;
end

%下面是Lagrange插值公式

for k=1:n
    for kk=1:n
        if kk~=k
            LL(k)=LL(k)*(xx-im_node(kk))/(im_node(k)-im_node(kk));
        end
    end
end
 LL=LL/xxx;
   A=int(LL,xx,-1,1);
   AA=double(vpa(simplify(A)));
  disp([num2str(n),'点Gauss的求解系数   ',num2str(AA,nnn)]);

   
   %假设积分区间为[a,b]

aa=inputdlg({'请输入积分函数下限a','请输入积分函数上限b',},'Gauss_Legendre 积分公式',1,{'0','1'});
a=str2num(char(aa(1)));
b=str2num(char(aa(2)));
jifen=0;
fac=(b-a)/2;
suanli=inline('4/(1+t^2)');    %给定的公式,该积分准确值为pi
for k=1:n
    jifen=jifen+fac*A(k)*suanli((a+b)/2+fac*im_node(k));
end
zhi=vpa(jifen,20);
zhhi=double(zhi);
 disp(['积分的真实值为pi,Gauss_Legendre积分值为       ',num2str(zhhi,nnn)])


    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -