how to use groebner funtion
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
%I have 3 nonlinear polynomial equations. I would like to use Groebner method in matlab to solve them. Please show me how to do that as clearly as possible.
%Thanks in advance.
f1=(-4.71777*10^21)+(2.10263*(10^15)*x0)-(3.49196*(10^8)*(x0^2))+(28*x0^3)+(1.56321*(10^14)*y0)-(3.76035*(10^7)*x0*y0)-(1.16399*(10^8)*y0^2)+(28*x0*y0^2)+(1.11156*(10^15)*z0)-(2.6739*(10^8)*x0*z0)-(1.16399*(10^8)*z0^2)+(28*x0*z0^2)
f2=(-7.62057*10^20)+(1.56321*(10^14)*x0)-(1.88017*(10^7)*x0^2)+(1.16012*(10^15)*y0)-(2.32797*(10^8)*x0*y0)+(28*(x0^2)*y0)-(5.64052*(10^7)*y0^2)+(28*y0^3)+(1.7955*(10^14)*z0)-(2.6739*(10^8)*y0*z0)-(1.88017*(10^7)*z0^2)+(28*y0*z0^2)
f3=(-5.41882*(10^21))+(1.11156*(10^15)*x0)-(1.33695*(10^8)*x0^2)+(1.7955*(10^14)*y0)-(1.33695*(10^8)*y0^2)+(2.41161*(10^15)*z0)-(2.32797*(10^8)*x0*z0)+(28*(x0^2)*z0)-(3.76035*(10^7)*y0*z0)+(28*(y0^2)*z0)-(4.01085*(10^8)*z0^2)+(28*z0^3)
0 commentaires
Réponses (1)
Walter Roberson
le 25 Fév 2014
The groebner method assumes that you are working in a transitive and commutative algebraic domain with indefinite precision. That is not the case in your situation: you are working with double precision constants and mathematical operations, and you are being severely limited by the precision.
If we were to assume that your 6 given digits of precision in your constants are infinitely accurate, such as 3.76035*10^7 exactly, then the solution is,
T = RootOf(8730629105141324856992021631*Z^7 - 93154703113022319253101652905801*Z^6 + 5290130260748861049670439977885516000*Z^5 - 31683393121913492781344590435395215781250*Z^4 + 76812469157230892953736692218437414062500000*Z^3 - 92730743959203172134758219842091308593750000000*Z^2 + 57514411629616551846078000573281250000000000000000*Z -15761383693267952488406258764282226562500000000000000, Z)
x0 = (14400835255407373391775983631513413268881681427073675408110099221681646937738524299513284197231858923019456708432025695400596484933595619*T^6 - 129185847998697110823320893341932342689252432933044296151756514382347474071196300048723679482702717570931013392357714505558865591063433393949*T^5 + 8506471453743159324409270867293237465415883378148045621776871590698561815019395758875598706280492238515809098781955367942814954171928906418709000*T^4 - 37807656248742159176975002783407969095323188612690943647312222030813169090887445148331364739014634764872599890575039246902047476245847367414782656250*T^3 + 62524169923337060842870859324872232004275256026975873112723290780461937946841557595900422917054811942568096010412855952082356259551595536050902343750000*T^2 - 46965135561259591124064406098730565544187524796221158682853588694780932443552131523434788044065700033369335452703262298239422397397517593585742187500000000*T + 15390367108518275963774541415072535009735567964299391715674025675215402558723633886778756017995986232186254858590370077615613032093010539526367187500000000000) / 10507868522385794873183220618838785766367581569962700530353133479550486015064614410067630832929710595949707845499843544747336088227745712890625000000
y0 = 400 * T
z0 = (19689553935012538096321918267937161768230969301444875876960930088528578857976817076418421009883871319275267222939884367864674223445688307*T^6 - 176469577162105780130471629159254469661001201777021096162184238979756984013513487683077394344706108250005068170320683932068101327333873634797*T^5 + 11629059758312877560364621963910338937724241087539116852753415257271796732423706273750841358277814282404429342530410883957872044778600507938777000*T^4 - 51598275214530310858757607493068077862270932926259821572599638874239295026380205999972906136711021487203578685466034476038520968106675580420290156250*T^3 + 85074958251819151968993413726078784041101539024634700616436148313228302408307217347864769151331891804498448048035992928023962609119453950390355468750000*T^2 - 63580194270067564767665550085430465240529485895912357243384703397717028633770555501750998800251922036564391460112764527496228035447761674695898437500000000*T + 20742750562476378921726053184263735855785809545910790200976339606765841994872055439516780999091720234896366056837931890435761994582018369252929687500000000000) / 21015737044771589746366441237677571532735163139925401060706266959100972030129228820135261665859421191899415690999687089494672176455491425781250000000
Assuming that you are only interested in real roots.
You can see from the above that if you have a symbolic toolbox that the solution is not difficult, but it does require high precision. For example the denominator for z0 is 149 digits.
1 commentaire
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!