Matlab a vba

Fermé
Viet - 8 sept. 2011 à 14:32
Bonjour,


Je dois traduire un code matlab en vba, simplement je n'y arrive pas, je ne connais pas du tout matlab et je ne suis pas sur de traduire le code de la bonne façon

le code matlab est le suivant:
> j=0;
> k=0;
> TOL_SUM=1e-200;
> utot=ones(length(x),1);
> ustep=utot;
> tobechanged=sum(ustep>TOL_SUM)
> ;
> while(tobechanged)
> uyold=ustep;
> while(tobechanged)
> k=k+1;
> ustep=ustep.*(a+j+k-1).*(b2+k-1).*y./((c+j+k-1).*k);
> tobechanged=sum(ustep>TOL_SUM);
> utot=utot+ustep;
> end
> j=j+1;
> k=0;
> ustep=uyold.*(a+j-1).*(b1+j-1).*x./((c+j-1).*j);
> tobechanged=sum(ustep>TOL_SUM);
> utot=utot+ustep;
> end



Ce que j'ai fait en VBA mais qui ne marche pas (probleme de boucle infini il me semble), il se peut que mon code vba n'ai rien a voir avec l'initiale, je suis vraiment pas très doué en programation a la base:



Function F1(a As Double, b1 As Double, b2 As Double, c As Double, x As Double, y As Double)
Dim i As Integer

Dim j As Integer
Dim k As Integer
Dim tol_sum As Variant
Dim utot() As Variant
Dim upstep() As Variant
Dim tobechanged As Variant
Dim uyold() As Variant

j = 0
k = 0
tol_sum = Exp(-200)

ReDim utot(x, 1)

For i = 1 To x
utot(i, 1) = 1
Next i



ustep = utot
tobechanged = 0

For i = 1 To x
If ustep(i, 1) > tol_sum Then tobechanged = tobechanged + 1
Next i

While Not tobechanged = 0
uyold = ustep
While Not tobechanged = 0
k = k + 1
For i = 1 To x
ustep(i, 1) = ustep(i, 1) * (a + j + k - 1) * (b2 + k - 1) * y / ((c + j + k - 1) * k)
Next i
tobechanged = 0
For i = 1 To x
If ustep(i, 1) > tol_sum Then tobechanged = tobechanged + 1
Next i
For i = 1 To x
utot(i, 1) = utot(i, 1) + ustep(i, 1)
Next i
Wend
j = j + 1
k = 0
For i = 1 To x
ustep(i, 1) = uyold(i, 1) * (a + j - 1) * (b1 + j - 1) * x / ((c + j - 1) * j)
Next i
tobechanged = 0
For i = 1 To x
If ustep(i, 1) > tol_sum Then tobechanged = tobechanged + 1
Next i
For i = 1 To x
utot(i, 1) = utot(i, 1) + ustep(i, 1)
Next i

Wend

For i = 1 To x
Sheets("Feuil1").Cells(i, 1) = uyold(i, 1)
Next i



End Function


Si quelqu'un peut m'aider ça m'aiderais vraiment beaucoup.
Merci