Dim x(50), y(50), a(9), b(9), a1(9), b1(9), d(9), v(2, 3), xy(9), vm(2, 3) Dim vc(2, 3), lo(2, 3), lxy(9), r$(9) Dim i, c%, j, k, l$, titre$, n, bidon, f$, l, m, xx, yy Data "A+B*X","A*B**X","1/(A+B*X)","A+B*LOG(X)","A*X**B" Data "1/(A+B*LOG(X))","A+B/X","A*B**(1/X)","X/(A+B*X)" For i = 1 To 9 Read r$(i) Next i Erase x(), y(), lxy(), lo() choix: Cls Print AT(30, 1); "CURFIT" Print AT(30, 6); "Type d'entr‚e des donn‚es " Print AT(30, 9); "1 Clavier" Print AT(30, 11); "2 Data" Print AT(30, 13); "3 Fichier" Print AT(30, 19); "votre choix "; Input c% Cls Select c% Case 1 ' Les entr‚es se font au clavier Print AT(24, 5); " Entr‚e des donn‚es au clavier"; AT(1, 8) Line Input "Titre : ";titre$ Print Input "Nombre d'observations : ";n Dim x(n), y(n), lxy(9), lo(2, 3) Print Print "Abcisses : "; Line Input l$ j = 1 l$ = l$ + "," For i = 1 To n k = InStr(l$, ",", j) x(i) = Val(Mid$(l$, j, k - j)) j = k + 1 Next i Print Print "Ordonn‚es : "; Line Input l$ j = 1 l$ = l$ + "," For i = 1 To n k = InStr(l$, ",", j) y(i) = Val(Mid$(l$, j, k - j)) j = k + 1 Next i Case 2 ' Les entr‚es se font par DATA ' Titre Data Facturation Internet le 9 ' Nombre d'observations Data 12 Data 24.533,0.345,0.340 Data 16.033,0.260,0.264 Data 35.950,0.460,0.443 Data 7.850,0.179,0.190 Data 0.583,0.106,0.126 Data 16.867,0.269,0.271 Data 6.950,0.170,0.182 Data 0.333,0.103,0.123 Data 18.250,0.283,0.283 Data 10.583,0.206,0.215 Data 14.800,0.248,0.252 Data 7.333,0.173,0.185 Read titre$, n Dim x(n), y(n), lxy(9), lo(2, 3) For i = 1 To n Read x(i), bidon, y(i) Next i '##E# Case 3 ' Les entr‚es se font par fichier texte ' Structure du fichier : ' ' Titre ' Nombre d'observations ' Abcisses ' Ordonn‚es ' FileSelect "\*.crf", "", f$ If f$ = "" Or f$ = "\" GoTo choix EndIf Open f$ for Input As # 2 Line Input # 2, titre$ Input # 2, n Dim x(n), y(n), lxy(9), lo(2, 3) For i = 1 To n Input # 2, x(i) Next i For i = 1 To n Input # 2, y(i) Next i Default GoTo choix EndSelect ' v(1,*)= f(x) v(2,*)=y v(*,1)=x ou y v(*,2)=log(x ou y) v(*,3)=1/( x ou y) For i = 1 To n v(1, 1) = x(i) v(2, 1) = y(i) If lo(1, 2) = 0 If x(i) <= 0 lo(1, 2) = 1 Rem Calcul impossible Else v(1, 2) = Log(x(i)) EndIf EndIf If lo(1, 3) = 0 If x(i) = 0 lo(1, 3) = 1 Rem Calcul impossible Else v(1, 3) = 1 / x(i) EndIf EndIf If lo(2, 2) = 0 If y(i) <= 0 lo(2, 2) = 1 Rem Calcul impossible Else v(2, 2) = Log(y(i)) EndIf EndIf If lo(2, 3) = 0 If y(i) = 0 lo(2, 3) = 1 Rem Calcul impossible Else v(2, 3) = 1 / y(i) EndIf EndIf k = 0 For l = 1 To 3 For m = 1 To 2 vm(m, l) = vm(m, l) + v(m, l) Rem Somme vc(m, l) = vc(m, l) + v(m, l) ^ 2 Rem Somme des carr‚s Next m For j = 1 To 3 k = k + 1 lxy(k) = lo(1, l) + lo(2, j) - lo(1, l) * lo(2, j) Rem Calcul possible ? If lxy(k) = 0 xy(k) = xy(k) + v(1, l) * v(2, j) Rem Somme des produits EndIf Next j Next l Next i k = 0 For i = 1 To 3 For m = 1 To 2 If lo(m, i) = 0 vc(m, i) = vc(m, i) - vm(m, i) ^ 2 / n EndIf Next m For j = 1 To 3 k = k + 1 If lxy(k) = 0 xy(k) = xy(k) - vm(1, i) * vm(2, j) / n EndIf Next j Next i k = 0 For i = 1 To 3 For j = 1 To 3 k = k + 1 If lxy(k) = 0 b(k) = xy(k) / vc(1, i) a(k) = (vm(2, j) - vm(1, i) * b(k)) / n d(k) = b(k) * xy(k) / vc(2, j) EndIf Next j Next i For i = 1 To 9 a1(i) = a(i) b1(i) = b(i) Next i For i = 2 To 8 Step 3 a1(i) = Exp(a(i)) b1(i) = Exp(b(i)) Next i b1(5) = b(5) b1(9) = a(9) a1(9) = b(9) Print Tab((80 - Len(titre$)) / 2); titre$ Print Print " LISSAGE SUIVANT 9 COURBES DIFFERENTES" Print Print "NO", "FONCTION", "A", " B", " D" For i = 1 To 9 If lxy(i) = 1 Print Using("## Y=\............\ CALCUL IMPOSSIBLE", i, r$(i)) Else Print i, r$(i), a1(i), b1(i), d(i) EndIf Next i Do Print Repeat Input "DETAIL POUR FONCTION NO : ( 0 pour finir) ? ", l Until l >= 0 And l < 10 Exit If l = 0 Print "FONCTION Y="; r$(l) If lxy(l) = 1 Print " CALCUL IMPOSSIBLE" Else i = Int((l + 2) / 3) j = l - (i - 1) * 3 Print "X-REEL", "Y-REEL", "Y-CALC", " DIF", " DIF%" For k = 1 To n xx = x(k) Select i Case 2 xx = Log(xx) Case 3 xx = 1 / xx EndSelect yy = a(l) + xx * b(l) Select j Case 2 yy = Exp(yy) Case 3 yy = 1 / yy EndSelect Rem d = (y(k) - yy) Rem p = d * 100 / yy Print x(k), y(k), yy, y(k) - yy,(y(k) - yy) * 100 / yy Next k EndIf Loop