MATLAB 牛顿插值法程序
2015-11-15 16:48
288 查看
function p = newton(x,xi,yi,n)
%ton(n,n)是一个二位数组,用来保存Newton插值多项式的表。
%ton第一列保存的是yi,函数值。
%x=11.5;
%n=5;
%x1=10;
for i = 1: 1 :n
%xi(1,i)=x1;
ton(i,1)=yi(1,i);
% ton(i,1)=log(x1);
%x1=x1+1;
end
%tx一维数组保存的是课本中P109页表5-2 右端的乘子乘积
%第一个是1
tx(1,1) = 1;
for j = 2 : 1 : n
tx(1,j) =tx(1,j-1)*(x-xi(1,j-1)) ;
end
%循环生成每阶差商, ton数组第二列保存的是第一阶差商,第三列保存的是第二阶差商。以此类推,直到N-1阶差商。
for i = 2: 1 : n
m=1;
for j = i : 1 : n
ton(j,i) = ( ton(j-1,i-1) - ton(j,i-1) )/( xi(1,m) - xi(1,j) );
m = m + 1;
end
end
%用P来保存计算结果。Newton多项式Nn(x) 为ton二维数组表示的矩阵的对角线上的差商值与右端乘子乘积的和即tx()数组的乘积的和。
p = 0;
for i = 1: 1 : n
p = p + ( ton(i,i) * tx(1,i) ) ;
end
%ton(n,n)是一个二位数组,用来保存Newton插值多项式的表。
%ton第一列保存的是yi,函数值。
%x=11.5;
%n=5;
%x1=10;
for i = 1: 1 :n
%xi(1,i)=x1;
ton(i,1)=yi(1,i);
% ton(i,1)=log(x1);
%x1=x1+1;
end
%tx一维数组保存的是课本中P109页表5-2 右端的乘子乘积
%第一个是1
tx(1,1) = 1;
for j = 2 : 1 : n
tx(1,j) =tx(1,j-1)*(x-xi(1,j-1)) ;
end
%循环生成每阶差商, ton数组第二列保存的是第一阶差商,第三列保存的是第二阶差商。以此类推,直到N-1阶差商。
for i = 2: 1 : n
m=1;
for j = i : 1 : n
ton(j,i) = ( ton(j-1,i-1) - ton(j,i-1) )/( xi(1,m) - xi(1,j) );
m = m + 1;
end
end
%用P来保存计算结果。Newton多项式Nn(x) 为ton二维数组表示的矩阵的对角线上的差商值与右端乘子乘积的和即tx()数组的乘积的和。
p = 0;
for i = 1: 1 : n
p = p + ( ton(i,i) * tx(1,i) ) ;
end
相关文章推荐
- 光照亮度调整(图像拼接之前)
- Matlab学习历程
- MATLAB中无法读取图像或无法打开文件等类似问题
- matlab和C如何混编
- matlab安装后不能使用,问题提示如下:runtime error!
- Matlab学习历程
- 来来来,有讲一个吐血的故事(matlab)之脚本运行路径是什么
- Matlab功能妙用——鼠标标记
- matlab获取目录中图像名称及路径的递归实现
- 在Matlab中使用mex函数进行C/C++混合编程
- Matlab C混合编程
- DPM(voc-release5) Matlab模型文件 Mat转XML
- MATLAB学习
- 在matlab环境下LIBSVM的demo
- matlab基础
- MATLAB曲线绘制
- matlab学习笔记(八)---空域滤波增强
- matlab学习笔记(七)---空域变换增强-图像间的代数运算
- 用MATLAB进行部分分式展开
- 利用UDP matlab与VS实时通信传输数据