Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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;
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
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
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;
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
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