拉格朗日插值法

2021-10-01 10:03:54 字數 1006 閱讀 4806

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 等包...