我有一个编写程序的任务,它计算函数多项式插值(Newton方法) . 我有一个MATLAB代码,我正在尝试将其转换为c# . 我知道MATLAB有各种各样的库,而c#没有 .
这是MATLAB代码:
% In arguments% (x,y) -interpolation points(arrays),
% t- matrix
% Out parameters
%fv-interpoliacinio polinomo reikšmės.
n=numel(x)-1; m=numel(t); [k,l]=size(t);
if k ==1
t=t';
end
[k,l]=size(x);
if k ~=1
x=x';
y=y';
end
d=y;
for k=1:n
h=x(k+1:end)-x(1:end-k);
tt=(d(k+1:end)-d(k:end-1))./h;
d(k+1:end)=tt;
end
xx=repmat(x,m,1);
dd=repmat(d,m,1);
tt=repmat(t,1,n);
p=tt-xx(:,1:end-1);
r=ones(m,1);
s=[r cumprod(p,2)];
fv=sum((dd.*s)');
这是我的c#尝试:
public double Newton(double[,] x, double[,] y, double[,] t)
{
double n = x.Length - 1;
double m = t.Length;
int k = t.GetLength(0);
int l = t.GetLength(1);
if (k == 1)
{
for (int i = 0; i < k; i++)
{
for (int j = 0; j < l; j++)
{
t[k, l] = t[i, j];
}
}
}
int k2 = x.GetLength(0);
int l2 = x.GetLength(1);
if (k.Equals(k2))
{
//?????
}
double[,] d = y;
double[,] h;
for (int i = 0; i < k2; i++)
{
h = x[k+1]
}
}
1 回答
牛顿插值是最简单的编程方法之一,无需翻译另外的语言,也不需要特殊的库!!:我只是解释一下这种方法的优点
两种主要方法:
如何调用方法的示例:
你有几个插值点(xp,yp)