Wszystkie zadania skrypty

Wielomian interpolacyjny Lagrange'a dla punktów węzłowych

format short
clear all
x=input('Podaj wezly x=')
n=length(x);
y=input('Podaj wartosci w wezlach=')
m=length(y);
if n~=m
disp ('Blad danych')
return
end
x
y
%plot (x,y,'ro')
z=input('Podaj argument z=')
suma=0;
for i=1:n
ilo=1;
for j=1:n
if j~=i
ilo=ilo*(z-x(j))/(x(i)-x(j));
end
end
suma=suma+y(i)*ilo;
end
L=suma;
disp('Wartość wielomianu: ')
L

Wielomian interpolacyjny Lagrange'a dla funkcji

%Wielomian interpolacyjny Lagrange'a dla funkcji
format short
clear all
clc
x=input('Podaj wezly x=')
n=length(x);
disp('Podaj wzór funkcji, ujmując go w apostrofy')
wzor=input('f(x)=')
f=inline(wzor)
for i=1:n
y(i)=f(x(i));
end
x
y
plot (x,y,'ro')
z=input('Podaj argument z=')
suma=0;
for i=1:n
ilo=1;
for j=1:n
if j~=i
ilo=ilo*(z-x(j))/(x(i)-x(j));
end
end
suma=suma+y(i)*ilo;
end
L=suma;
clc
disp('Wartość wielomianu: ')
L

Metoda Newtona rozwiazywania rownan nieliniowych

%Metoda Newtona rozwiazywania rownan nieliniowych
clear all
disp('Podaj wzor funkcji, ujmujac go w apostrofy')
wzor=input('f(x)=')
f=inline(wzor)
wzor=char(diff(sym(wzor),1))
fp=inline(wzor)
disp('Podaj przyblizenie poczatkowe x0')
x0=input('x0=')
if fp(x0)==0
disp('Zle przyblizenie poczatkowe')
return
end
n=input('Podaj maksymalna liczbe krokow n=')
eps=input('Podaj dokladnosc rozwiazania eps=')
format long
disp (['x0=',num2str(x0,14)])
k=1;
x1=x0-(f(x0)/fp(x0));
disp (['x1=',num2str(x0,14)])
while k<=n & abs((f(x1)/f(x1)))>=eps
k=k+1;
x0=x1;
x1=x0-(f(x0)/fp(x0));
disp(['x',int2str(k),'=',num2str(x1,14)])
end
disp('----------WYNIKI----------')
disp(['Przyblizenie wartosci miejsca zerowego=',num2str(x1,14)])
disp(['Wartosc funkcji f dla wyznaczonego argumentu=',num2str(f(x1),14)])

Oszacowanie błędu interpolacji

% Oszacowanie bledu interpolacji
clear all
x0=-1;
x1=2;
x2=4;
n=3;
wzor='sin(x)/x';
f=inline(wzor);
% Obliczamy pochodną
wzor=diff(sym(wzor),3);
wzor=strcat('-abs(',char(wzor),')');
mf3=inline(wzor);
xmax=fminbnd(mf3,x0,x2);
M3=abs(mf3(xmax));
format long
disp('Stala M3')
M3
x=1;
dokl=M3*abs((x-x0)*(x-x1)*(x-x2))/6;
disp('Oszacowanie dokladnosci=')
dokl

Narysowanie wykresu wielomianu int.Lagr. oraz punktow wezlowych i funkcji

%Narysowanie wykresu wielomianu int.Lagr. oraz punktow wezlowych i funkcji
format short
clear all
clc
x=input('Podaj wezly x=')
n=length(x);
disp('Podaj wzór funkcji, ujmując go w apostrofy')
wzor=input('f(x)=')
f=inline(wzor)
for i=1:n
y(i)=f(x(i));
end
x
y
minx=min(x);
maxx=max(x);
krok=(maxx-minx)/1000;
z=minx:krok:maxx;
suma=0;
for i=1:n
ilo=1;
for j=1:n
if j~=i
ilo=ilo.*(z-x(j))./(x(i)-x(j));
end
end
suma=suma+y(i)*ilo;
end
L=suma;
plot(x,y,'ro')
hold on
plot(z,L,'--')
ezplot(f,[minx-1,maxx+1])

Metoda trapezów złożona

%Metoda trapezow zlozona
clc;
clear all;
format long;
a=1;
b=3;
n=100;
wzor='exp(x)*sin(x)+2';
f=inline(wzor);
h=(b-a)/n;
S=0;
for i=1:1:n-1;
S=S+f(a+i*h);
end
wynik=(h/2)*(f(a)+(2*S)+f(b));
disp('Wynik=')
wynik

Metoda trapezów prosta

%Metoda trapezow
clc;
clear all;
format long;
a=1;
b=3;
wzor='exp(x)*sin(x)+2';
f=inline(wzor);
wynik=((b-a)/2)*(f(a)+f(b));
disp('Wynik=')
wynik

Metoda simpshona

%Metoda Simphsona
clc;
clear all;
format long;
a=3;
b=5;
wzor='log(2*x+3)*(sqrt(x^2+4))';
f=inline(wzor);
wynik=((b-a)/6)*(f(a)+(4*f((a+b)/2))+f(b));
disp('Wynik=')
wynik

Metoda Eulera

%Metoda Eulera
clear all
disp('Podaj wzor funkcji ujmujac go w apostrofach (jezeli y nie wystepuje "+0*y")')
wzor=input('f(x,y)=')
f=inline(wzor)
a=input('Podaj dolny przedzial a=');
b=input('Podaj gorny przedzial b=');
h=input('Podaj parametr h=');
n=(b-a)/h
x(1)=a;
y(1)=input('Podaj poczatkowa wartosc y0=');
for i=2:n+1
y(i)=y(i-1)+h*f(x(i-1),y(i-1))
x(i)=x(1)+(i-1)*h
end

Metoda rungego-kutty

FI

%funkcja fi z metody Rungego-Kutty IV rz
function c=fi(x,y,h)
k1=fE(x, y);
k2=fE(x+0.5*h, y+0.5*h*k1);
k3=fE(x+0.5*h, y+0.5*h*k2);
k4=fE(x+h, y+h*k3);
c=(1/6)*(k1+2*k2+2*k3+k4);
end

Metoda

%metoda Rungeo-Kutty IV rzedu
clear x y x0 y0 h m
x0=1;
y0=-1;
h=0.1;
xk=2;
x=x0:h:xk;
m=size(x,2);
y(1)=y0;
m=m-1;
for i =1:m
y(i+1)=y(i)+h*fi(x(i), y(i), h);
end
y
%metoda dokładna
clear xd yd
xd=x0:h:xk;
m=size(xd,2);
for i=1:m
yd(i)=(-1)/xd(i)^2;
end
yd
plot(x, y, '.', xd, yd, 'ro')

Metoda bisekcji

%metoda bisekcji
a=1;
b=4;
licznik=0;
while (abs(b-a)>1e-4&licznik<20)
licznik=licznik+1
przedzial=[a,b]
if f(a)*f((a+b)/2)<0,
b=(a+b)/2;
else
a=(a+b)/2;
end
end

Metoda regula falsi

F

function c=f(x)
c=x.^4-3*x-3;
end

DF

function c=df(x)
c=4*x.^3-3;
end

Metoda

%metoda regula falsi
x=1;
b=2;
x0=b;
licznik=0;
while (abs(x-x0)>1e-5&licznik<20)
x0=x;
licznik=licznik+1
x=x-f(x)*((b-x)/(f(b)-f(x)))
wart_f=f(x)
end


Wyszukiwarka