![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
用MATLAB怎么编程?
(x-x1)*(x-x2)...*(x-x(k-1))*(x-x(k+1))...*(x-xn)/(xk-x1)*(x-x2)...*(x-x(k-1))*(x-x(k+...
(x-x1)*(x-x2)...*(x-x(k-1))*(x-x(k+1))...*(x-xn)/(xk-x1)*(x-x2)...*(x-x(k-1))*(x-x(k+1))...*(x-xn)用MATLAB怎么编写循环程序?
急用,先谢过了~
不好意思,分母是(xk-x1)*(xk-x2)...*(xk-x(k-1))*(xk-x(k+1))...*(xk-xk)
二楼的朋友,还是不对啊,我说的k也是从1到n.
我看不懂啊,就是拉格朗日插值多项式.可是你的程序图形画不出来呀 展开
急用,先谢过了~
不好意思,分母是(xk-x1)*(xk-x2)...*(xk-x(k-1))*(xk-x(k+1))...*(xk-xk)
二楼的朋友,还是不对啊,我说的k也是从1到n.
我看不懂啊,就是拉格朗日插值多项式.可是你的程序图形画不出来呀 展开
展开全部
不需要用循环,直接使用逻辑数组运算更快。
我假设你的x和x(1)--x(n)是不同的变量,那么我用a来表示你的x,用x数组代表你的x(1)--x(n)
我随便给这些数赋值
a=10;
x=1:3:30;
k=5;
temp = true(size(x));
temp(k) = false;
y = prod(a - x) / prod(x(k) - x(temp));
a-x是生成数组[a-x(1), a-x(2), ..., a-x(n)],prod()是吧这个数组相乘
temp是一个逻辑数组,和x相同大小,并且只有第k个数是false。x(temp)就是生成[x(1), x(2),..., x(k-1), x(k+1), ..., x(n)]
其他的应该容易理解
补充:
拉格朗日插值多项式可也这么写:
%x0,y0是已知各点坐标,共n点
x0 = [1, 2, 3];
y0 = [1, 8, 27];
n = length(x0);
%x是要求的点
x = 4;
y = 0;
for k = 1:n
temp = true(size(x0));
temp(k) = false;
y = y + y0(k) * prod(x - x0(temp)) / prod(x0(k) - x0(temp));
end
我假设你的x和x(1)--x(n)是不同的变量,那么我用a来表示你的x,用x数组代表你的x(1)--x(n)
我随便给这些数赋值
a=10;
x=1:3:30;
k=5;
temp = true(size(x));
temp(k) = false;
y = prod(a - x) / prod(x(k) - x(temp));
a-x是生成数组[a-x(1), a-x(2), ..., a-x(n)],prod()是吧这个数组相乘
temp是一个逻辑数组,和x相同大小,并且只有第k个数是false。x(temp)就是生成[x(1), x(2),..., x(k-1), x(k+1), ..., x(n)]
其他的应该容易理解
补充:
拉格朗日插值多项式可也这么写:
%x0,y0是已知各点坐标,共n点
x0 = [1, 2, 3];
y0 = [1, 8, 27];
n = length(x0);
%x是要求的点
x = 4;
y = 0;
for k = 1:n
temp = true(size(x0));
temp(k) = false;
y = y + y0(k) * prod(x - x0(temp)) / prod(x0(k) - x0(temp));
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |