Próbuję symulować obiekt linowy. Rozumiem, że sformułowanie to szereg cząstek połączonych sprężynami. Sprężyny te mają bardzo duże wartości k, tak że linia odkształca się, ale bardzo mało się rozciąga. Doszedłem do wniosku, że rozwiązanie tego w funkcji czasu nie jest możliwe w formie zamkniętej, ponieważ lina jest uogólnieniem wahadła (które nie jest formą zamkniętą).
Rozstrzygnijcie więc przybliżone rozwiązania. Potrzebuję algorytmu, który dobrze się skaluje. Przykłady, które widziałem, używają jawnej lub niejawnej integracji Eulera do przemieszczania cząstek. To nie jest skalowane.
Aby to zobaczyć, rozważ linę z węzłami. Zastosuj dużą siłę na jednym końcu. Ponieważ lina nie powinna bardzo się rozciągać, przyspieszenie na drugim końcu musi być natychmiastowe.
Jednak w przypadku integracji Eulera, aby uzyskać jakąkolwiek siłę na drugim końcu, potrzeba n kroków. Zauważam wykładniczy spadek: jeśli pierwszy węzeł przyspieszy określoną wartość, wówczas sąsiednie węzły przyspieszają mniej (jeśli przyspieszają z tą samą prędkością, algorytm nie jest stabilny). W związku z tym węzły sąsiadujące z tym węzłem przyspieszają jeszcze wolniej!
Tak więc dla oddalonych węzłów przyspieszenie jest prawie znikome. Prowadzi to do liny, która znacznie się rozciąga. Jeśli chcesz podwoić rozdzielczość symulacji, musisz nagle wykonać kroki dziesięciokrotnie lub setki razy mniejsze, aby uzyskać podobne zachowanie.
Szukam prostej metody, która rozwiązuje ten problem - tj. Symulacje o wyższej rozdzielczości są zbieżne z rozwiązaniem z dodatkowym obliczeniem tylko czasu wielomianowego. Dostępna jest pełna biblioteka technik algebry macierzowej i liniowej. Moja wiedza na temat mechaniki klasycznej jest bardzo dobra i znam analizę numeryczną.