how to use groebner funtion
1 view (last 30 days)
Show older comments
%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 Comments
Answers (1)
Walter Roberson
on 25 Feb 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.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!