Dokumentasi beranda
Metode numerik untuk memecahkan persamaan diferensial biasa (ODE) dalam karat.
Untuk mulai menggunakan peti dalam suatu proyek, ketergantungan berikut harus ditambahkan dalam file cargo.toml proyek:
[ dependencies ]
ode_solvers = "0.5.0"
Kemudian, di file utama, tambahkan
use ode_solvers :: * ;
Metode integrasi numerik yang diimplementasikan dalam sistem multi-dimensi dukungan peti. Untuk menentukan dimensi sistem, nyatakan jenis alias untuk vektor negara. Misalnya
type State = Vector3 < f64 > ;
Representasi negara dari sistem didasarkan pada struktur svektor <T, d> yang didefinisikan dalam peti nalgebra. Untuk kenyamanan, ode-solvers mengekspor kembali enam jenis untuk bekerja dengan sistem dimensi 1 hingga 6: vektor1 <t>, ..., vektor6 <T>. Untuk dimensi yang lebih tinggi, pengguna harus mengimpor peti nalgebra dan mendefinisikan svektor <t, d> di mana parameter tipe kedua svektor adalah dimensi. Misalnya, untuk sistem 9 dimensi, orang akan memiliki:
type State = SVector < f64 , 9 > ;
Alternatif, seseorang juga dapat menggunakan struktur dvektor <T> dari peti nalgebra sebagai representasi negara. Saat menggunakan dvektor <T>, jumlah baris dalam dvektor <T> mendefinisikan dimensi sistem.
type State = DVector < f64 > ;
Sistem ODE urutan pertama harus didefinisikan dalam metode system
System<T, V>
sifat. Biasanya, sifat ini didefinisikan untuk struktur yang berisi beberapa parameter model. Tanda tangan System<T, V>
sifatnya adalah:
pub trait System < T , V > {
fn system ( & self , x : T , y : & V , dy : & mut V ) ;
fn solout ( & self , _x : T , _y : & V , _dy : & V ) -> bool {
false
}
}
Di mana system
harus berisi ODE: Argumen kedua adalah variabel independen (biasanya waktu), yang ketiga adalah vektor yang mengandung variabel dependen, dan yang keempat berisi turunan dari Y sehubungan dengan x. solout
metode dipanggil setelah setiap langkah integrasi yang berhasil dan menghentikan integrasi setiap kali dievaluasi sebagai benar. Implementasi metode itu opsional. Lihat contoh untuk detail implementasi.
Metode Runge-Kutta eksplisit berikut diimplementasikan dalam versi peti saat ini:
Metode | Nama | Memesan | Pesanan Perkiraan Kesalahan | Urutan keluaran yang padat |
---|---|---|---|---|
Runge-Kutta 4 | RK4 | 4 | N/a | N/a |
Dormand-Prince | DROGTER5 | 5 | 4 | 4 |
Dormand-Prince | DOP853 | 8 | (5, 3) | 7 |
Metode -metode ini didefinisikan dalam modul RK4, DROGOM, dan DOP853. Langkah pertama adalah membawa modul yang diinginkan ke dalam lingkup:
use ode_solvers :: dopri5 :: * ;
Kemudian, suatu struktur dibuat menggunakan metode new
atau from_param
dari struct yang sesuai. Lihat dokumentasi API untuk deskripsi argumen input.
let mut stepper = Dopri5 :: new ( system , x0 , x_end , dx , y0 , rtol , atol ) ;
Sistem ini terintegrasi menggunakan
let res = stepper . integrate ( ) ;
dan hasilnya diambil
let x_out = stepper . x_out ( ) ;
let y_out = stepper . y_out ( ) ;
Lihat beranda untuk lebih jelasnya.