Wielomian interpolacyjny metoda Lagrangea
clear
clc
hold on
grid
a=0
b=6
%axis([a,b,a,b])
f=inline('2*sin(pi/6*x)')
x=[0,1,3,6]
y=f(x)
plot(x,y,'ro')
x2=a:0.1:b;
y2=f(x2);
plot(x2,y2,'g-') %rysuje f-cje
yw=Lagrange(x2)
%n=length(x) %długość wektora, dłuższy wymiar macierzy
%w=polyfit(x,y,n-1) %wyznacza węzły interpolacji
%yw=polyval(w,x2) %oblicza wartość wielomianu W dla podanego argumentu
plot(x2,yw,'r-') %rysuje wielomian interpolacyjny
p=input('Podaj p= ') %wprowadzanie zmiennych z klawiatury
%yp=polyval(w,p)
yp=Lagrange(x,y,p)
disp('Wartość wielomianu dla podanego argumentu wynosi ')
disp(yp)
Wielomian interpolacyjny:
clc
clear
grid;
a=-1; b=1;
n=3; %3,5,11,15 %liczba węzłów
f=inline('abs(x)');
%WĘZŁY RÓWNOODLEGŁE:
x=a:(b-a)/(n-1):b %węzły
y=f(x)
wr = polyfit(x,y,n-1) %wyzn. współcz. wiel. interp.
xrys = a:0.01:b;
yrysR = polyval(wr,xrys); %obl. wart. wiel.
%WĘZŁY CZEBYSZEWA:
for k=0:1:n-1
c(k+1)=(b-a)/2*cos((2*k+1)/(2*n)*pi)+(a+b)/2
end
yc=f(c)
wc = polyfit(c,yc,n-1) %wyzn. współcz. wiel. interp.
yrysC = polyval(wc,xrys); %obl. wart. wiel.
plot(xrys,f(xrys),'r-',x,y,'go',xrys,yrysR,'g-',c,yc,'bo',xrys,yrysC,'b-')
p=0.95;
disp(['wartosci dla argumentu =', num2str(p)])
disp(['f(x)=', num2str(f(p))])
disp(['wr(x)=',num2str(polyval(wr,p))])
disp(['wc(x)=',num2str(polyval(wc,p))])
Całki (metoda trapezów I Simsona)
clc;
a=pi; %poczatek przed calkowania
b=2*pi; %koniec przed calkowania
f=inline('sin(x)./x'); %nasza funkcja
T=(b-a)/2*(f(a)+f(b)); %met trapezow
S=(b-a)/6*(f(a)+4*f((a+b)/2)+f(b)); %met simsona
disp(['Wartosc calki wynosi'])
disp(['dla metody trapezow prostej: ', num2str(T)])
disp(['dla metody Simsona prostej: ', num2str(S)])
m=3; %liczba czesci
h=(b-a)/m; %dlugosc przedzialu
sum=0;
for i=1:1:m-1; %petla obliczajaca wartosc w punktach pomiedzy a,b
sum=sum+f(a+i*h);
end;
Tz=h/2*(f(a)+f(b)+2*sum); %wzor na met zlozona simsona
disp(['dla metody trapezow zlozonej z ', num2str(m), ' czesci: ', num2str(Tz)])
sum1=0;
for i=1:1:m-1; %petla obliczajaca wartosc w punktach pomiedzy a,b
sum1=sum1+f(a+i*h);
end;
sum2=0;
for i=1:1:m; %petla obliczajaca wartosc w punktach pomiedzy a,b
sum1=sum1+f(a+i*h);
end;
Równania nieliniowe:
clc;
format long;
f=inline('cos(x)-2*x');
a=0;
b=1;
k=0;
maxn=100;
eps=1e-5;
ezplot(f,[-10,10])
grid;
if f(a)*f(b)>0;
disp(['Blad - funkcja f nie ma pierwiastów na tym przedziale']);
return %lub break
end;
while k<maxn && abs(b-a)>=eps;
k=k+1;
x=(a+b)/2;
if f(a)*f(x)<=0;
b=x;
else a=x;
end;
disp(['Pierwiastkiem tej funkcji dla k=', Num2Str(k) ' jest liczba ']);
x
end;
Euler:
clc;
clear;
rd=inline('exp(3/2*t^2)')
hold on;
grid;
ezplot(rd,[0,1.5,0,40]);
plot(0,1,'ro');
f=inline('3*t*y');
a=0;
b=1.5;
y(1)=1
n=10;
h=(b-a)/n;
t=a:h:b;
for i=2:1:length(t);
K1=h*f(t(i-1),y(i-1))
K2=h*f(t(i-1)+h/2,y(i-1)+K1/2)
K3=h*f(t(i-1)+h/2,y(i-1)+K2/2)
K4=h*f(t(i-1)+h,y(i-1)+K3)
y(i)=y(i-1)+(K1+2*K2+2*K3+K4)/6
plot(t(i),y(i),'ro');
end;
Trapez złożony, Simson złożony:
clc;
a=pi; %poczatek przed calkowania
b=2*pi; %koniec przed calkowania
f=inline('1/sqrt(x.^3-1)'); %nasza funkcja
T=(b-a)/2*(f(a)+f(b)); %met trapezow
S=(b-a)/6*(f(a)+4*f((a+b)/2)+f(b)); %met simsona
disp(['Wartosc calki wynosi'])
disp(['dla metody trapezow prostej: ', num2str(T)])
disp(['dla metody Simsona prostej: ', num2str(S)])
m=32; %liczba czesci
h=(b-a)/m; %dlugosc przedzialu
sum=0;
for i=1:1:m-1; %petla obliczajaca wartosc w punktach pomiedzy a,b
sum=sum+f(a+i*h);
end;
Tz=h/2*(f(a)+f(b)+2*sum); %wzor na met zlozona simsona
disp(['dla metody trapezow zlozonej z ', num2str(m), ' czesci: ', num2str(Tz)])
sum1=0;
for i=1:1:m-1;
sum1=sum1+f(a+i*h);
end;
sum2=0;
for i=1:1:m;
sum2=sum2+f(a+(i-0.5)*h);
end;
Sz=h/6*(f(a)+f(b)+2*sum1+4*sum2);
disp(['dla metody simsona zlozonej z ', num2str(m), ' czesci: ', num2str(Sz)])