一元以及二元多項式插值擬合 泰勒

2021-08-14 23:16:48 字數 2984 閱讀 7835

申明: 僅個人小記

根本上是基於泰勒公式,包括一元的和二元的泰勒定理。 泰勒用多項式逼近的思想。

一元

一元

二元

其他推導部分和一元一樣,本質上還是解線性方程組。

matlab**

一元

% 本質上就是n個方程解n個未知數,這裡的未知數是待求函式的所有係數

% ac=y a是由x組成的範德蒙德行列式,根據範德蒙德行列式的性質,

%為保證可解,x中不允許出重複的數值

x = 1:10;

y = [4,5,1,8,2,-1,6,7,4,11];

% 很有意思,用到了範德蒙德行列式

% 因為範德蒙德行列式有很好的技巧性的計算方法,所以可能提供更好的計算方法

% 因為是范德蒙德行列式,所以,很容易知道什麼情況該行列式不為零

n = length(x);

a = ones(n,n);

for j = 2:n % 從第二列開始,根據x計算相應的範德蒙德矩陣

for i = 1:n

a(i,j) = x(i)*a(i,j-1);

endendc = inv(a)*y'; % 得到係數c, 即得到了相應的擬合函式

% f(x) = c0+c1*x+c2*x^2+...+cn-1 * x^(n-1)

% 下面繪出擬合函式

x = min(x):0.1:max(x); %

y = zeros(1,length(x));

for i = 1:length(x) % 帶入x 計算 y

t = 1;

for j = 1:n

y(i) = y(i)+t*c(j);

t = t * x(i);

endendsubplot(311)

plot(x,y,'r')

title('原資料點')

subplot(312)

plot(x,y,'g')

hold on

plot(x,y,'o')

title('拉格朗日插值結果')

hold off

subplot(313)

plot(x,y,'g')

hold on

plot(x,y,'r')

plot(x,y,'ro')

title('資料比對')

hold off

二元
close all

clear all

x = [1 2 3 4 5 6 7 8 9 10]

y = [6 2 3 12 9 9 7 3 1 9];

z = [3 2 5 6 3 9 11 9 8 12];

n = length(x); % 必須保證 n = 1+2+3+...+m, m為整數

m = floor(sqrt(2*n))-1; % 計算相應目標函式的階數, 從 0 階開始

%% 資料計算準備

% tt 中的內容及意義

% 0 階 1階 2階 3階

% x的次冪 0 , 0 1 , 0 1 2 , 0 1 2 3 , ...

% y的次冪 0 , 1 0 . 2 1 0 , 3 2 1 0 , ...

tt = zeros(2,n);

k = 1;

for i = 0:m

for j = 0:i

tt(1,k) = j;

tt(2,k) = i-j;

k = k+1;

endend%% 根據tt, x, y, 計算相應的係數矩陣 a

a = ones(m,m);

for i = 1:n

k = 1;

for j = 1:n

a(i,j) = power(x(i),tt(1,k))*power(y(i),tt(2,k));

k = k+1;

endendc = inv(a)*z'; % 得到目標函式的係數, 即得到 z = f(x,y)

%% 繪製目標擬合函式圖

% z = f(x,y)

[x, y] = meshgrid(min(x):0.5:max(x),min(y):0.5:max(y));

% 計算z值

z = zeros(size(x,1),size(x,2)); % 只是賦予z和x同樣的規格

for i = 1:size(x,1)

for j = 1:size(x,2)

for k = 1:n

z(i,j) = z(i,j) + c(k)*power(x(i,j),tt(1,k))*power(y(i,j),tt(2,k));

endend

endsubplot(211)

mesh(x,y,z)

xlabel('x')

ylabel('y')

zlabel('z')

hold on

plot3(x,y,z,'ro')

hold off

subplot(212)

mesh(x,y,z)

xlabel('x')

ylabel('y')

zlabel('z')

hold on

plot3(x,y,z,'ro')

plot3(x,y,z,'r')

2023年1月24日 13:41:16 written by jack

二元多項式

time limit 1000ms memory limit 65536k 有疑問?點這裡 給你多個二元多項式和乙個操作符,讓你輸出操作符操作這些二元多項式之後的結果。首先輸入二元多項式的個數n和操作符號 後面n行輸入每乙個多項式。多組輸入,當n 0的時候結束輸入。n 5,二元多項式的長度小於100...

二元多項式

給你多個二元多項式和乙個操作符,讓你輸出操作符操作這些二元多項式之後的結果。首先輸入二元多項式的個數n和操作符號 後面n行輸入每乙個多項式。多組輸入,當n 0的時候結束輸入。n 5,二元多項式的長度小於1000,二元多項式都是由x,y,數字,組成的 輸出操作之後的結果。輸出的順序按照 x 2 x x...

二元多項式

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 給你多個二元多項式和乙個操作符,讓你輸出操作符操作這些二元多項式之後的結果。input 首先輸入二元多項式的個數n和操作符號 後面n...