|
Bas de page | |
---|---|
Auteur | Sujet : programmation en C++ de léquation de la chaleur |
Publicité | Posté le 24-02-2007 à 19:00:29 |
pierre581 | ce programme est peu etre incohérent mais jai fai comme jle sentai si ya kelkun ki pe mdir pourkoi ca marche pa ce serai vraimen cool.
|
pierre581 | et les valeur de T0 et mu sont arbitraire on peut mettre otre choz
|
nrth | euh... c'est quoi qui marche pas ? ca compile ? Message édité par nrth le 24-02-2007 à 23:23:57 --------------- BarrePoint.org : News pour techno-geeks. |
el muchacho Comfortably Numb | Putain, je vois que l'apprentissage de la prog aux étudiants en Physique, c'est tjrs aussi catastrophique. Enfin, maintenant, ils enseignent le C++, c'est déjà ça. A mon époque, c'était encore du Fortran 77. Un code de classe matrice, -qui marche, elle -, t'est gracieusement offert ici. Il te reste juste à implémenter la multiplication (inspire-toi du code de l'opérateur = pour cette dernière), la transposée puis Gauss-Jordan, ce qui devrait être très facile avec cette base. Merci de poster le code ici quand tu as fini, hisoitre d'en faire bénéficier d'autres personnes. Après tout, on t'a aidé. Message édité par el muchacho le 25-02-2007 à 08:35:36 |
pierre581 | non ca compile pa ca me di kil conai pa le type de retour de la fonction friend alors ke je lui donne vect.... compren po
|
Harkonnen ModérateurUn modo pour les bannir tous |
--------------- J'ai un string dans l'array (Paris Hilton) |
nrth | res est pas défini dans ton main déjà...(et j n'a pas de valeur) --------------- BarrePoint.org : News pour techno-geeks. |
Amonchakai | Salut,
|
pierre581 | désolé pour le style sms |
Publicité | Posté le 25-02-2007 à 23:22:48 |
Taz bisounours-codeur | for(i=0;i<J-1;i=i++){for(i=0;i<J-1;i=i++) { Mat[i][i+1]=-mu;}}
|
Taz bisounours-codeur | non ...
|
pierre581 | j'utilise quoi alors pour utiliser deux classes avec une meme fonction |
ElDesdichado | Just my two cents...
|
pierre581 | ok mais je te promet que sur la diagonale c'est 1+4mu cela vient du fait que j'utilise une méthode implicite à 2 dimensions sinon je suis d'accord au niveau des boucles en i. En fait j'avais fait ca parceque ça marchais et ça m'affichais la bonne matrice. Mais je prend note merci |
ElDesdichado | Tu veux sans doute dire méthode explicite à 2 dimensions? Au temps pour moi je n'ai que survoler ton code (quoiqu'il en soit en général le pb se formule avec des 1-qqchose plutôt que l'inverse). De totu les manières tu vas avoir des pb de stabilité et des oscillations, si tu utilises un CN ou un schémas implicite, tu auras qqchose d'inconditionellement stable. Cheers! |
pierre581 | c'est d'ailleurs parce que c'est la méthode implicite que je dois inverser la matrice |
pierre581 | l autre méthode je l'ai fait en C et tu a raison elle est instable à partir d'une certaine valeur de mu la température diverge.
|
el muchacho Comfortably Numb | Utilise mon code et les exemples de Taz, je te dis, et commence par écrire une vraie lib matricielle en complétant ce que je t'ai donné avant de te lancer dans la résolution de l'équation. Message édité par el muchacho le 26-02-2007 à 20:54:49 |
++fab victime du syndrome IH |
|
pierre581 | el muchacho c'est justement ce que j'essaie de faire mais c'est pas intuitif,dans le prog que tu m'a filé, avant de l'utilisé, il faut que je saisisse toute les chses qu'il y a dedans.Mais je vais m'en sortir avec un peu de percéverence, laisse moi juste un peu de temps et soit un peu plus cool et moins méchant. |
pierre581 | mais merci quand meme |
ElDesdichado | Si tu te limites a des schemas d'ordre deux alors tu auras toujours une matrice tridiagonale, en general (et c'est le cas pour ton pb) a diagonale dominante. Tout ca pour dire qu'un structure efficace consiste a creer une classe TriMatrix (avec trois vecteurs pour les trois diagonales). Ensuite il te suffit d'écrire les différentes opérations/opérateurs pour cette classe et surtout une méthode d'inversion basée sur cette structure en particulier (en gros descente/remontée) qui t'inverse ta matrice en 2*N et tu auras un code a peu près efficace. Message édité par ElDesdichado le 27-02-2007 à 16:01:17 |
pierre581 | je suis entierement d'accord avec toi mais ce que tu me di c'est pour une résolution impicite unidimensionnelle, la mon but c'est de faire cette méthode en deux dimensions. J'ai donc trouvé une manière simple qui est de développer ma matrice représentant ma température sur ma plaque selon les colonnes. C'est pour cela que ma plaque qui est de dimension I*I me donne un vecteur de J=I*I lignes et donc ma matrice (de dimension J*J) qui me permet de passer d'une température T(t+dt) à T(t) n'est plus tridiagonale. elle a bien sur des élément tridiagonaux mais il faut lui rajouter deux autres diagonales. C'est pour cela que j'avais fait un algo tout moche pour vous faire une idée de la tete de ma matrice. Je pense que mon approche physique est bonne.La j'essai d'apprendre à programmer. Je posterai mon programme à la fin quand il sera fini(de facon il faut le finir mon passage en M2 en dépend !!).
|
ElDesdichado | ce que je te dis en deux dim peut s'appliquer pour n'importequelle matrice de Toeplitz i.e. a bande avec pleins de 0 ou tu ne stockes que les diagonales, un peu d'algèbre et ca fonctionne nettement plus rapidement. Sinon Choleski va être plus lent, il vaut mieux une méthode Gauss directe avec un peu de réflexion tu arrives a la solution la plus rapide. |
el muchacho Comfortably Numb |
Message édité par el muchacho le 28-02-2007 à 21:27:57 |
pierre581 | Bon j'ai commencé à programmer, et c'est pas une mince affaire que de rester des heures sur le PC pour en fin de compte devoir poster une fois de plus car je suis bloqué. Ce qui est positif c'est que si ce programme est débogé j'ai déja tous les algo pour finir en temps et en heure.
|
pierre581 | mon probleme est peut etre dans le makefile je n'ai pas réussi à savoir si c'étai la meme chose pour des classe que pour des template de classe pouvez vous me dire!
|
++fab victime du syndrome IH | dans Matrix<T>::dilatation, ligne 76: qu'est-ce que T ? remplaceT par float, double, long double, que sais-je ... Après, tu vas avoir des problèmes de link. Soit tu mets tout ton code dans le header et tu utilises l'instanciation implicite, soit tu instancies explicitement : Ou alors, ton compilateur supporte "export" (peu probable), et il faut préfixer ce qui va bien par export. Message édité par ++fab le 01-03-2007 à 00:42:52 |
el muchacho Comfortably Numb | Sérieusement, je ne comprends pas pourquoi il se fait chier avec des templates, à l'allure où il avance. Je ne comprends pas pourquoi il met du template<class T> partout. Message édité par el muchacho le 02-03-2007 à 08:52:51 |
Publicité | Posté le |
Sujets relatifs | |
---|---|
programmation systeme | Programmation ti89....??? |
Programmation objet en C | [C#] [Résolu] Comment communiquer avec une dll c++ |
Fonction strcpy absente, programmation PIC | programmation avec scite |
Comment devenir bon en programmation? | Programmation pour demain |
Programmation navigateur Web : Java/Javascript? | [C] Programmation d'un microcontrolleur |
Plus de sujets relatifs à : programmation en C++ de léquation de la chaleur |