Chương 5: Nội suy và xấp xỉ hàm
A- M-file --- P1
1. Cài đặt hàm tính vecto hệ số của đa thức nội suy Newton tiến bậc n-1xuất phát từ x1
2. Cài đặt hàm tính xấp xỉ giá trị đa thức nội suy P(x) bậc n-1 tại xx=(xx1,xx2…xxn) bằng Lagrange
3. Tính hệ số a,b ,c của quan hệ y= ax2+bx+c theo pp bình phương tối thiểu – p = Parabolfit(x, y)
4. Tính hệ số a, b ,c của quan hệ y= a+bcosx+csinx theo pp bình phương tối thiểu – S = sincosfit(x, y)
5. Tính hệ số a và b của quan hệ hàm y=ae^bx – [a,b] = ExpFit(x, y)
Hàm nội trú ---P2
Bài 1:tìm xấp xỉ các hệ số của đa thức P(x) bậc 3 tại X = 1:0.2:3
bài 3: tính xấp xỉ hàm bằng phương pháp spline bậc 3
bài 5:dùng ma trận pascal,đưa ra màn hình vector hệ số của khai triển nhị thức newton
bài 6: tính vector hệ số của đa thức nội suy bậc 5 bằng cách sử dụng ma trận Vandermomde
Bài 7: hệ số của tổng ,tich,thương và phần dư phép chia cho 2 tương ứng p,q,s
=================
A – M- file
1. Cài đặt hàm tính vecto hệ số của đa thức nội suy Newton tiến bậc n-1xuất phát từ x1:
% tinh newton
function A=newton(x,y)
m=length(x);
n=length(y);
if(m~=n)
disp('??? error using newton');
disp('length x,y must be equal');
A=NaN;
else
B=zeros(m,m);
B(:,1)=y;
for j=2:m
for i=1:m-j+1
B(i,j)=(B(i+1,j-1)-B(i,j-1));
B(i,j)=B(i,j)/(x(i+j-1)-x(i));
end
end
A=B(1,:);
end
2. Cài đặt hàm tính xấp xỉ giá trị đa thức nội suy P(x) bậc n-1 tại xx=(xx1,xx2…xxn) bằng Lagrange.
function V = Lagrange(x,y,xx)
n = length(x);
l = length(y);
m = length(xx);
if n~= l
disp('ERROR');
V = NaN;
else
T = 1;
M = 1;
for i = 1:m
for e = 1:n
for k = 1:n
T = T*(xx(i) - x(k));
for t=1:n
M = M*(x(k) - x(t));
end
end
V(i) = V(i) + y(e)*(T/M);
end
end
end
end
3. Tính hệ số a,b ,c của quan hệ y= ax2+bx+c theo phương pháp bình phương tối thiểu – p = Parabolfit(x, y)
%xap xi ham bac 2 bang phuong phap binh phuong toi thieu
function p = parabolfit(x, y)
plot(x,y,'*');
axis auto;
hold on; grid on;
a11=sum(x.^4); a12=sum(x.^3); a13=sum(x.*x); a14=sum(x);
n=length(x);
b1=sum(x.*x.*y); b2=sum(x.*y); b3=sum(y);
X=[a11 a12 a13; a12 a13 a14; a13 a14 n];
Y=[b1; b2; b3];
sol=X\Y;
a = sol(1) ; b = sol(2); c = sol(3);
p = [a, b, c];
x0 = -2:0.1:2;
y0 = a*(x0.^2) + b*x0 + c;
plot(x0, y0, 'r');
hold off;
xlabel('X-Axis'); ylabel('Y-Axis');
title('Parabol');
end
4. Tính hệ số a, b ,c của quan hệ y= a+bcosx+csinx theo phương pháp bình phương tối thiểu – S = sincosfit(x, y)
function S= sincosfit(x,y)
n=length(x);
m=length(y);
if(n~=m)
disp(' Có loi');
disp(' Yêu cau 2 vector cùng co!!!');
else
A=[sum(x.*x) sum(x.*cos(x)) sum(x.*sin(x));
sum(x.*cos(x)) sum(cos(x).*cos(x)) sum(sin(x).*cos(x));
sum(x.*sin(x)) sum(sin(x).*cos(x)) sum(sin(x).*sin(x))];
B=[sum(x.*y) sum(cos(x).*y) sum(sin(x).*y)]';
S=A\B;
end
5. Tính hệ số a và b của quan hệ hàm y=ae^bx – [a,b] = ExpFit(x, y)
function [a,b]=ExpFit(x,y)
n=length(x);
if length(y)~=n
disp('error using ==> ExpFit');
disp('x,y must be the some size');
a=NaN*one(n,1);
else
Y=log(y);
a11=sum(x.*x);
a12=sum(x);
b1=sum(x.*Y);
b2=sum(Y);
A=[a11 a12;a12 n];B=[b1;b2];
C=A\B;
b=C(1,1);
a=exp(C(2,1));
end
B – Hàm nội trú
Bài 1:tìm xấp xỉ các hệ số của đa thức P(x) bậc 3 tại X = 1:0.2:3
>> x=[1 1.5 2 2.5 3 3.5];
>> y=[1.2341 3.9242 2.4563 -0.2224 -1.3215 0.5506];
>> p=polyfit(x,y,3)//tính hệ số của đa thức xấp xỉ hàm
p =
3.2605 -22.1954 44.9958 -24.7762
>> X=[1:0.2:3];
>> Y=polyval(p,X) // tính giá trị của đa thức có hệ số p
Bài 2:tính tương tự bài 1
bài 3: tính xấp xỉ hàm bằng phương pháp spline bậc 3
>> x=[1 1.5 2 2.5 3 3.5];
>> y=[-2.95001 -2.90250 -1.00020 2.75754 8.37002 15.83752];
>> xx=[1:0,1:3];
>> yy=spline(x,y,xx)
yy =
-2.9500 -1.0002 8.3700
Bài 4: tương tự bài 3 với xx=[1.25]
bài 5:dùng ma trận pascal,đưa ra màn hình vector hệ số của khai triển nhị thức newton
>> A=pascal(10);
>> B=A(10,:)
bài 6: tính vector hệ số của đa thức nội suy bậc 5 bằng cách sử dụng ma trận Vandermomde
>> x=[1 1.5 2 2.5 3 3.5];
>> y=[-1.3065;-1.12320;-1.00020;2.75754;8.37002;15.83752];
>> p=vander(x)\y
p =
1.9348
-22.9975
105.4485
-227.3483
229.1974
-87.5413
Bài 7: hệ số của tổng ,tich,thương và phần dư phép chia cho 2 tương ứng p,q,s
>> a=[5 12 0 -4 3 0 0 0 -5 0 -10];
>> b=[0 0 -3 8 0 6 2 3 0 -11 -2];
>> p=a+b
p =
5 12 -3 4 3 6 2 3 -5 -11 -12
>> tich=conv(a,b)
tich =
0 0 -15 4 96 42 41 63 12 -45 -133 -55 74 -135 -16 -75 -20 25
10 110 20
>> [q,r]=deconv(a,b)
Bạn đang đọc truyện trên: AzTruyen.Top