Z4:
%%układy równań liniowych
A=[4 -2 0 %macierz układu
-2 2 -3
0 -3 -25]
b=[14 -11 28]' %wektor prawych stron
x1=A\b %rozwiązanie metodą eliminacji Gaussa
%z częściowym wyborem elementu głównego
x2=inv(A)*b %rozwiązanie metodą odwracania macierzy
------------
A=[4 -2 0; -2 2 -3; 0 -3 -25]
B=[14; -11; 28]
cond(A)
Z12:
x = [-1.5 -1 -0.5 0 0.5 1 1.5];
y = [120.3008 333.3333 761.9048 1000 761.9048 333.3333 120.3008];
[wsp,L] = lagranp(x,y); %wyznacza wielomian Lagrange'a
xmin = min(x);
xmax = max(x);
xx = linspace(xmin,xmax,100); %dziedzina doprecyzowana na potrzeby kreślenia wykresów wielomianów
yl = polyval(wsp,xx); %interpolacja do zadanych punktow
clf
subplot(3,1,1)
plot(xx,yl,'k-',x,y,'r*') %wykres wielomianu Lagrange'a
grid on
title('interpolacja metodą Lagrangea')
[cn,DD] = newtonp(x,y);
yn = polyval(cn,xx);
subplot(3,1,2)
plot(xx,yn,'k-',x,y,'r*') %wykres wielomianu Newtona
grid on
title('interpolacja metodą Newtona')
%porównanie wartości w węzłach interpolacji
y
ybl=polyval(wsp,x) %interpolacja do zadanych punktow dziedziny x
ybn=polyval(cn,x) %interpolacja do zadanych punktow dziedziny x
blad_lagr=ybl-y %wartość błędu
blad_newt=ybn-y %wartość błędu
subplot(3,1,3)
plot (x,blad_lagr,'k*-',x,blad_newt,'kx-')%wykres błędów
title ('* -błąd interp. Lagrange, + -błąd interp. Newtona')
Z13:
Interpolacja Lagrange'a - skrypt lagranp
function [wsp,L] = lagranp(x,y)
%dane wejsciowe: x = [x0,x1,...,xN], y = [y0,y1,...yN]
%dane wynikowe: wsp - wspolczynniki wielomianu Lagrange'a stopnia n
% L = wspolczynniki Lagrange'a
N = length(x) - 1;
wsp = 0;
for j=1:N+1
wmn = 1;
for i=1:N+1
if i ~= j, wmn = conv(wmn,[1 -x(i)])/(x(j) - x(i));
end
end
L(j,:) = wmn; %wspolczynniki wielomianowe Lagrange'a
wsp = wsp + y(j) * wmn; %wielomian Lagrange'a
end
Interpolacja Newtona - skrypt newtonp
function [cn,DD] = newtonp(x,y)
%gotowy algorytm z materiałów do wykładu- opracował Pan Andrzej Kosior PWR
%parametry wejsciowe: x=[x0,x1,...,xN]
%y=[y0,y1,...,yN]
%wyjscie cn = wspolczynniki wielomianu Newtona
N = length(x) - 1;
DD = zeros(N+1,N+1);
DD(1:N+1,1)=y';
%w pierwsza kolumne macierzy kwadratowej N+1xN+1
%podstaw wartosc y, apostrof oznacza transpozycje
for k=2:N+1
for m=1:N+2-k %tworzenie tablicy roznic dzielonych
DD(m,k) = (DD(m+1,k-1) - DD(m,k-1))/(x(m+k-1)-x(m));
end
end
r = DD(1,:);
cn = r(N+1);
for k=N:-1:1
cn = [cn r(k)] - [0 cn*x(k)];
%czyli cn(c)*(x-x(k-1))+r_k-1
end
Skrypt zadaniowy
x = [0.0 0.1 0.3 0.6 1.0];
y = [-6.0000 -5.89483 -5.65014 -5.17788 -4.28172];
[wsp,L] = lagranp(x,y); %wyznacza wielomian Lagrange'a
xmin = min(x);
xmax = max(x);
xx = linspace(xmin,xmax,100); %dziedzina doprecyzowana na potrzeby kreślenia wykresów wielomianów
yl = polyval(wsp,xx); %interpolacja do zadanych punktow
clf
subplot(3,1,1)
plot(xx,yl,'k-',x,y,'r*') %wykres wielomianu Lagrange'a
grid on
title('interpolacja metodą Lagrangea')
[cn,DD] = newtonp(x,y);
yn = polyval(cn,xx);
subplot(3,1,2)
plot(xx,yn,'k-',x,y,'r*') %wykres wielomianu Newtona
grid on
title('interpolacja metodą Newtona')
%porównanie wartości w węzłach interpolacji
y
ybl=polyval(wsp,x) %interpolacja do zadanych punktow dziedziny x
ybn=polyval(cn,x) %interpolacja do zadanych punktow dziedziny x
blad_lagr=ybl-y %wartość błędu
blad_newt=ybn-y %wartość błędu
subplot(3,1,3)
plot (x,blad_lagr,'k*-',x,blad_newt,'kx-')%wykres błędów
title ('* -błąd interp. Lagrange, + -błąd interp. Newtona')
Z29a
x = [0, 7, 15, 21, 35, 49, 64, 70];
y = [99.48, 83.93, 66.02, 56.83, 45.60, 32.46, 21.76, 19.11]
y = log(y);
c = polyfit(x, y, 1);
plot(x, exp(y), 'pr', x, exp(c(2))*exp(c(1)*x), 'g')
xlabel('X');
ylabel('Y');
grid on
%
% y1 = exp(c(2))*exp(c(1)*x)
%
% y2 = abs(y - y1)
% max(y2)
% 100* max(y2)/56.83
%
% %J = sum(y2)
Z83
clc;
clear all;
h=1;
t=0:h:3;
x=zeros(1,length(t));
t(0)=0;
F_xy=(d.^2*x(t)/dt)-2*(dx(t)/dt+10*x(t)-2*sin(2*t*e.^(-t))
for i=1:(length(x)-1)
k_1 = F_xy(x(i),y(i));
k_2 = F_xy(x(i)+0.5*h,y(i)+0.5*h*k_1);
k_3 = F_xy((x(i)+0.5*h),(y(i)+0.5*h*k_2));
k_4 = F_xy((x(i)+h),(y(i)+k_3*h));
y(i+1) = y(i) + (1/6)*(k_1+2*k_2+2*k_3+k_4)*h;
end