lagrange插值多項式

2021-09-17 18:15:48 字數 1721 閱讀 4893

簡潔版

% hanshu=input('請輸入函式f(x):','s')

fprintf('請輸入差值區間最小值:\n')

xmin=input('')

fprintf('請輸入差值區間最大值:\n')

xmax=input('')

fprintf('請輸入等分份數:\n')

n = input('')

fprintf('請輸入自變數x:\n')

xin=input('')

h=(xmax-xmin)/n

x =

for t = 1:n+1

x(t)=xmin+h*(t-1)

g(t)=1/(1 + x(t)^2)

% re =x(t)

% f(t) = @(re)hanshu

endy=0.0

k = 0

l=;for k =1:n+1

l=1.0;

for j=1:k-1

l=l*(xin-x(j))/(x(k)-x(j));

endfor j=k+1:n+1

l=l*(xin-x(j))/(x(k)-x(j));

endl(k)=l;

y=y+l(k)*g(k);

end

檔案版

% hanshu=input('請輸入函式f(x):','s')

fprintf('請輸入差值區間最小值:\n')

xmin=input('');

fprintf('請輸入差值區間最大值:\n')

xmax=input('');

% fprintf('請輸入等分份數:\n')

% n = input('');

out=zeros(4,5);

l=zeros(21,5,4);

y=zeros(4,5);

for i=1:5

fprintf('請輸入自變數x:\n')

xin=input('');

x = ;

ii=1;

for n =5:5:20

h=(xmax-xmin)/n;

for t = 1:n+1

x(t)=xmin+h*(t-1);

g(t)=1/(1 + x(t)^2);

% g(t)=exp(x(t));

% re =x(t)

% f(t) = @(re)hanshu

endy=0.0;

k = 0;

for k =1:n+1

l=1.0;

for j=1:k-1

l=l*(xin-x(j))/(x(k)-x(j));

endfor j=k+1:n+1

l=l*(xin-x(j))/(x(k)-x(j));

endl(k,i,ii)=l;

y=y+l(k,i,ii)*g(k);

y(ii,i)=y;

endii=ii+1;

endendfp=fopen('b.txt','a');%'a.txt'為檔名;'a'為開啟方式:在開啟的檔案末端新增資料,若檔案不存在則建立。

fprintf(fp,'%f\t%f\t%f\t%f\t%f\t\r\n',y);%fp為檔案控制代碼,指定要寫入資料的檔案。注意:%d後有空格。

fclose(fp);%關閉檔案。

插值多項式例子

給定函式 ex 在區間 1,1 上的資料表如下 x 101 f x 0.3679 1.0000 2.7182f x 0.3679 1.0000 2.7182 給出 hermite 插值多項式,並計算其誤差。mathematica code create by zzw clear f,f1,a her...

實驗三 牛頓插值多項式

實驗三 牛頓插值多項式 實驗內容 天安門廣場公升旗的時間是日出的時刻,而降旗的時間是日落時分,根據天安門廣場管理委員會的公告,某年10月份公升降旗的時間如下 日期 1 15 22 公升旗 6 09 6 23 6 31 降旗 17 58 17 36 17 26 根據上述資料構造newton插值多項式,...

玄學小記 4 多項式插值

給定平面上的 n 個點,求乙個 n 1 階多項式經過這些點 我以前應該是只會 o n 3 的高斯消元的 就是直接把方程列出來直接解的那種 考慮拉格朗日插值法 f sum y i prod frac 顯然如果直接計算右邊的式子可以得到乙個 o n 3 的做法,這不夠優越 注意到 prod x x j ...