Apakah normal untuk mendapatkan solusi yang berbeda dengan metode ODE yang berbeda di MATLAB simulink?


4

Saya membuat diagram blok menggunakan simulink. Ketika saya menyelesaikannya dengan ode45 dan ode23 itu memberi saya grafik yang berbeda. Apakah ini normal? Haruskah saya menggunakan yang benar?

m1=1.3608;
m2=0.096;
r=0.0592;
I2=0.0002175;
k1=186.3;
g=9.81;

Berikut modelnya:

masukkan deskripsi gambar di sini

dan solusi ode45:

masukkan deskripsi gambar di sini

Saya tidak dapat memposting solusi ode23 tetapi sangat berbeda.


1
Mengapa Anda tidak dapat memposting solusi ode23? Apa bedanya? Parameter solver apa yang Anda gunakan dalam setiap kasus?
am304

2
Jawabannya adalah tidak . Jika Anda mendapatkan solusi yang berbeda, maka Anda tidak dapat mempercayai salah satu dari itu. Anda kemungkinan besar perlu mengatur parameter langkah-waktu menjadi lebih kecil.
Chris Mueller

2
Karena solusi dihitung secara numerik, perbedaan kecil dapat ada antara solusi saat menggunakan solver yang berbeda atau ketika menggunakan solver yang sama tetapi dengan pengaturan solver yang berbeda. Tetapi solusinya seharusnya tidak berbeda secara fundamental. Dalam kasus terakhir, Anda mungkin menggunakan pengaturan solver atau solver yang tidak tepat.
Karlo

1
Apa yang Anda miliki di sini terlihat kaku. Tampak bagi saya bahwa pemecah bergantian antara 2 solusi yang mungkin.
joojaa

Periksa parameter fungsi ode45 dan ode23. Mereka mungkin menggunakan kondisi awal yang berbeda.
leCrazyEngineer

Jawaban:


1

pemecah ode semuanya berbeda. Saya baru saja membandingkan beberapa pemecah ode waktu-tetap dan variabel-waktu-langkah, dengan kondisi awal yang sama, dengan model yang sama. Ringkasan: Mereka semua memberikan solusi yang berbeda, terkadang berbeda secara mendasar.

Dokumentasi Matlab / Simulink memberikan garis besar pemilihan pemecah yang paling berguna (bukan yang TERBAIK) untuk aplikasi yang sedang dipertimbangkan.

Pilih pemecah ODE

Halaman Jawaban Matlab

Pohon keputusan untuk memilih pemecah ODE

tentang persamaan diferensial biasa

Ide dasarnya adalah:

  1. mulai dengan pemecah langkah-waktu variabel (misalnya, ode45)
  2. jika kinerja solver tidak seperti yang diinginkan (terlalu lama untuk menghitung timestep), mulailah dengan metode yang paling sederhana (ode1 Euler) dan secara iteratif coba solusi dengan urutan lebih tinggi sampai Anda tiba pada akurasi yang dapat diterima.

Jika Anda tidak memiliki kendala desain seperti menggunakan pemecah ode waktu tetap, melakukan yang terbaik yang Anda mampu (ode45?) Akan menjadi ide terbaik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.