// This file is part of the Herezh++ application. // // The finite element software Herezh++ is dedicated to the field // of mechanics for large transformations of solid structures. // It is developed by Gérard Rio (APP: IDDN.FR.010.0106078.000.R.P.2006.035.20600) // INSTITUT DE RECHERCHE DUPUY DE LÔME (IRDL) . // // Herezh++ is distributed under GPL 3 license ou ultérieure. // // Copyright (C) 1997-2022 Université Bretagne Sud (France) // AUTHOR : Gérard Rio // E-MAIL : gerardrio56@free.fr // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // For more information, please consult: . #include "Suite_arithmetique.h" #include "Sortie.h" // affichage de la courbe void Suite_arithmetique::Affiche() const { cout << "\n suite arithmetique de terme U_0= " << U_0 << " et de raison p= " << p << " "; }; // interactif écran-clavier pour saisir les paramètres d'une suite // si amplitude != 0 alors il faut n non nulle et: // on a Somme_suite(n) = amplitude, ce qui permet pour les suites de réduire le nombre de paramètre à lire void Suite_arithmetique::Def_suite(double amplitude, int n) { if (amplitude == 0.) { cout << "\n valeur du terme initial U_0 de la suite "; U_0=lect_double(); cout << "\n valeur de la raison de la progression p= "; p=lect_double(); } else { if (n == 0) { cout << "\n erreur pour la definition d'une suite geometrique, n est nul ! " << "\n Suite_arithmetique::Def_suite(double amplitude, int n) "; Sortie(1); }; cout << "\n valeur de la raison de la progression p= "; p=lect_double(); U_0 = amplitude/(1.+n) - p*n/2.; if (U_0 < 0.) { cout << "\n \n ******* attention la valeur initiale U_0 de la suite est negative ??? " << " cela peut peut-etre conduire a une utilisation bizarre *******\n " << "\n Suite_arithmetique::Def_suite(double amplitude, int n) \n "; }; }; }; // ramène la valeur d'un élément n de la suite double Suite_arithmetique::U_n(int n ) { return (U_0+p*n); }; // ramène la somme de la suite de m à n // de manière arbitraire pour n=-1 ==> 0 // pour n < -1 --> erreur double Suite_arithmetique::Somme_Suite(int n) { if (n > -1) { double ret = (1.+n) * (U_0+p*n/2.); return ret; } else if (n==-1) { return 0.;} else if (n<-1) { cout << "\n erreur n est inf a -1 " << "\n Suite_arithmetique::Somme_Suite(int n)"; Sortie(1); }; return 0.; };