π
<-

Methode de Hückel

Pour le TI-Basic sur Nspire

Methode de Hückel

Unread postby AnttonC » 13 Dec 2013, 19:10

Bonjour,

Je souhaite programmer un calcul qui est très utilisé en chimie théorique de base, la méthode de Hückel. Je n'ai trouvé aucun programme qui le faisait sur Ti-Nspire.
Ce programme prend comme argument une matrice carrée (de taille n) qui dépend d'une variable x : M(x)

Mon premier problème est tout simple : Peut on faire un programme qui prend comme paramètre une fonction ?
J'aimerais écrire huckel(M), ou encore mieux huckel(M(x),x).
J'obtiens "erreur : erreur d'argument" dans le premier cas, et
"l'argument doit être un nom de variable" au moment de la vérification dans le deuxième cas.

Ensuite, peut-on utiliser un vecteur-variable pour faire du calcul formel ? Autrement dit je voudrais résoudre un système de n équations (dont une non linéaire : condition de normalisation) à n inconnues, n étant défini par l'argument du programme (n:=dim(M(x))[1]).
Si ce n'est pas possible je ferai séparément les cas n=2,3,4

Voilà, j'espère que j'ai été assez clair, et que quelqu'un pourra répondre au moins à mon premier problème.
N'hésitez pas à me dire si je dois plus détailler le travail que doit faire le programme

Merci d'avance,

Antton
User avatar
AnttonC
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 60%
 
Posts: 12
Joined: 13 Dec 2013, 18:34
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Agregation chimie

Re: Methode de Hückel

Unread postby Lionel Debroux » 14 Dec 2013, 10:29

Il me semble qu'une façon de passer une fonction en paramètre à une autre est d'utiliser une chaîne de caractères contenant l'expression de la fonction, puis la retraduire en expression avec expr().
Mais ça fait presque une décennie que je ne fais presque plus de TI-BASIC :)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Methode de Hückel

Unread postby AnttonC » 14 Dec 2013, 12:43

Ok merci beaucoup je vais essayer ça, j'espère que ça va marcher avec une matrice.
Du coup il faut mettre des guillemets au moment d'utiliser le programme ?
User avatar
AnttonC
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 60%
 
Posts: 12
Joined: 13 Dec 2013, 18:34
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Agregation chimie

Re: Methode de Hückel

Unread postby AnToX98 » 14 Dec 2013, 16:30

Bonjour,

Il y a précisément deux sens du mot "fonctions" abordables sur nspire.

• Le premier, c'est une fonction programmable, quand tu crée un nouveau programme, tu peux choisir entre fonction et programme. Ainsi, la fonction sert à retourner une valeur avec return, ce qui peut être très utile. Pour mieux comprendre, voici une fonction qui me calcule le cube de n :

Code: Select all
Define cube(n)=
Func
  Return n^(3)
EndFunc


Cette fonction, tu peux très bien l'utiliser n'importe où, pour stocker le cube d'une variable dans cette variable par exemple :

Code: Select all
a:=cube(a)


• Le deuxième type de fonction, c'est la fonction mathématique, avec une variable.

Ainsi, pour définir la fonction f(x)=2x+2, j'écris :

Code: Select all
f(x):=2x+2


Avec celle ci, je peux calculer l'image de x par la fonction :

Code: Select all
f(3)=8
User avatar
AnToX98Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 75.5%
 
Posts: 1022
Images: 15
Joined: 19 May 2013, 16:54
Location: Paris, France
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ere S

Re: Methode de Hückel

Unread postby AnttonC » 15 Dec 2013, 15:33

Bonjour,

Merci pour ces explications, en effet je n'étais pas très précis : Je parle de fonctions de type f(x)=5x(x-1) par exemple, et je voulais que mon programme prenne comme argument f ou f(x),x.

Mais ça a l'air possible en passant par une chaîne de caractère, même si je bloque encore.

Voilà un cas simple pour illustrer ce qui ne marche pas

Code: Select all
Define programme(chaine)
Prgm
Local f
Disp expr(chaine) \\ça marche
f(x):=expr(chaine)
Disp f(5) \\ça marche pas
EndPrgm

Quand je rentre programme("x^2"), il me renvoie bien le premier disp (l'expression de la fonction), mais il met "Erreur : L'argument doit être une chaine de caractère", et je n'ai pas mon 25. Par contre quand je fais à la main les deux dernières lignes ça marche.
Je suis assez embêté parce que l'argument est bien une chaine et que la calculatrice l'a compris puisqu'il donne le premier résultat...
User avatar
AnttonC
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 60%
 
Posts: 12
Joined: 13 Dec 2013, 18:34
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Agregation chimie

Re: Methode de Hückel

Unread postby Bisam » 15 Dec 2013, 17:48

En fait, AntoX98, les deux types de fonctions que tu décris sont... la même chose !!
Tu peux très bien définir ta fonction "f" exactement de la même façon que ta fonction "cube" et vice-versa.
Il n'y a qu'un seul type de fonction en TI-Basic.

Malheureusement, on ne peut pas utiliser une fonction comme paramètre d'appel d'une autre fonction.
On peut cependant gruger en utilisant la méthode suggérée par Lionel... mais c'est un peu plus subtil à cause de l'évaluation tardive.
En effet, lors de la création de la fonction, RIEN n'est évalué. L'évaluation se fait lors de l'utilisation de la fonction. (Et donc dans ton cas, au moment de l'évaluation, "chaine" n'est pas une chaine de caractères, mais une variable non attribuée, ce qui provoque l'erreur)

Il faut donc ruser ainsi :
Code: Select all
Define truc(chaine,var)=
Func
Local f
expr( "f(" & var & "):=" & chaine )
...
EndFunc

Pour cela, il faut bien entendu que "chaine" soit une chaîne de caractères et donc écrite entre guillemets. Il faudra aussi faire attention aux erreurs de syntaxe éventuels... car il n'y a plus d'auto-correction dans une chaîne de caractères.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Methode de Hückel

Unread postby AnttonC » 15 Dec 2013, 18:19

Ok j'ai compris merci beaucoup !
Par contre j'ai du modifier un peu
Code: Select all
Define programme(chaine,x)
Prgm
Local f
expr("f(x):=" & chaine)
Disp expr(chaine)
Disp f(5)
EndPrgm

Sinon var aurait du être une chaine.
La variable s'appellera toujours x, du coup j'aimerais enlever le deuxième argument et déclarer x dans le programme.

Enfin bon, ça marche, et je pense que pour mon deuxième problème je vais traiter à la main les systèmes à 2,3,4 inconnues parce que résoudre un système à n équations n inconnues (n étant une variable définie) je ne pense pas que ça soit programmable...

Merci beaucoup en tout cas !
Last edited by AnttonC on 15 Dec 2013, 18:43, edited 1 time in total.
User avatar
AnttonC
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 60%
 
Posts: 12
Joined: 13 Dec 2013, 18:34
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Agregation chimie

Re: Methode de Hückel

Unread postby Bisam » 15 Dec 2013, 18:35

Si tu l'écris comme tu l'as fait, ton programme ne fonctionnera que si ta variable s'appelle "x" (et du coup, ça ne sert à rien de mettre un 2ème paramètre !), alors que le mien fonctionne quelque soit le nom de la variable.

Attention cependant à bien mettre plusieurs chaines de caractères... j'ai séparé pour que ce soit plus clair 2 posts plus haut.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Methode de Hückel

Unread postby AnToX98 » 15 Dec 2013, 18:47

Oui, c'est juste sauf que une fonction que l'on définit ainsi : f(x):=2x+2 n'est pas programmable, non ?
Sinon, je crois que pour que ça marche correctement, il faut remplacer f par f1 :

Code: Select all
expr( "f1(" & var & "):=" & chaine )
User avatar
AnToX98Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 75.5%
 
Posts: 1022
Images: 15
Joined: 19 May 2013, 16:54
Location: Paris, France
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ere S

Re: Methode de Hückel

Unread postby Bisam » 15 Dec 2013, 18:59

Je ne comprends rien à ce que tu racontes, AntoX98 !
Qu'est-ce qu'une fonction "programmable" ?
Si tu veux dire qu'elle ne peut pas être éditée dans l'éditeur de programmes... et bien c'est simplement FAUX. Il suffit de l'ouvrir comme n'importe quelle autre fonction.

Quant à ta 2ème idée, de remplacer "f" par "f1", c'est non seulement farfelu (pourquoi l'un marcherait et pas l'autre ? tu peux bien nommer ta fonction comme tu le souhaites !) mais en plus ici cela conduira à une erreur car toutes les variables utilisées dans une fonction doivent être locales (même si ces variables sont elles-mêmes des fonctions) et seul f a été déclaré comme variable locale.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Next

Return to Nspire-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 3 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
816 utilisateurs:
>751 invités
>57 membres
>8 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)