bonjour tout le monde
j'ai besoin d'aide sur la réalisation d'un code en c le grand probleme c'est que je suis tout nouveau en programmation...
mon fichier est composé de ma fonction main et de"maFonction"
ci-dessous le code :
// Dans mon main// Et ma fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 void maFonction(double u1, double u0, double u[]); int main(int argc,char *argv[]) { double n=10000,t=0.1;//n represente le temps maximal et t le pas de temps double M=1000; //jai un intervale [0;1] qui est discretisé en M+1 points for (int k=1 ; k<n ; k++) { double nombre=2,h=1/1001,c[999] ; double L=k*t/h;// L pour dire lambda c[k]=pow(nombre,L); double y[999],d[1000],u[999]; for(int m=k ;m<M ; m++)/*calcul de y=U(m,k+1)=A*U(m,k)-U(m,k-1)*/ { y[m]=d[m]-u[m-1];/*voici le resultat final que je veux evaluer*/ } } double u[1000] = {0}, u0 = 0, u1 = 0; maFonction(u1, u0, u); // Affichage de ses valeurs pour vérifier for (int m = 1 ; m < M ; m++) { printf("%d\n", u[m-1]); } return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void maFonction(double u1, double u0, double u[])/*ici je veux calcule u[] qui est un vecteur et que je souhaite utiliser dans y*/ { // Initialisation double h=1/1001,t=0.1; int M=1000; for(int m=1 ;m<M ;m++) { u0=cos(m*h)+sin(m*h); u1=cos(m*h-1)+sin(m*h+1); u[m-1]=t*u1+u0; /* On utilise m-1 parce que ma boucle commence à m = 1. Ainsi u[0] n'est pas ignoré */ } }
Mon objectif c'est d'évaluer y[m]=d[m]-u[m-1] (qui est un tableau) or le calcul de d[m](c'est un tableau) est fait dans un autre fichier comment je fait pour qu'a la compilation d[m] soit directement utilisé dans le fichier ci-dessus?
excusez moi d'etre long
voici le code qui me permet d'evaluer d[m]( pour info d[m] est un vecteur colone c'est le produit d'une matrice tridiagonale avec un vecteur donné)
sauf que là j'ai 3 erreurs que je n'arrive toujours pas a corriger
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void TridiagonalSolve ( const double *b, double *c, double *d, double *u, unsigned int n) { const double monbre=2; double M=1000,t=0.1,h=1/1001; //soit A une matrice tridiagonale et U un vecteur determinons d=A*U for (int m = 1; m<M ; m++) { c[m]=pow(nombre,m*t/h); double id =1/(b[m]-c[m-1]); c[m]*=id; d[m]=(d[m]-d[m-1]*c[m])*id; } u[M-1]=d[M-1]; for (int m = M-2; m>=0 ; m--) d[m]=u[m]+c[m]*u[m+1]; }
voici les erreurs:
error C2065: 'nombre'*: identificateur non déclaré
: error C2108: l'indice n'est pas de type intégral
: error C2108: l'indice n'est pas de type intégral
: warning C4244: 'initialisation'*: conversion de 'double' en 'int', perte possible de données
2008\Projects\maman\maman\Debug\BuildLog.htm"
1>maman - 3 erreur(s), 1 avertissement(s)
et pour finir avoir une représentation graphique de y[m] m=1,2,...........,1000
Partager