申明: 僅個人小記
根本上是基於泰勒公式,包括一元的和二元的泰勒定理。 泰勒用多項式逼近的思想。
一元
一元
二元
其他推導部分和一元一樣,本質上還是解線性方程組。
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
2023年1月24日 13:41:16 written by jackclose 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')
二元多項式
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...