Académique Documents
Professionnel Documents
Culture Documents
Tabledesmatires
1Utilisationdulogicielgnuplot:tracdelacourbe x 2
2Filtresrponseimpulsionnellefinieetfiltresrcursifs 2.1Filtrerponseimpulsionnellefiniedudeuximeordre 2.1.1DfinirunRIFparsesdeuxracinescomplexesimaginairesconjugues 2.1.2Applicationd'unsignalsinusodalenentredufiltre 2.1.3Amplitudeetphasedelasinusodedesortiespourdiffrentesfrquences delasinusoded'entre(mthodedersolutiondirecte) 2.1.4Amplitudeetphasedelasinusodedesortiespourdiffrentesfrquences delasinusoded'entre(mthodedesmoindrescarres) 2.2Filtrercursifdudeuximeordre 2.2.1Dfinirunfiltrercursifdudeuximeordre 2.2.2Applicationd'unsignalsinusodalenentredufiltre 2.2.3Amplitudeetphasedelasinusodedesortiespourdiffrentesfrquences delasinusoded'entre(mthodedersolutiondirecte) 2.2.4Amplitudeetphasedelasinusodedesortiespourdiffrentesfrquences delasinusoded'entre(mthodedesmoindrescarres)
FIG1Tracdelacourbe x 2
2Filtresrponseimpulsionnellefinieetfiltresrcursifs
Lebutdecettepartieestdeprogrammerunfiltreetdevrifierquel'amplitudeetlaphasede sinusodesfiltressontbiencellesquel'ondduitdelarponseenfrquencedufiltre.
2.1Filtrerponseimpulsionnellefiniedudeuximeordre
2.1.1DfinirunRIFparsesdeuxracinescomplexesimaginairesconjugues Onsaitqueunfiltrerponseimpulsionnellefiniedudeuximeordrepeuts'criresouslaforme: B z =b 0 +b 1 z1 +b 2 z 2 d'o z 2 B z =b 0 z+b 1 z+b 2 Mais,onsaitaussiquel'onpeutaussiquel'onpeutdterminerB(z)l'aidedesesdeuxracines complexesconjugues z 1 =e et z 1 =e (puisquelesignalestrel).Onauraalors:
B z = zz 1 zz 1 B z =z 2 2cos z 1
2
Enposantb(0)=1etenidentifiant,onobtient: b 1 =2cos b 2 =
2
FIG2Modulede B e j
FIG3Argumentde B e j
FIG4Signald'entreetRponseimpulsionnelledufiltre 2.1.3Amplitudeetphasedelasinusodedesortiespourdiffrentesfrquencesdela sinusoded'entre(mthodedersolutiondirecte) Quandonappliqueausignalx(t)lefiltreB(z),onobtientunsignaldelaforme y t =a cos t+ . Ici,lesseulesinconnuessont eta.Nousavonsdeuxinconnues,ilnousfautdoncdeuxquations pourlesdterminer. s t =a cos t+ Pourcela,nousallonsprendredeuxchantillonssuccessifs . s t+ 1 =a cos t+1 + s t =a cos t+ =a cos t cos sin t sin 1 s t+ 1 =a cos t+1 + =a cos t+ 1 cos sin t+ 1 sin 2 Enposant, s t =u cos t v sin t 1 u=a cos .Onaalors: . s t+ 1 =u cos t+ 1 v sin t+ 1 2 v=a sin
Demme,enmultipliant(1)par sin t+ 1
s t sin t+ 1 sin t s t+ 1 .
sin
Avec =
et= 1 ona: 4
FIG5Amplitudedusignalparrsolutiondirecte
FIG6Phasedusignalparrsolutiondirecte 2.1.4Amplitudeetphasedelasinusodedesortiespourdiffrentesfrquencesdelasinusode d'entre(mthodedesmoindrescarres) Lamthodeprcdentes'appliquepourunsignalidal.Or,cecin'estmalheureusementpassouvent lecas.Engnral,onaplutt: y' t =u cos t +v sin t +b t ob(t)reprsentelesbruit. 2 Oncherchequandsebruitestminimal.Pourcela,onpose: E t = y t u cos t +v sin t avec y t =a cos t+ .
E t =0 E E u Leminimumestatteintquandet .Calculonsalors et . u v E t =0 v E = 2 cos t a cos t+ u cos t v sin t =0 u
E = 2 sin t a cos t+ u cos t v sin t =0 . v Etparlinaritdelasommeona: a cos t+ cos cos t sin t cos t =0
Pour =
FIG7Amplitudedusignalparmthodedesmoindrescarres
FIG8Phasedusignalparmthodedesmoindrescarres
Enposanta(0)=1etenidentifiant,onobtient: a 1 =2cos
. 2 a 2 = Cherchonsalorslarponseenfrquencedufiltre.Elles'obtientencalculantlemoduleetl'argument de: 1
.Pour =
FIG11Modulede
1 A e
j
FIG12Argumentde
1 A e
j
1 n'estpasdfinie.La
A e j solutionadonctdenepasprendresespointspourtracerlegraphique. 2.2.2Applicationd'unsignalsinusodalenentredufiltre
Commenonstoutd'abord,parunsignaldelaforme:
x t =1 pourt=0 . =0 pourt> 0
FIG13Rponseimpulsionnelledex(t)
FIG14Tracdex(t)
FIG16Amplitudedusignalparrsolutiondirecte
FIG18Amplitudedusignalparmthodedesmoindrescarres
FIG19Phasedusignalparmthodedesmoindrescarres
n'estpasdfinie.La
Onavuquelatransforme X e j d'unesquencex(n)s'critsouslaforme: X e j = x n e jn (1). Commecettefonctionestpriodique,depriode2 ,onpeutalorsladcomposerensriede Fourier.LasriedeFouriersontlescoefficientsx(n)dfinitpar: 1 x n = X e j e jn d . 2 CalculerlatransformedeFourierdiscrterevientcalculerlatransformedeFourierdonnepar (1)pourlesvaleursde k = ok=1,2,....N1. j2 jn2 2 Etenprenant = ona: . N X e = x n e N N
Pourunefonctioncosinusenentredefrquence400onobtientlesgraphessuivants:
FIG19AmplitudedusignalparlatransformedeFourierDiscrte
FIG20PhasedusignalpartransformedeFourierDiscrte
} t1.close(); t2.close(); }
import java.io.File; import java.io.IOException; import java.util.*; public class Filtre2 { /** * Cette classe permet de calculer l'amplitude et la phase grce la mthode de rsolution directe * de la rponse impulsionnelle d'un filtre du deuxime ordre lorsqu'on lui a mis en entre un signal sinusodal. * @autor piozin */ // Calcul de x(t) public static ArrayList<Double> Entre(double freq, int l) { ArrayList<Double> x= new ArrayList<Double>(); for (int i=0;i<l;i++){ double c= Math.cos(freq*i); x.add(c); } return x; } //Calcul de y(t) public static ArrayList<Double> Filtre(double ro, double phi) { ArrayList<Double> l=new ArrayList<Double>(); double b1=-2*ro*Math.cos(phi); double b2=ro*ro; l.add(b1); l.add(b2); return l; } // Mthode qui stocke les valeurs de y(t) public static ArrayList<Double> Sortie(double freq, int l,double ro, double phi) { ArrayList<Double> y=new ArrayList<Double>(); ArrayList<Double> z=Entre(freq, l); double b1=-2*ro*Math.cos(phi); double b2=ro*ro; double d=0; y.add(d); y.add(d); for (int i=2;i<l;i++) { double c=z.get(i)+b1*z.get(i-1)+b2*z.get(i-2); y.add(c); } return y;
// TEST avec s(t)=5*cos(wt+pi/3) //double s1=-5/2.; //double s2=5*Math.sqrt(3)/2; //double t1=2; //double t2=3; double u=(((s1*Math.sin(freq*t2))(s2*Math.sin(freq*t1)))/Math.sin(freq)); double v=-(((s1*Math.cos(freq*t2))(s2*Math.cos(freq*t1)))/Math.sin(freq)); double a=Math.sqrt(u*u+v*v); double phase=Math.atan2(v,u); mes.add(a);
// Calcule la phase de y(t) public static ArrayList<Double> mesurePhase(double ro, double phi, int l) ArrayList<Double> phase=new ArrayList<Double>(); for (double n=1;n<100;n++) { if (n!=50) { double freq=((n-50)/100)*2*Math.PI; ArrayList<Double> a=mesure( freq, ro, phi, l); phase.add(a.get(1)); } } return phase; } public static ArrayList<Double> teta() { ArrayList<Double> tet=new ArrayList<Double>(); for (double n=1;n<100;n++) { if (n!=50) { double freq=((n-50)/100)*2*Math.PI; tet.add(freq); } } } return tet;
public static void fichier1(double ro, double phi, int l, String S1, String S2) throws IOException { File f1=new File(S1); File f2=new File(S2); TextFileWriter t1=new TextFileWriter(f1); TextFileWriter t2=new TextFileWriter(f2);
import java.io.File; import java.io.IOException; import java.util.*; public class MoindreCarreb { /** * Cette classe permet de calculer l'amplitude et la phase grce la mthode des moindres carres * de la rponse impulsionnelle d'un filtre du deuxime ordre lorsqu'on lui a mis en entre un signal sinusodal. * @autor piozin */ // Calcul de x(t) public static ArrayList<Double> Entre(double freq, int l) { ArrayList<Double> x= new ArrayList<Double>(); for (int i=0;i<l;i++){ double c= Math.cos(freq*i); x.add(c); } return x; } //Calcul de y(t) public static ArrayList<Double> Filtre(double ro, double phi) { ArrayList<Double> l=new ArrayList<Double>(); double b1=-2*ro*Math.cos(phi); double b2=ro*ro; l.add(b1); l.add(b2); return l;
public static ArrayList<Double> mesurePhase(double ro, double phi, int l) ArrayList<Double> phase=new ArrayList<Double>(); for (double n=1;n<50;n++) { double freq=((n-50)/100)*2*Math.PI; ArrayList<Double> a=mesure( freq, ro, phi, l); phase.add(a.get(1)); } for (double n=51;n<100;n++) { double freq=((n-50)/100)*2*Math.PI; ArrayList<Double> a=mesure( freq, ro, phi, l); phase.add(a.get(1)); } return phase; } public static ArrayList<Double> teta() { ArrayList<Double> tet=new ArrayList<Double>(); for (double n=1;n<50;n++) { double freq=((n-50)/100)*2*Math.PI; tet.add(freq); } for (double n=51;n<100;n++) { double freq=((n-50)/100)*2*Math.PI; tet.add(freq); }
public static void fichier1(double ro, double phi, int l, String S1, String S2) throws IOException { File f1=new File(S1); File f2=new File(S2); TextFileWriter t1=new TextFileWriter(f1); TextFileWriter t2=new TextFileWriter(f2); ArrayList<Double> t=teta(); ArrayList<Double> a= mesureAmpli( ro, phi, l); ArrayList<Double> b= mesurePhase( ro, phi, l); for (int i=0;i<t.size();i++) { t1.write(t.get(i)+" "+a.get(i)); t1.newLine(); t2.write(t.get(i)+" "+b.get(i)); t2.newLine(); } t1.close(); t2.close(); } public static void main (String[]args) throws IOException{ fichier1(1,Math.PI/4,50,"Test7","Test8"); } }
public class Rcursif { /** * Cette classe permet de calculer l'amplitude et la phase grce la mthode de rsolution directe * de la rponse impulsionnelle d'un filtre rcursif du deuxime ordre lorsqu'on lui a mis en entre un signal sinusodal. * @autor piozin */ // Mthode qui stocke les valeurs de b(1) et b(2) public static ArrayList<Double> Filtre(double ro, double phi) { ArrayList<Double> l=new ArrayList<Double>(); double b1=-2*ro*Math.cos(phi);
// Mthode qui calcule B(exp(j teta) public static ArrayList<NombreComplexe> Calcul(double ro, double phi) { ArrayList<Double> l= Filtre(ro,phi); double b1=l.get(0); double b2=l.get(1); ArrayList<NombreComplexe> valeur=new ArrayList<NombreComplexe>(); for (double n=1;n<100;n++) { double teta=((n-50)/100)*2*Math.PI; double a=1.+b1*Math.cos(teta)+b2*Math.cos(2*teta); double b=b1*Math.sin(teta)+b2*Math.sin(2*teta); NombreComplexe c=new NombreComplexe(a,b); NombreComplexe i=c.inverse(); valeur.add(i); } return valeur; } // Mthode qui calcule le module de B(exp(j teta)) public static ArrayList<Double> Module (double ro, double phi) { ArrayList<NombreComplexe> val=Calcul( ro, phi); ArrayList<Double> mod=new ArrayList<Double>(); NombreComplexe a= new NombreComplexe(1,1); for (int i=0;i<val.size();i++) { double b=a.module(val.get(i)); mod.add(b); } return mod; } // Mthode qui calcule l'argument de B(exp(j teta)) public static ArrayList<Double> Argu (double ro, double phi) { ArrayList<NombreComplexe> val=Calcul( ro, phi); ArrayList<Double> arg=new ArrayList<Double>(); NombreComplexe a= new NombreComplexe(1,1); for (int i=0;i<val.size();i++) { double b=-a.argument(val.get(i)); arg.add(b); } return arg; } // Mthode qui calcule teta variant de -PI PI public static ArrayList<Double> tetan () { ArrayList<Double> teta=new ArrayList<Double>(); for(double n=1;n<100;n++) { double t=((n-50)/100)*2*Math.PI; //System.out.println(t+"\n"); teta.add(t); } return teta;
gnuplot
public static void fichier(double ro, double phi, String S1, String S2) throws IOException { File f1=new File(S1); File f2=new File(S2); TextFileWriter t1=new TextFileWriter(f1); TextFileWriter t2=new TextFileWriter(f2); ArrayList<Double> teta=tetan(); ArrayList<Double> mod= Module( ro, phi); ArrayList<Double> arg= Argu(ro, phi); for (int i=0;i<teta.size();i++) { //System.out.println(teta.get(i)); t1.write(teta.get(i)+" "+mod.get(i)); t1.newLine(); t2.write(teta.get(i)+" "+arg.get(i)); t2.newLine();
} t1.close(); t2.close();
import java.util.*; import java.io.*; public class Recursif2 { // Calcul de x(t) public static ArrayList<Double> Entre(double freq, int l) {
public static ArrayList<Double> Entre2(int l) { ArrayList<Double>x = new ArrayList<Double>(); x.add(0.); x.add(0.); x.add(1.); for (int i=3;i<l;i++) { x.add(0.); } return x; } //Calcul de y(t) public static ArrayList<Double> Filtre(double ro, double phi) { ArrayList<Double> l=new ArrayList<Double>(); double a1=-2*ro*Math.cos(phi); double a2=ro*ro; l.add(a1); l.add(a2); return l; } // Mthode qui stocke les valeurs de y(t) public static ArrayList<Double> Sortie( double freq,int l,double ro, double phi) { ArrayList<Double> y=new ArrayList<Double>(); ArrayList<Double> z=Entre2(l); double a1=-2*ro*Math.cos(phi); double a2=ro*ro; double d=0.; y.add(d); y.add(d); for (int i=2;i<l;i++) { double c=z.get(i)-a1*y.get(i-1)-a2*y.get(i-2); y.add(c); } return y; } // Mthode qui stocke les valeurs de y(t) public static ArrayList<Double> Sortie2( double freq,int l,double ro, double phi) { ArrayList<Double> y=new ArrayList<Double>();
// Mthode qui constuit les fichiers public static void fichier(double ro, double phi, int l, double freq, String S1, String S2) throws IOException { File f1=new File(S1); File f2=new File(S2); TextFileWriter t1=new TextFileWriter(f1); TextFileWriter t2=new TextFileWriter(f2); ArrayList<Double> t=temps(l); ArrayList<Double> a= Entre( freq,l); ArrayList<Double> b= Sortie2(freq,l,ro, phi); for (int i=0;i<t.size();i++) { t1.write(t.get(i)+" "+a.get(i)); t1.newLine(); t2.write(t.get(i)+" "+b.get(i)); t2.newLine(); } t1.close(); t2.close(); }
// Calculer Amplitude, Phase de y public static ArrayList<Double> mesure(double freq, double ro, double phi, int l) { ArrayList<Double> mes=new ArrayList<Double>(); ArrayList<Double> sort= Sortie2(freq,l,ro,phi); ArrayList<Double> t=temps(l); double double double double s1=sort.get(69); s2=sort.get(70); t1=t.get(69); t2=t.get(70);
// TEST avec s(t)=5*cos(wt+pi/3) //double s1=-5/2.; //double s2=5*Math.sqrt(3)/2; //double t1=2; //double t2=3; double u=(((s1*Math.sin(freq*t2))(s2*Math.sin(freq*t1)))/Math.sin(freq)); double v=(((s1*Math.cos(freq*t2))(s2*Math.cos(freq*t1)))/Math.sin(freq)); double a=Math.sqrt(u*u+v*v);
return ampli; } // Calcule la phase de y(t) public static ArrayList<Double> mesurePhase(double ro, double phi, int l) ArrayList<Double> phase=new ArrayList<Double>(); for (double n=1;n<100;n++) { if (n!=50) { double freq=((n-50)/100)*2*Math.PI; ArrayList<Double> a=mesure( freq, ro, phi, l); phase.add(a.get(1)); } } return phase; } public static ArrayList<Double> teta() { ArrayList<Double> tet=new ArrayList<Double>(); for (double n=1;n<100;n++) { if (n!=50) {
return tet;
public static void fichier1(double ro, double phi, int l, String S1, String S2) throws IOException { File f1=new File(S1); File f2=new File(S2); TextFileWriter t1=new TextFileWriter(f1); TextFileWriter t2=new TextFileWriter(f2); ArrayList<Double> t=teta(); ArrayList<Double> a= mesureAmpli( ro, phi,l); ArrayList<Double> b= mesurePhase( ro, phi,l); for (int i=0;i<t.size();i++) { t1.write(t.get(i)+" "+a.get(i)); t1.newLine(); t2.write(t.get(i)+" "+b.get(i)); t2.newLine(); } t1.close(); t2.close(); }
public static void main (String[]args) throws IOException{ fichier(0.9,Math.PI/3, 100 ,2*Math.PI/100,"Test13","Test14"); fichier2(0.9,Math.PI/3, 100 ,2*Math.PI/100,"Test20","Test21"); //ArrayList<Double> mes=mesure(Math.PI/2, 1, Math.PI/4,20); fichier1(0.9,Math.PI/3,100,"Test15","Test16");
} }
//
Mthode qui stocke les valeurs de y(t) public static ArrayList<Double> Sortie( double freq,int l,double ro, double phi) { ArrayList<Double> y=new ArrayList<Double>(); ArrayList<Double> z=Entre(freq,l); double a1=-2*ro*Math.cos(phi); double a2=ro*ro; double d=0.; y.add(d); y.add(d); for (int i=2;i<l;i++) { double c=z.get(i)-a1*y.get(i-1)-a2*y.get(i-2); y.add(c); } return y; }
public static ArrayList<Double> mesurePhase(double ro, double phi, int l) ArrayList<Double> phase=new ArrayList<Double>(); for (double n=1;n<50;n++) { double freq=((n-50)/100)*2*Math.PI; ArrayList<Double> a=mesure( freq, ro, phi, l); phase.add(a.get(1)); } for (double n=51;n<100;n++) { double freq=((n-50)/100)*2*Math.PI; ArrayList<Double> a=mesure( freq, ro, phi, l); phase.add(a.get(1)); } return phase; } public static ArrayList<Double> teta() { ArrayList<Double> tet=new ArrayList<Double>(); for (double n=1;n<50;n++) { double freq=((n-50)/100)*2*Math.PI; tet.add(freq); } for (double n=51;n<100;n++) { double freq=((n-50)/100)*2*Math.PI; tet.add(freq); } return tet; }
public static void fichier1(double ro, double phi, int l, String S1, String S2) throws IOException {
} t1.close(); t2.close(); }
public static void main (String[]args) throws IOException{ fichier1(0.9,Math.PI/3,50,"Test17","Test18"); } } public class NombreComplexe { /** La classe NombreComplexe permet de crer partir de deux nombres rels un nombre complexe. * ELle permet aussi de faire les oprations courantes sur les nombres complexes (module, argument * produit, soustraction, inverse) * @autor:piozin */ // Les attributs protected double partieReelle; protected double partieImaginaire; // Le constructeur public NombreComplexe(double r, double i) { partieReelle = r; partieImaginaire = i; } // Le String to Sting() public String toString() { return partieReelle+"+"+partieImaginaire+"i"; } //Les getteurs public double getPartieReelle(){ return partieReelle; }
complexes.
* Elle retourne un nombre complexe. */ public NombreComplexe ajouterComplexe(NombreComplexe a, NombreComplexe b) { double ra=a.getPartieReelle(); double rb=b.getPartieReelle(); double ia=a.getPartieReelle(); double ib=b.getPartieImaginaire(); NombreComplexe c=new NombreComplexe(ra+rb,ia+ib); return c; } // soustraire deux complexes /** Cette mthode permet de faire la soustraction de deux nombres complexes. * Elle retourne un nombre complexe. */ public NombreComplexe soustraireComplexe(NombreComplexe a, NombreComplexe b) { double ra=a.getPartieReelle(); double rb=b.getPartieReelle(); double ia=a.getPartieReelle(); double ib=b.getPartieImaginaire(); NombreComplexe c=new NombreComplexe(ra-rb,ia-ib); return c; } // Produit de deux complexes /** Cette mthode permet de faire le produit de deux nombres complexes. * Elle retourne un nombre complexe. */ public NombreComplexe produit(NombreComplexe a, NombreComplexe b) double double double double ra=a.getPartieReelle(); rb=b.getPartieReelle(); ia=a.getPartieReelle(); ib=b.getPartieImaginaire();
ia*ib,ra*ib+ia*rb); }
//argument d'un nombre complexe /** Cette mthode permet de faire l'argument d'un nombre complexe. * Elle retourne un nombre rel. */ public double argument (NombreComplexe a) { double r=a.getPartieReelle(); double b=a.getPartieImaginaire(); double c=Math.atan2(b, r); return c; } //inverse d'un nombre complexe /** Cette mthode permet de calculer l'inverse d'un nombre complexe. * Elle retourne un nombre complexe. */ public NombreComplexe inverse() {
double re=this.partieReelle / (this.partieReelle*this.partieReelle+this.partieImaginaire*this.partieImaginaire ); double im=-this.partieImaginaire/ (this.partieReelle*this.partieReelle+this.partieImaginaire*this.partieImaginaire ); NombreComplexe c= new NombreComplexe (re,im); return c; } } import java.io.File; import java.io.IOException; import java.util.ArrayList;
public class TransfoD { public static ArrayList<Double> entree(double freq,int n) { ArrayList<Double> x=new ArrayList<Double>(); for (int i=0;i<n;i++) { double a=Math.cos(freq*i); x.add(a);
//for (int i=0;i<n/2;i++) { // double a =0; // x.add(a); //} //for (int i=n/2;i<n;i++) { // double a =1; // x.add(a); //} return x;
public static ArrayList<NombreComplexe> discrete(double freq, int n) { ArrayList<Double> entree=entree(freq,n); ArrayList<NombreComplexe> a= new ArrayList<NombreComplexe>(); double T=entree.size(); Double re=0.; Double im=0.; for (int k=0;k<T;k++) { for (int i=0;i<T;i++) { re=re+1/T*(entree.get(i))*Math.cos(2*Math.PI*i*k/T); im=im-1/T*(entree.get(i))*Math.sin(2*Math.PI*i*k/T); } NombreComplexe c= new NombreComplexe(re,im); a.add(c); re=0.; im=0.; } return a; } public static ArrayList<Double> mesureAmpli(double freq,int n) { ArrayList<NombreComplexe> discrete=discrete(freq,n); ArrayList<Double> ampli=new ArrayList<Double>(); double s=discrete.size(); NombreComplexe c=new NombreComplexe(1,1); for (int i=0;i<s;i++) { double a=c.module(discrete.get(i)); ampli.add(a); } return ampli; } public static ArrayList<Double> mesurePhase(double freq,int n) { ArrayList<NombreComplexe> discrete=discrete(freq,n); ArrayList<Double> phase=new ArrayList<Double>(); double s=discrete.size();
public static void fichier1(double freq,int n,String S1, String S2) throws IOException { File f1=new File(S1); File f2=new File(S2); TextFileWriter t1=new TextFileWriter(f1); TextFileWriter t2=new TextFileWriter(f2); ArrayList<Integer> t=teta(freq,n); ArrayList<Double> a= mesureAmpli(freq,n); ArrayList<Double> b= mesurePhase(freq,n); for (int i=0;i<t.size();i++) { t1.write(t.get(i)+" "+a.get(i)); t1.newLine(); t2.write(t.get(i)+" "+b.get(i)); t2.newLine(); } t1.close(); t2.close(); } public static void main (String[]args) throws IOException { fichier1(400,100,"Test9","Test10"); }