fapprox

function s= fapprox(x,f,n)
% 本次实验我写的是勒让德多项式逼近已知函数
% 逼近点的x坐标 x,已知函数 f,n 所需项数
if nargin<3
    n=5;
end
% xa右端点,xb左端点
xa=x(1);xb=x(end);
% 创建一个空的 n*1的cell矩阵
base=cell(n,1);
% a=-1;b=1;rho=@(x)ones(1,length(x));
% base{1}=@(x)ones(1,length(x));
% for k=2:n
%     base{k}=@(x)x.*base{k-1}(x);
% end
% 初始化定义区间
a=-1;b=1;
% 构造矩阵 1行 ,length(x) 列 
rho=@(x)ones(1,length(x));
% 规定前两项为base{1},base{2}
base{1}=@(x)ones(1,length(x));
base{2}=@(x)x;
% 从第三项开始,求3到n的项数
for k=3:n
    base{k}=@(x)(2*k-3)/(k-1)*x.*base{k-1}(x)-(k-2)/(k-1)*base{k-2}(x);
end
% 区间转换
g0=@(x,xa,xb)(xb-xa)/(b-a)*(x-a)+xa;
g1=@(x,xa,xb)(b-a)/(xb-xa)*(x-xa)+a;
% 积分
iprod=@(x,y)integral(@(t)rho(t).*x(t).*y(t),a,b);
f=@(x)f(g0(x,xa,xb));
% 创建一个 n行1 列的全0 矩阵,存储值
c=zeros(n,1);
% 求系数,存储在数组c中
for i=1:n
    c(i)=iprod(base{i},f)/iprod(base{i},base{i});
end
% 构造矩阵 1行 ,length(x) 列 ,存储
 s=@(x)zeros(1,length(x));   
% 存储项
for k=1:n
    s=@(x)s(x)+c(k)*base{k}(x);
end
s=@(x)s(g1(x,xa,xb));
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值