how to use groebner funtion

1 view (last 30 days)
sermet
sermet on 25 Feb 2014
Edited: sermet on 25 Feb 2014
%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)

Answers (1)

Walter Roberson
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.
  1 Comment
sermet
sermet on 25 Feb 2014
Edited: sermet on 25 Feb 2014
Walter, I couldn't get anything from above equations and also I couldn't understand what you have done. It seems that x0,y0 and z0 were found from the equations. Could you be more clear what you have done and give me x0,y0,z0 unknowns from the solution.

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!