Méthode numérique

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 18:03

comment qu'on fait? lol
parce que la c'est un polynome d'ordre 4...mais ceux qui se sont farci celui d'ordre 12 merci lol

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par Thibaut V. le Mer 20 Jan - 18:08

quand ca devient long, tu peux aussi créer une fonction qui te remplira ton tableau comme il le faut en ne mettant juste que les "x initiaux". C'est du chipotage mais une fois que c'est fait tu es tranquille : si j'ai le courage de le faire je le mettrai, mais je promet rien lol.
avatar
Thibaut V.
Vertébré

Masculin
Nombre de messages : 41
Age : 28
Localisation : Bastogne
Date d'inscription : 06/01/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 18:23

ifstream data;
data.open ("data.txt");
for (int j=0;j data>> x[j];
cout< }

j'ai tenté un truc comme ca pour aller les rechercher puis je ferais qlqch du genre A[i*n+j]=pow(x[j],N)

mais le truc c'est qu'il lit mon fichier en ligne >_< du coup il prend la première valeur de x puis la première de y...tu sais pas comment juste lui faire prendre les valeurs de la colonne de gauche?

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par Thibaut V. le Mer 20 Jan - 18:28

Là comme ça je saurais pas dire... mais sinon, fais 2 txt différents (un avec tes x et un avec tes y)
avatar
Thibaut V.
Vertébré

Masculin
Nombre de messages : 41
Age : 28
Localisation : Bastogne
Date d'inscription : 06/01/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 18:40

ifstream data;
data.open ("data.txt");

for (int j=0;j data>> x[j];
cout< }

for(int i=(N-1);i>=0;i--){
for (int j=(N-1);j>=0;j--){
A[j*N+i]=pow(x[j],(N-1));}}

j'ai fait ceci, ca ne va pas ^^et ca doit être une couille d'indice mais je vois pas ou, si tu as le temps et que tu vois d'où vient le problème merci ^^

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 19:20

j'ai vraiment besoin d'un coup de main, je sèche toujours sur ce fichier de proute, je rempli test1 avec les valeurs de mon equa diff puis j'aimerais aller les rechercher pour faire un fichier de valeurs et interpoler, voici ce que je fais:
ofstream outfile ;

outfile.open("test1.txt");

compute_yf(h,t0,tf,y0,p,eps,N,yf);

x=new double [N+1];
y=new double [p*(N+1)];

compute_yn(h,t0,tf,y0,p,N,x,y);

outfile <<"test"<<'\n'<<'\n';<==A PROSCRIRE >_<

for (int k=0;k<=N;k+=10){
outfile<<<'\t'<<<'\t'<<'\n';
}

outfile.close();
const int L=14;
const int P=100;
double xa[L];
double ya[L];
double z[P];
double w[P];
double g[L];
double dim;
ifstream data;
data.open("test1.txt");

for(int i=0;i
data >>xa[i]>> ya[i];
cout<<<'\t'<
}

data.close();

compute_gj(xa,ya,g,L);

dim=(xa[L-1]-xa[0])/P;

for(int k=0;k

z[k]=xa[0]+k*dim;
w[k]=cubicspline(xa,ya,g,L,z[k]);
}

ofstream out;
out.open("out.txt");

for (int n=0;n
out<<<'\t'<<<'\t'<<'\n';
}

out.close();


et il ne va même pas me rechercher les valeurs dans test1, je comprend pas pourquoi :'(
EDIT: BORDEL...je sais pas si ca peut être utile à quelqu'un ici...mais ne mettez pas de titre à vos fichiers texte >_< à cause du titre "test" dans le fichier, ca puait!

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 20:09

oui thibaut, si tu pouvais me dire comment tu ferais ça ce serait cool...parce que je nage complétement dans les indices j'ai torp du mal avec ca >_< demain je veux une équadiff à résoudre lol ca, ca va ^^

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par remy le Mer 20 Jan - 20:17

Code:

    int main()
{
    ifstream f;
    f.open("data.txt");
    int N=4;
    double* A = new double[(N+1)*(N+1)];
    for (int i=0 ; i<5 ; i++){
        f >> A[i*(N+1)];
    }

    for(int i=0;i<N+1;i++){
        for (int j=N;j>=0;j--){
            A[i*(N+1)+j]=pow(A[i*(N+1)],N-j);
        }
    }
    for(int i=0;i<N+1;i++){
        for (int j=0;j<N+1;j++){
            cout << A[i*(N+1)+j] << "\t\t";
        }
        cout << endl;
    }
    cout.flush();
    return 0;
}
Voilà pour remplir le tableau du phys_janv_09_1
Il faut mettre les valeurs de x dans data.txt

remy
Humain

Masculin
Nombre de messages : 106
Age : 26
Date d'inscription : 10/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par Thibaut V. le Mer 20 Jan - 20:34

Parfait, merci!

Pour ceux que ca intéresse, j'ai résolu le questionnaire posé en septembre 09 (version physiciens). A priori, ca a l'air correct (Si quelqu'un venait à remarquer qu'il contient des erreurs, merci de le signaler Very Happy)

pour le main :

Code:

#include
#include
#include
#include
#include "integrator.h"
#include "jacobi.h"
using namespace std;


double f(double x, int i, int j)
        {
            return (pow(x,i-1)*exp(-x*x/j)+pow(x,j-1)*exp(-x*x/i)); // définition fonction
        }


void afficher(double matr[], int C, int L) //afficheur de matrice
{
   
        for(int i=0; i
        {
            for(int j=0; j
            {
                cout << setprecision(5) <<<<'\t';
            }
            cout << endl;
        }
    }

void main()
    {
        const int N=5; //dimension de la matrice
        double matrice[N*N];
        double valpropres [N];
        double vectpropre [N*N];

        for (int i=0; i
        {
            for (int j=0; j
            {
                matrice[i*N + j]=integrate_simps(f,i+1,j+1,0.,10.,1E-7);
            }
        }
           
        cout << "Matrice A de dimension "<< N<< " "<<
        afficher(matrice,N,N);
        cout <<<<"Valeurs propres de la matrice A:"<<

        eigensystem_jacobi(matrice,valpropres,vectpropre,N,1E-7); //Calcul des valeurs propres

        afficher(valpropres,N,1);

        while(!_kbhit());
    }

Et voici pour la modification de Simpson :

Code:

#include
#include
#include
using namespace std;


double integrate_simps(double (*f)(double, int, int),int m, int n, double a,double b,double eps){
    double I,S=0.;
    double x,s,h;
    int i=1;
    double oldI;
    double oldS;
    I=(b-a)*((f(a,m,n)/2.)+(f(b,m,n)/2.));
    do{
        i++;
        oldI=I;
        oldS=S;
        h=(b-a)/(double)(pow(2.,double(i-1)));
        s=0.;
        x=a+h;
       
        for(int k=0;k
        {
            s+= f(x,m,n);
            x+= 2.*h;
        }

        I=0.5*I+h*s;

        S=(4./3.*I)-(1./3.*oldI);

    }while(fabs(oldS-S)>eps);

    return S;
}
avatar
Thibaut V.
Vertébré

Masculin
Nombre de messages : 41
Age : 28
Localisation : Bastogne
Date d'inscription : 06/01/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 20:43

ifstream data;
data.open ("data.txt");

for (int i=0;i data>> x[i];
}

for(int i=0;i for (int j=0;j
A[i*N+j]=pow(x[i],(N-1)-j);
}}

la remplir à l'endroit marchait aussi, je sais pas pourquoi je me suis pris la tête à commencer par la fin >-< j'avais juste un soucis pour l'exposant, merci rémy!


Dernière édition par °Lindsay° le Mer 20 Jan - 20:46, édité 1 fois

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 20:44

merci!! ^^

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 21:25

quequ'un a une idée de comment trouver nu et sigma dans la question des géométrologues de cette année? (7 janvier 2010)... et pour vérifier qu'elle est normalisée, vous prenez p(nu0,sigma0,x) ? ou l'autre? et sur quel intervalle?

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par remy le Mer 20 Jan - 22:13

Il suffit d'intégrer ce qu'il est mis, tu touves mu directement puis sigma par un petit calcul, je vois pas où est le problème
ou l'autre?
celle donnée explicitement, toute densité de probabilité doit être égale à 1
Le seul truc c'est de remplacer l'infini par une valeur suffisament grande. Ce que ce ferais, c'est remplacer l'infini par des valeurs de plus en plus grande jusqu'au temps que l'intégrale ne change pas (à la précision demandée)

remy
Humain

Masculin
Nombre de messages : 106
Age : 26
Date d'inscription : 10/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par remy le Mer 20 Jan - 22:15

Le truc des nombres premiers (phys sept 09)
Code:
#include <iostream>
#include "math.h"

using namespace std;

void eratosthenes(bool prime[], int n){
    for (int i=0 ; i<n ; i++){
        prime[i] = true;
    }
    prime[0] = false;
    int multiple;
    for (int i=2 ; i<n ; i++){
        for (multiple = i*i ; multiple<n ; multiple += i){
            for (int j=0 ; j<n ; j++){
                if (multiple == j){
                    prime[j] = false;
                }
            }
        }
    }
}

bool isPrime (int n){
    bool estPremier = true;
    if (n%2 == 0){
        estPremier = false;
    }
    int diviseur = 1;
    do{
        diviseur += 2;
        if(n%diviseur == 0){
            estPremier = false;
        }
    } while(diviseur < sqrt(n));
    if (n==2 | n==3){
        estPremier = true;
    }
    return estPremier;
}

int main()
{
    int N=1001;
    bool* tab = new bool[N];
    eratosthenes(tab,N);
    for (int i=0 ; i<N ; i++){
        if (isPrime(i)){
            cout << i << " ";
        }
        if (tab[i]){
            cout << i << endl;
        }
    }
    return 0;
}

remy
Humain

Masculin
Nombre de messages : 106
Age : 26
Date d'inscription : 10/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Mer 20 Jan - 22:29

le truc c'est que lorsque je prend des valeurs vraiment très grandes nu et sigma changent (logique) et tendent vers 0 :s

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par remy le Jeu 21 Jan - 0:15

Il faut prendre une précision supérieure à 10^-5 pour calculer les intégrales et tomber sur un truc plausible, je sais pas trop pourquoi
mu = 3,5
sigma = 3,1

remy
Humain

Masculin
Nombre de messages : 106
Age : 26
Date d'inscription : 10/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par remy le Jeu 21 Jan - 1:28

ha oui lindsay tu parlais d'interpoler les solutions de l'équadiff
mais l'énoncé c'est :

Vérifier la solution avec Mathematica
Interpoler la solution pour 0 < t < 30.

donc je crois que c'est avec mathematica qu'on doit interpoler

remy
Humain

Masculin
Nombre de messages : 106
Age : 26
Date d'inscription : 10/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Jeu 21 Jan - 14:17

pour ceux que ça interesse, nous avons eu une équation différentielle avec juste un if dedans comme le problème de la fusée ou un programme à faire qui calcule des nombres complexes...

et l'oral? ca donne quoi?

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par Gaël le Jeu 21 Jan - 14:27

L'oral, il est très gentil.

Tu es dans une classe avec tous les autres, lui est dans la pièce à coté. Tu tires une question du style qu'est ce qu'une spline cubique, quelles sont ses propriétés comment peut on les calculer?

Tu grattes un max sur papier, tu vas le voir, il prend ta feuille et il lit. S'il manque un truc ou quoi il te pose une question, si tu ne sais pas il te renvoie un peu chercher. Donc pas d'inquiétude, mais c'est un oral où tu écris bcp Razz

Pas d'équation différentielle couplée? Juste un if si tu dépasses une limite en t? Les fonctions à poser n'étaient pas trop compliquées?
avatar
Gaël
Humain

Masculin
Nombre de messages : 119
Age : 26
Date d'inscription : 24/01/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Jeu 21 Jan - 15:16

non ...enfin je pense...j'suis pas sûre d'avoir réussi ^^ c'était bob l'éponge qui saute du toit de sa maison sur un trampoline (donc une équation de chute libre avec frottement de stockes) et qd il arrive sur le trampoline bah il rebondit donc il rajoute la force de rappel du ressort tant que z est négatif, donc, je pense (de nouveau pas sure ^^) que ds le if bah il fallait mettre de si z(t) est positif ya juste léqua diff avec stockes et la chute libre, et si z(t) est négatif celle avec la force du ressort, mais c'était di aussi qu'il subissait la force du ressort durant tout le temps où z est négatif, donc mm pas à réfléchir aux conditions

par contre le truc des complexes, je me suis arrêtée dans la lecture de l'énoncé à "générer une fonction qui calcul des nombres complexes" ^^

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par remy le Jeu 21 Jan - 16:24

exam.cpp
[code]// Examen 21 janvier 2010


#include

#include

#include


#include "math.h"

#include "complex.h"

#include "rungekutta.h"


using namespace std;


double sys(int i, double x, const double y[]){

double m=0.150,g=9.81,beta=0.05,k=100;

switch(i){

case 0 :

return y[1];

break;

case 1 :

if (y[0]>0){

return -g-(beta/m)*y[1];

}

else{

return -g-(beta/m)*y[1]-(k/m)*y[0];

}

break;

}

}


void question1(){

int p, N;

double *y0, *yf, *x, *y;

double x0, xf, eps;

ofstream f;


p=2;

x0=0.;

xf=30.;

y0 = new double[p];

y0[0]=15.;

y0[1]=0.;

yf=new double[p];

eps=1E-2;

compute_yf(sys, x0, xf, y0, p, eps, N, yf);

x=new double [N+1],y=new double [p*(N+1)];

compute_yn(sys, x0, xf, y0, p, N, x, y);

f.open("output_spongebob.txt");

for (int i=0 ; i

f


Dernière édition par remy le Mer 2 Juin - 23:30, édité 1 fois

remy
Humain

Masculin
Nombre de messages : 106
Age : 26
Date d'inscription : 10/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par °Lindsay° le Jeu 21 Jan - 16:55

cool j'ai le même graphique que toi Very Happy...oui la première question à 9h j'avais fini,mais je me suis dit que c'était pas possible alors j'ai fixé mon écran jusqu'à 11h lol

°Lindsay°
Etudiant en Physique

Féminin
Nombre de messages : 165
Localisation : Namur
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par Gaël le Jeu 21 Jan - 17:24

champion rémy Very Happy merci Very Happy
avatar
Gaël
Humain

Masculin
Nombre de messages : 119
Age : 26
Date d'inscription : 24/01/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par remy le Jeu 21 Jan - 17:26



remy
Humain

Masculin
Nombre de messages : 106
Age : 26
Date d'inscription : 10/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par Ced. le Jeu 21 Jan - 17:41

Moi qui m'étais dit que si y avait un exo sur les équa diff, je le faisais pas, ben je me suis surpris =D
Je l'ai bouclé après deux heures et demi, en trainant.

(j'ai eu le loisir de dessiner ma courbe aux couleurs de Patrick et de remarquer qu'une "pseudo-période" de cette dernière rappelait étrangement la forme de la tête de Patrick lui-même =))

Donc si les exos de demain sont du même calibre, y a pas vraiment d'inquiétude à avoir. "Bêtement" savoir utiliser son programme.
Ah oui et, coup classique, attention aux unités.

En ce qui concerne la théorie : Finalement, il est insistant sur les démonstrations mathématiques ou pas ?

Ced.
Psychologue

Masculin
Nombre de messages : 4
Date d'inscription : 17/01/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Méthode numérique

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum