加载中…
个人资料
MATLAB技术论坛
MATLAB技术论坛
  • 博客等级:
  • 博客积分:0
  • 博客访问:590,608
  • 关注人气:489
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【原创】基于Matlab构建首项系数为1的正交多项式

(2010-01-14 23:13:27)
标签:

正交多项式

matlab

技术论坛

多项式

杂谈

分类: MATLAB

本帖由Matlab技术论坛原帖,原帖参见http://www.matlabsky.com/thread-4798-1-1.html

 

哈哈,好久没有写MATLAB程序了,今天有些手痒痒的。于是在考完《数值分析》以后写下了这个“构建首项系数为1的正交多项式”,和大家一起分享下哦!

 

09年差不多荒废了半年,现在该开始好好工作和学习了!呵呵,前段时间,博客都是粘贴一些胡乱的东西,现在该言归正传了,写一些有技术含量的文章吧!

 

哈哈,当年的LaterComer回来了!

 

 

function g=orthpoly(rho,a,b,n)
% 构建首项系数为1的正交多项式
%
% 参数说明
% rho:内积的权,必须给符号变量
% a,b:积分上下限,可以数值也可以符号变量
% n:构建前n+1项正交多项式,注意第一项是g0≡1
%
% 举例说明
% syms x % 定义符号变量x,注意本函数只认x
% rho=abs(x) % 定义权,必须符号变量
% a=-1;b=1; % 定义积分上下限
% n=4 % 计算前5个正交多项式
% g=orthpoly(rho,a,b,n) % 调用函数构建正交多项式
%
% 参考资料
% 封建湖.科学出版社.《数值分析》.2005年7月第六次印刷.第64页
% 首项系数为1的正交多项式递推公式如下
% g(0)=1;
% g(1)=x-a(0);
% ...
% g(k+1)=[x-a(k)]*g(k)-b(k-1)*g(k-1)  k=3,4,...
%
% 其中a(k)=(x*g(k),g(k))/(g(k),g(k))       注意:(f,g)表示f和g的内积
    b(k-1)=(g(k),g(k))/(g(k-1),g(k-1))
%

% by dynamic of Matlab技术论坛
% see also http://www.matlabsky.com
% contact me matlabsky@gmail.com
% 2010-01-14 23:25:57
%
syms x
g=sym(zeros(n+1,1));
g(1)=1;
alpha(1)=inprod(rho,x*g(1),g(1),a,b)/inprod(rho,g(1),g(1),a,b);
g(2)=x-alpha(1);
for i=3:n+1
    alpha(i-1)=inprod(rho,x*g(i-1),g(i-1),a,b)/inprod(rho,g(i-1),g(i-1),a,b);
    beta(i-2)=inprod(rho,g(i-1),g(i-1),a,b)/inprod(rho,g(i-2),g(i-2),a,b);
    g(i)=(x-alpha(i-1))*g(i-1)-beta(i-2)*g(i-2);
end
g=expand(g);
function ip=inprod(rho,f,g,a,b)
% 计算函数f和g,在权rho之下的内积
ip=int(rho*f*g,a,b);

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有