x=input('請以列表的形式輸入x');
y=input('請以列表的形式輸入y');
k=length(x);
x0=input('請輸入所求的x');
l0=0;l1=1;l2=1;
for i=1:1:k
for j2=1:1:k
if j2~=i
l2=l2*(x(i)-x(j2));
endend
%%l2為第i個基函式分母
for j1=1:1:k
if j1~=i
l1=l1*(x0-x(j1));
endend
%%l1為第i個基函式分子
l0=l0+(l1/l2)*(y(i));
l1=1;l2=1; %%重新整理,以免影響下一次迴圈
enddisp(l0);
x=input('請以列表的形式輸入x');
y=input('請以列表的形式輸入y');
k=length(x);
x0=input('請輸入所求的x');
for i=1:1:k
l0=0;l1=1;l2=1;
for j2=1:1:k
if j2~=i
l2=l2*(x(i)-x(j2));
endend
%%l2為第i個基函式分母
for j1=1:1:k
if j1~=i
l1=l1*(x0-x(j1));
endend
%%l1為第i個基函式分子
l0=l0+(l1/l2)*(y(i));
enddisp(l0);
第一次寫的時候不管怎麼跑結果都很差,最開始以為是因為插值選的太多,導致方程變壞,更改實驗資料發現即便是只有兩三個插值點,得出的結果依然不可用。於是採用步進功能找毛病。
l0,l1,l2放在了第乙個for的下面,導致了每次迴圈l0都被重置。而只有l1,l2才需要重置初始值。
拉格朗日插值法
拉格朗日插值法 拉格朗日插值法可以幫助我們解決以下的問題 已知x取值0,1,1,2時,f取值2,2,0,6 求x 3時f的值。示例1 intxs intys f 3 intval lagrangepolynomial 3,xs,ys staticint lagrangepolynomial intx...
拉格朗日插值法
模板題 給出n nn個點 xi yi x i,y i xi y i 讓你確定這個n 1 n 1n 1次方程並代入求值 這個有三種求法 第一種是差分法,只適用於xi ix i i xi i的情況,就是不斷做差分直到序列變成乙個定值就可以求出所有項的係數,複雜度o n 2 o n 2 o n2 第二種是...
拉格朗日插值法
function p lagrange x,y p lagrange x,y 其中x和y是向量,p是返回的多項式向量 m獲取x的個數 m length x for k 1 1 m 表示乙個插值函式的起始值 v 1 for i 1 1 m if k i 注意 以後凡是在遇到乙個在數學上是 x 1 等包...