Page 1 sur 1
solve
Publié : lun. mars 21, 2011 7:07 am
par alb
solve((x-2)*sqrt(ln(x))) répond unable to isolate [x,ln(x)] Error: Bad Argument Value
Pourquoi ?
Re: solve
Publié : lun. mars 21, 2011 10:16 am
par parisse
le sqrt etait analyse avant de faire une detection de produit pour isoler. Je fais la modif, ca renverra [1,2].
Re: solve
Publié : lun. mars 21, 2011 10:54 am
par alb
Merci pour l'ensemble des réponses.
un détail: min([]) est sanctionné par un crash.
Re: solve
Publié : lun. mars 21, 2011 12:35 pm
par parisse
ok, c'est corrige.
Re: solve
Publié : mar. mars 22, 2011 9:18 am
par alb
Avec la 0.9.1 de hier
1/ OK pour solve((x-2)*sqrt(ln(x))) mais solve(sqrt(x*(1-ln(x))) donne unable to isolate...
2/ OK pour evalf(solve(x^2-3<0))
3/ l'affichage de 4 lignes dans la zone bleue en cours d'exécution fonctionne mais la ligne supérieure
est tronquée (moitié supérieure cachée) donc illisible
4/ ceci est-il normal ?
E:=x*(sqrt(17-12*sqrt(2)))-x/(3+2*sqrt(2))
solve(E) renvoie faussement [0]
solve(simplifier(E)) renvoie correctement [x]
Re: solve
Publié : mer. mars 23, 2011 2:07 pm
par alb
Les 3 premières remarques sont réglées.
Pour la quatrième (désolé, j'ai posté plus tard), il n'y a rien à faire ?
Je pense pouvoir mettre mon programme d'aide à la résolution d'équations dans le forum.
Re: solve
Publié : mer. mars 23, 2011 7:34 pm
par parisse
Pour le 4ème je préfère ne rien faire, parce que lancer un simplify sur les coefficients pourrait etre trop pénalisant.
Re: solve
Publié : ven. mars 25, 2011 5:22 pm
par alb
Je prends l'expression suivante:
E:=sqrt(x)+sqrt((x+100)(120-x))-sqrt((x+10)(x-30))-60*sqrt(2)+26*sqrt(5)
Je me suis arrangé pour que 80 annule E ce que confirme:
simplifier(subst(E,x=80)) ou encore plot(E,x=-150..150)
Ensuite je tape:
solve(E)
J'obtiens [] alors que je pensais avoir au moins une approximation,
sans utiliser fsolve, de la solution à la manière de:
solve(sqrt(x^3+x^2-7)-sqrt(x+5)-sqrt(5)+sqrt(7))
Comment expliquer la différence entre ces deux solve ?
Re: solve
Publié : ven. mars 25, 2011 6:15 pm
par parisse
Là vous poussez le système à ses limites... voire au-delà. solve essaie de se ramener à une équation polynomiale, ici avec des coefficients racine carrées mais dans le 2ème cas les coefficients sont simples
[-1,0,14,0,-64,2*sqrt(5)-2*sqrt(7),-2*sqrt(35)+119]
alors que pour le 1er ils sont beaucoup plus compliqués (avec des rootof, je ne suis d'ailleurs pas sur qu'ils soient corrects)
[Edit]: en fait le 2ème est un peu faussé, parce que le calcul de l'équation polynomiale en x fait intervenir des coefficients avec des racines carrées qui rendent l'utilisation directe de CoCoA pour calculer des bases de Groebner impossible (du coup c'est du code à moi qui est utilisé et n'a pas été très testé), en fait il calcule une équation polynomiale sur sqrt((x+10)*(x-30)), obtient des très grands coefficients ... et trouve comme racines 57.0177367279,66.7717360217 au lieu de 56.8945928512 et 67.0820382324.
Peut-etre que je pourrai remplacer les racines dans les coefficients par des équations en plus...
[80857687713184901376*sqrt(399461751297035680889582162410)-51154594618357511276051003906106752,rootof([[-162912834548474487566972160,41036009982619825389849792809728,10340321263833631777094919959834050560,-2604616927545842443496057313661759902913536],[1,0,-126942991224,0,4028630754716363289664]]),1257779328*sqrt(32471662715034691326580781342708267784695875844864020579953610)-7166432063719853806978764951654775064256,rootof([[-5466784325350056303242556018240,1377395571786107300955766834132268992,346984977340073616316613060896354576035840,-87425356990610140555175118018721443153331663104],[1,0,-126942991224,0,4028630754716363289664]]),36206278513392*sqrt(5134412499324995207498336805939121451122733088895006708668490)-82047416815114963020763774087848802772765272,rootof([[-23861718923062278900490577549592000,6010963237668306388715804284626106162880,1514538988015371676527456993188236650588672000,-381524826763557222062846737966696696377884077282560],[1,0,-126942991224,0,4028630754716363289664]]),283000348800*sqrt(232303644416112496967030383596007252707414881846929703018830585184948410)-136373507813692125903881062517631838510540712000,rootof([[-13490990221014206098885570504450080000,3400103789882728178464805587680598306080000,856293326668602053479135950758862161210849280000,-215809672779886151574017660754902176641891352920960000],[1,0,-126942991224,0,4028630754716363289664]]),1342294237720800000*sqrt(187081777160641991879967451458195334671695459460926410827678010)-18405058788537885190392835843141225686231894000000]
Re: solve
Publié : lun. mars 28, 2011 2:49 pm
par parisse
Bon, j'ai change la factorisation dans solve (+ puissante mais moins rapide), en esperant que ca n'aura pas d'effet de bord, du coup il trouve le 80.
Re: solve
Publié : lun. mars 28, 2011 4:56 pm
par alb
parisse a écrit :Là vous poussez le système à ses limites...
E:=sqrt(x)+sqrt(144-x^2)-sqrt(x^2-4x+3)-8*sqrt(2)+sqrt(3)-2
solve(E) en moins de 6/10 de seconde !
Et dire que certains hésitent encore sur le choix d'un logiciel de calcul formel !
Re: solve
Publié : sam. avr. 02, 2011 8:48 pm
par alb
alb a écrit :E:=x*(sqrt(17-12*sqrt(2)))-x/(3+2*sqrt(2))
solve(E) renvoie faussement [0]
solve(simplifier(E)) renvoie correctement [x]
parisse a écrit :je préfère ne rien faire, parce que lancer un simplify sur les coefficients pourrait etre trop pénalisant.
Je constate que solve(E) renvoie maintenant [x]
Je piège mes élèves avec E:=(sqrt(2)-2/sqrt(2))*x et Xcas renvoie [x,0] pour solve(E)
Ce serait possible de se contenter de [x] ?
Vous me dites si je deviens pénible avec mes remarques !!
Re: solve
Publié : dim. avr. 03, 2011 6:11 am
par parisse
il faudrait reconnaitre que 0 est un cas particulier de x, ce n'est pas vraiment prioritaire...