bonjour à vous
Besoin d'aide
je suis un débutant sur matlab et la je dois programmer la méthode de la descente rapide appliquée à une poutre rectiligne.
Voila le code que j'obtiens mais sa ne passe pas pour je ne sais quelles raisons.
j'espère que je m'y prend bien en publiant comme cela.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
clear all;
close all;
clc;
%////////////////// données///////////////////////////
N=120;
K=3;
s= 10^(-9);
imax=300;
%//////////////////Initialisation//////////////////////
err=1;
bk=1;
bl=bk;
delta=0.1;
h=1/N;
%////////////////Maillage///////////////////////////
for i=1:N-1
    x(i)=i*h;
end
%///////////////////saisie de F //////////////////////////
for i=1:N-1
    F(i,1)=3;
end
%/////////////////Saisie de D////////////////////////////
P=-diag(2*ones(N-1,1)) + diag(ones(N-2,1),1) + diag(ones(N-2,1),-1);
D= N*N*P;
%C=inv(B);
E=inv(D);
%G=C*E;
L=E*F;
for k=1:3
     a=(k-1)/K;
       b=(k)/K;
    for n=1:N-1
      if (a< x(n)) && (x(n)<b)
     while(err<s && i<imax)
         %////////////////// Calcul du gradient////////////////////
         m=bk^(-1)*L(n)*L(n);
          bk = bk-delta*m
          %//////////////////Calcul de l'erreur////////////////////
          err=norm(bk-bl);
          %////////////////////l'itération//////////////////////////
          bl=bk;
        %//////////////////// nombre d'itération///////////////////
          i=i+1;
          %///////////////Affichage du nombre d'itération//////////
          disp(i);
 
     end
      end
    end
end