Bonjour,

Je cherche à résoudre l'équation de KDV avec la méthode des différences fini. J'ai de la difficulté à comprendre comment je fais pour faire respecté mes condifions frontière, si quelqu'un pouvait m'aider à faire ça cela serait déjà géniale !

En lisant un peu sur le sujet je me suis mit à essayer le code suivant, mais ce dernier diverge ;(, et j'ai l'impression que mon problème provient des condition frontière :

Code:
function KDV()

% Variables de base et discrétisation de l'espace et du temps

nx=100;
nt=100;
u=zeros(nx,nt);
dux=zeros(nx,nt);
ddux=zeros(nx,nt);
dddux=zeros(nx,nt);
dut=zeros(nx,nt);

L=1/2;
T=1/2;

x=linspace(-L,L,nx);
t=linspace(-T,T,nt);

dx=2*L/nx;
dt=2*T/nt;

a=0;
b=0.022;

%condition initiale

u(:,1)=((sin(L*x./pi)))';

%Résolution de l'équation discrétisée et conditions frontieres

for n=1:nt-1
    for j=2:nx-2
                 
        dux(j,n)=(u(j+1,n)-u(j-1,n))/(2*dx);
        ddux(j,n)=(u(j+1,n)-2*u(j,n)+u(j-1,n))/(dx^2);
        dddux(j,n)=(u(j+2,n)-3*u(j+1,n)+3*u(j,n)-u(j-1,n))/(dx^3);
        dut(j,n)=(u(j,n+1)-u(j,n))/dt;
        
        u(1,n)=0;
        u(nx,n)=0;    %  conditions frontieres expérimentales    mais j'ai l'impression que c'est la que ca chie ! 
        dux(1,n)=0;   
        
        u(j,n+1)=-dt*(dux(j,n)+a*u(j,n)*dux(j,n)+b*dddux(j,n))+u(j,n);        
        
    end
end

%Mise en graphique

mesh(x,t,u)