////---------------------------------------------------
////
//// Resolution du Laplacien 1 D en differences finies.
////
////---------------------------------------------------
//// -u"=f sur [a,b]
//// condition de Dirichlet en a: u(a)=alpha u(b)=beta.
//// condition de Neumann en b: u'(b)=g
//// Auteur : V. Martin
//=====================================================

choix=1
//===========================
// Parametres physiques
a = 0;                           // taille du domaine
b = %pi;
alpha = 0;                       // conditions de Dirichlet
beta = 0;
deff('y=f(x)','y=sin(x)')
deff('y=solex(x)','y=sin(x)')
g=1.

//===========================
// Parametres numeriques
n = 500                         // nb de points de discretisation
h = (b-a)/(n+1)

//===========================
// Maillage
x = linspace(a,b,n+2)

//===========================
// Assemblage de la matrice
e0 = ones(n+1,1)
e1 = ones(n,1)
A = 2*diag(sparse(e0),0)-diag(sparse(e1),-1)-diag(sparse(e1),1)
A = A/h/h
if choix==1 then
    A(1,1)=-1/h
    A(1,2)=1/h
end
if choix==2 then
    A(1,1:3)=[-3/2/h,2/h,-1/2/h]
end
//===========================
// Second membre
F = f(x(1:$-1))
F(1) = g
F(n+1) = F(n+1)+beta/h/h

//===========================
// Resolution
u = A\F'
u=[u;beta]

//===========================
// Visualisation
plot(x,u);
plot(x,solex(x),'r')

