Sei sulla pagina 1di 7

function Euler

clear t
clear y
a=0;
b=2;
N=10;
y0=0.5;
h=(b-a)/N;
t(1)=a;
y(1)=y0;

f=@(t, y) 1-t^2+y;

for n=1:N
t(n+1)=t(n)+h;
y(n+1)=y(n)+h*f(t(n),y(n));
fprintf('%d %d\n', t(n+1),y(n+1))
end

plot(t,y)
title(['Euler Method using N=',num2str(N),' steps'])
function ModifiedEuler
%model: dN/dt = r*(1-N/k)*N
a = 0;
b = 200;
r = 0.05;
k = 2;

F = @(N, t) r*(1 - N/k)*N;

n = 100;
h = (b - a)/n;
N(1) = 0.5;
t(1) = a;

for i=1:n
N(i+1) = N(i) + h*F(N(i),t(i));
t(i+1) = a + i*h;
N(i+1) = N(i) + 0.5*h*(F(N(i+1), t(i+1)) +
F(N(i),t(i))) ;
fprintf('%d %d\n', t(i+1),N(i+1))
end

plot(t, N)
function RungeKuttaMethod

%y' = y - t^2 + 1.
a = 0;
b = 2;
N = 10;
t = zeros(1, N);
w = zeros(1, N);
w(1) = 0.5;
h = (b - a)/N;
t(1) = a;

F = @(t, y) y - t^2 + 1;

for i = 1:(N-1)

K1 = h*(F(t(i), w(i)));
K2 = h*(F(t(i) + 0.5*h, w(i) + 0.5*K1));
K3 = h*(F(t(i) + 0.5*h, w(i) + 0.5*K2));
K4 = h*(F(t(i) + h, w(i) + K3));
w(i+1) = w(i) + (K1 + 2*K2 + 2*K3 + K4)/6;
t(i+1) = a + i*h;
fprintf('%d %d\n', t(i+1),w(i+1))
end

%Fa = (t+1).^2 -0.5*exp(t); %actualy solution we ca use


to compare between both methods%
plot(t, w)
%hold on %use these 3 lines to see both
solutions plotted on
%plot(t, Fa, 'r') %same graph for comparison.
%hold off

end
l = 1;
T = 2;
alpha = 1;
m = 10;
N = 50;

h = .1;
k = .01;
lambda = 1;

for i = 1:m
w(i) = sin(pi*i*h);
end

l(1) = 1 + lambda;
u(1) = -lambda/(2*l(1));

for i = 2:m-2
l(i) = 1 + lambda + lambda*(u(i-1))/2;
u(i) = - lambda/(2*l(i));
end

l(m-1) = 1 + lambda + lambda*u(m-2)/2;

for j=1:N
t = j*k
z(1) = [(1-lambda)*w(1) + (lambda/2)*w(2)]/l(1);
for i = 2:m-1
z(i) = [(1-lambda)*w(i) + (lambda/2)*(w(i+1) +
w(i-1)+z(i-1))]/l(i);
end
w(m-1) = z(m-1);
for i = m-2:-1:1
w(i) = z(i) - u(i)*w(i+1);
end

for i =1:m-1
x = i*h
fprintf('%d %d',x,w(i))
end
end

a1 = 1;
b1 = 2;
alpha = 1;
beta = 2;
N = 4;

p=@(x) -2/x;
q=@(x) 2/(x^2);
r=@(x) sin(log(x))/x^2;

h = (b1 - a1)/(N + 1);


x = a1 + h;
a(1) = 2 + (h^2)*q(x);
b(1) = -1 + (h/2)*p(x);
d(1) = -h^2*r(x) + (1 + (h/2)*p(x))*alpha;

for i = 2: N-1
%disp(x)
x = a1 + i*h;

a(i) = 2 + (h^2)*(q(x));
b(i) = -1 + (h/2)*p(x);
c(i) = -1 - (h/2)*p(x);
d(i) = -h^2*r(x);
end

x = b1 - h;
a(N) = 2 + h^2*q(x);
c(N) = -1 - (h/2)*p(x);
d(N) = -h^2*r(x) + (1 - (h/2)*p(x))*beta;

l(1) = a(1);
u(1) = b(1)/a(1);
z(1) = d(1)/l(1);

for i = 2:N-1
l(i) = a(i) - c(i)*u(i-1);
u(i) = b(i)/l(i);
z(i) = (d(i) - c(i)*z(i-1))/l(i);
end

l(N) = a(N) - c(N)*u(N-1);


z(N) = (d(N) - c(N)*z(N-1))/l(N);

w(1) = alpha;
w(N+1) = beta;
w(N) = z(N);

for i = N-1:-1:1
w(i) = z(i) - u(i)*w(i+1);
end

for i = 1:N + 1
x = a1 + i*h;
fprintf(' values %d %d ',x, w(i));
end

Potrebbero piacerti anche