MatCont for Homotopy Method
显示 更早的评论
Hello,
has anybody managed or can give some advice how to apply the homotopy method within matcont? My goal is to follow the path of solution x (equilibrium) to a linear shifted function H(x, t) = F(x(t)) − (1 − t)F(x0). During that path, I want to encounter possible bifurcatin points. F is a different function, that outputs just some kind of vector to the given x(t).
MatCont seems to be perfect for that application but it seems like it only handles differential equations. How can I adapt it to work with a simple (system of) equations?
回答(1 个)
Andrew Newell
2020-4-24
编辑:Andrew Newell
2020-4-24
0 个投票
The primary purpose of MatCont (which is a GUI front end for Cl_MatCont) is to analyze solution curves of the form
. These may be equilibrium solutions of an ODE system
and that is how MatCont expects you to enter it. So one approach would just be to pretend it's an ODE and then find the equilibrium solutions.
MatCont creates a curve file and then uses Cl_MatCont to solve for the curve and its critical points. So another approach is to create the curve file yourself and run Cl_MatCont. You can then formulate it explicitly as an equilibrium curve instead of an ODE. This is more work and requires a much greater familiarity with Cl_MatCont, but it's a better approach if you're planning to solve a particular kind of problem many times. If you want to do that, I recommend reading the manual. In the first example it shows you how to solve
and there is no ODE.
8 个评论
FBBVC
2020-4-25
Andrew Newell
2020-4-25
编辑:Andrew Newell
2020-4-25
FBBVC, not following a particular parameter is one of the strengths of MatCont because it continues to follow a curve efficiently even if it goes back on itself. And it detects the bifurcations, so I'm not sure what the problem is. If you want a closely spaced set of values for t, why not just interpolate?
FBBVC
2020-4-27
Andrew Newell
2020-4-27
If I understand you correctly, you expect the homotopy curves to proceed monotonically from
to
, and when they don't you believe that's because of the path continuation algorithm. But, in general, there is no reason to expect them to be monotonic (check out "Probability-one homotopies in computational science", for example).
Maybe it would help if I understood exactly what you're trying to do, so here are some questions:
- Is the path itself your goal, or the solutions of
? - Are you looking for real or complex solutions?
- Is
a polynomial system or some other kind of function? - How did you find
?
Andrew Newell
2020-4-28
That doesn't sound like it's likely to be very efficient or effective. To get much advantage out of multiplying solutions by following bifurcations, you'd have to start with a very symmetric polynomial. And you'd probably have to pay close attention to each path, so you'd better not have many solutions.
It turns out that you can get smooth, monotonic homotopies "with probability 1" (i.e., aside from some isolated exceptional cases) if you are doing it in complex projective space and add some randomness into the problem. Matcont can't do that, but a package called Bertini can. And I have created a Matlab front end for this called BertiniLab that is in the Mathworks File Exchange.
The beauty of Bertini is that it is virtually guaranteed to find all of the solutions to a system of polynomial equations, you don't have to worry about finding the starting points, and it has very sophisticated "end games" that can give you as much accuracy as you like. However, you get all the complex solutions, the vast majority of which are generally not real, so you have to sift through them. In general, the number of solutions goes up rapidly with dimension or degree, so you can't do very large systems or high polynomial degree. Mind you, that's an inherent problem, and I don't know if there is any reason to expect that your system has an unusually low number of solutions.
There are some tricks that greatly improve the efficiency. One is paramatopy, which creates a good starting system from which you can rapidly move to any parameter you want. There is also regeneration, which is not easily explained in a sentence or two. These are implemented in BertiniLab. The creators of Bertini have also created Bertini_real, which is presumably much more efficient for finding real solutions, but I haven't created a Matlab front end for it.
FBBVC
2020-4-28
Andrew Newell
2020-4-29
Glad to help!
类别
在 帮助中心 和 File Exchange 中查找有关 Mathematics 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!