lagrange插值多项式

简洁版

% hanshu=input('请输入函数f(x):','s')
fprintf('请输入差值区间最小值:\n')
xmin=input('')
fprintf('请输入差值区间最大值:\n')
xmax=input('')
fprintf('请输入等分份数:\n')
n = input('')
fprintf('请输入自变量x:\n')
xin=input('')
h=(xmax-xmin)/n
x = []
for t = 1:n+1
    x(t)=xmin+h*(t-1)
    g(t)=1/(1 + x(t)^2)
%     re =x(t)
%     f(t) = @(re)hanshu
end
y=0.0
k = 0
L=[];
for k =1:n+1
    l=1.0;
    for j=1:k-1
        l=l*(xin-x(j))/(x(k)-x(j));
    end
    for j=k+1:n+1
        l=l*(xin-x(j))/(x(k)-x(j));
    end
    L(k)=l;
    y=y+L(k)*g(k);
end

文件版

% hanshu=input('请输入函数f(x):','s')
fprintf('请输入差值区间最小值:\n')
xmin=input('');
fprintf('请输入差值区间最大值:\n')
xmax=input('');
% fprintf('请输入等分份数:\n')
% n = input('');
out=zeros(4,5);
L=zeros(21,5,4);
Y=zeros(4,5);
for i=1:5
    fprintf('请输入自变量x:\n')
    xin=input('');
    x = [];
    ii=1;
    for n =5:5:20
        h=(xmax-xmin)/n;
        for t = 1:n+1
            x(t)=xmin+h*(t-1);
            g(t)=1/(1 + x(t)^2);
            %     g(t)=exp(x(t));
            %     re =x(t)
            %     f(t) = @(re)hanshu
        end
        y=0.0;
        k = 0;
        for k =1:n+1
            l=1.0;
            for j=1:k-1
                l=l*(xin-x(j))/(x(k)-x(j));
            end
            for j=k+1:n+1
                l=l*(xin-x(j))/(x(k)-x(j));
            end
            L(k,i,ii)=l;
            y=y+L(k,i,ii)*g(k);
            Y(ii,i)=y;
        end
        ii=ii+1;
    end
end

fp=fopen('B.txt','a');%'A.txt'为文件名;'a'为打开方式:在打开的文件末端添加数据,若文件不存在则创建。
fprintf(fp,'%f\t%f\t%f\t%f\t%f\t\r\n',Y);%fp为文件句柄,指定要写入数据的文件。注意:%d后有空格。
fclose(fp);%关闭文件。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值