Inti dari pertanyaan saya adalah sebagai berikut: Saya memiliki sistem dua ODE. Yang satu memiliki batasan nilai awal dan yang lainnya memiliki batasan nilai akhir. Ini dapat dianggap sebagai sistem tunggal dengan batasan nilai awal pada beberapa variabel dan batasan nilai akhir pada yang lain.
Berikut detailnya:
Saya mencoba menggunakan pengontrol LQR finite-horizon waktu-kontinu untuk menggerakkan sistem dinamik linier. Saya ingin terus menggunakan ekosistem Python.
Sistem ini dalam bentuk , tunduk pada
Solusi LQR menghasilkan matriks sedemikian rupa sehingga input kontrol optimal u (t), linier dalam , adalah .
di mana
dan adalah solusi untuk persamaan diferensial Riccati waktu kontinu (perhatikan bahwa ini adalah matriks)
tunduk pada
, , , , , , semua diberikan.
Dalam bahasa Inggris: Anda memiliki beberapa sistem dinamis yang dimulai dalam keadaan . Kontroler LQR menghasilkan matriks umpan balik untuk digunakan antara waktu dan ( umumnya disebut time-horizon masalah)
Perhatikan bahwa kedua ODE hanya digabungkan dalam satu arah - solusi untuk tidak bergantung pada . Oleh karena itu salah satu cara untuk memecahkan masalah adalah membalikkan persamaan Riccati untuk mengubah masalah nilai akhir menjadi masalah nilai awal dan menemukan solusi numerik antara waktu dan menggunakan integrator ODE standar. Saya kemudian dapat menggunakan solusi numerik ini untuk menemukan . Ini menjadi perhatian saya karena pemecah ODE numerik untuk x (t) belum tentu sampel ODE pada waktu yang sama dengan waktu dalam solusi numerik ke $ P (t). Mungkin ada beberapa cara cerdas untuk menegakkan ini.
Cara lain yang saya perkirakan untuk menyelesaikan masalah adalah dengan memecahkan sistem bersama-sama, tetapi saya tidak tahu bagaimana menghadapi campuran nilai awal dan nilai akhir. Apakah masalah ini berat untuk diselesaikan secara komputasi? Bisakah saya melakukannya dengan SciPy / Python?
Ini disebut masalah nilai batas dua poin dan dipelajari dengan baik.
Metode pemotretan sangat sederhana untuk diprogram tetapi mungkin sangat tidak stabil secara numerik.
Cara standar untuk memecahkan masalah ini adalah menggunakan pendekatan pemotretan berganda dan menyelesaikan sistem persamaan nonlinier yang sesuai dengan pemecah nonlinier standar. Untuk daftar pemecah untuk sistem persamaan nonlinier, lihat, misalnya,
http://www.mat.univie.ac.at/~neum/glopt/software_l.html#nonlin
Anda mengambil sebagai variabel keadaan pada grid biasa dalam waktu (biasanya tidak ada grid yang sangat halus diperlukan), dan sebagai persamaan kondisi batas dan pemetaan yang memetakan variabel t waktu ke variabel t + h waktu. Ini memberikan persamaan sebanyak variabel. Anda hanya perlu memberikan rutinitas untuk mengevaluasi pemetaan ini untuk konfigurasi status yang diberikan pada kisi, dan pemecah nonlinier melakukan segalanya. (Mungkin Anda perlu beberapa titik awal jika tebakan awal Anda buruk.)
Wikipedia http://en.wikipedia.org/wiki/Direct_multiple_shooting_method memiliki deskripsi proses yang berguna, jika deskripsi di atas tidak cukup detail untuk Anda. Buku karya Stoer / Bulirsch yang dikutip di sana memberikan detail lengkap.
sumber
Saya tidak tahu bagaimana melakukannya dengan Python, tetapi kata kunci yang ingin Anda cari dalam literatur adalah "metode pemotretan". Itulah nama metode yang memecahkan masalah yang memiliki batasan nilai awal dan akhir.
sumber
AUTO dapat menyelesaikan dua titik BVP dan memiliki antarmuka python dan relatif mudah untuk diinstal. http://www.ma.hw.ac.uk/~gabriel/auto07/node6.html .
Jika Anda pergi rute yang ingin menyelesaikan P (t) pertama dan mengumpankannya ke ODE lain sebagai input, maka cara yang efisien untuk mengatur bahwa menggunakan PyDSTool. PyDSTool sangat mudah dipasang di platform apa pun, lihat http://pydstool.sf.net . Secara default, ini hanya akan menggunakan interpolasi linier untuk solusi yang Anda hitung sebelumnya (jadi hitung pada resolusi waktu yang baik). Namun, Anda dapat memaksa PyDSTool untuk melangkah tepat ke titik waktu yang diinginkan bahkan dengan integrator adaptif (meskipun itu mungkin tidak efisien dan menyebabkan ketidakakuratan). Tetapi dengan langkah waktu maks yang cukup kecil, interpolasi linier dan integrator cepat (Dopri terintegrasi) untuk sistem kedua berarti Anda akan baik-baik saja untuk sistem "biasa" seperti ini.
sumber