Bir ODE'nin sert olup olmadığını sayısal olarak belirlemek için açık bir zaman adımlama şeması kullanabilir miyim?


10

Bir ODE'm var:

u'=-1000u+sbenn(t)
u(0)=-11000001

Bu özel ODE'nin analitik olarak sert olduğunu biliyorum. Ayrıca, açık (ileri) bir zaman adımlama yöntemi (Euler, Runge-Kutta, Adams, vb.) Kullanırsak, zaman adımı çok büyükse yöntemin çok büyük hatalar döndürmesi gerektiğini de biliyorum. İki sorum var:

  1. Hata terimi için analitik bir ifade mevcut olmadığında veya türetilebildiğinde, genel olarak ODE'lerin belirlenmesi bu şekilde mi gerçekleşir?

  2. Genel olarak, ODE sert olduğunda, "yeterince küçük" bir zaman çizelgesini nasıl belirlerim?


Açık yöntemleri kullanarak sertliği tespit etmek için standart yöntemler vardır. Bu yorumu buraya yerleştiriyorum çünkü aşağıda daha ayrıntılı cevabımı bulmak zor olabilir.
David Ketcheson

Yanıtlar:


6

Sorularınızı cevaplamak için:

  1. Bildiğim kadarıyla, uygulamada, açık yöntemler , doğru sonuçlar elde etmek için zaman ölçeğinize göre olağanüstü küçük zaman adımları gerektiriyorsa ( bir ODE'nin sert olmasının ne anlama geldiğine dair bu soruya verilen yanıtlara bakın ), tüm niyetler ve amaçlar, sorun sert. Adım boyutuyla ilgili gereksinimleri belirlemek için, uzmanlar tarafından yazılan birçok kütüphaneden birine (MATLAB paketi bir örnek, ayrıca SUNDIALS, VODE, DASPK, DASSL, LSODE, vb.), Uyarlanabilir zaman adım sezgiselliğine sahiptir. SUNDIALS el kitabı, pratikte kullanılan kuralların bir örneğini sunmak için paketin aldığı zaman adımlarının boyutunu belirlemek için kullandıkları karar kurallarını açıklar.

  2. Yine, pratikte uyarlamalı zaman adımlamalı bir kütüphane kullanırım, çünkü bunu yapmak daha etkilidir. Bununla birlikte, bir yöntemi kendiniz kodluyorsanız, sabit adım boyutları kullanarak, büyük salınımlar veya çözümünüzün "patladığını" fark ederseniz, zaman adımınızın çok büyük olduğundan ve onu azalttığınızdan şüphelenirsiniz. Oldukça iyi davranılmış bir sayısal çözüm elde edene kadar tekrarlayın. Ascher ve Petzold ve Hairer ve Wanner gibi ders kitaplarında bu fenomenin iyi örnekleri vardır.


9

Buna bakmanın daha iyi bir yolu, sert bir sorun için, herhangi bir kararlı açık hesaplamanın , gerekli hata toleransından çok daha küçük bir hataya yol açmasıdır .

Özellikle gömülü Runge-Kutta çiftleri olmak üzere açık şemaları kullanarak sertliği otomatik olarak tespit etmek için birçok iyi yöntem vardır. Örneğin bakınız:

Faleichik'in ikinci örneğinde, adım boyutu küçüldükçe, kararlı zaman aralığı eşiği geçilirken hatada tipik bir istenen toleransın çok altındaki seviyelerde ani dramatik bir azalma görülecektir. Yani iyi bir hata tahmincisi gerçekten de sorunun sertliğini ortaya çıkaracaktır. İlk problemde, kararlı bir basamak ebadı ile elde edilen hata, sertlik olmadığını gösteren istenen tipik tolerans aralığında olacaktır.

Sonuç olarak, yeterince sıkı bir hata toleransı gerekiyorsa herhangi bir sorunun sertleşmediğini unutmayın.


2
Bunlar cevabınızı görmeden önce bağlantı kurmak üzere olduğum makalelerdi. +1, elbette. Şunu da :) Bu , bu ve son olarak bu . Bu kesinlikle iyi çalışılmış bir problem ...
JM

9

1. Sadece açık yöntemler uygulayarak sertliği sayısal olarak tespit edebilir miyiz?

  • [0,10]τ=1 τ

    resim açıklamasını buraya girin

    τ=0.1resim açıklamasını buraya girin

    τ=0.1[0,10]

    Peki, sorun sert mi? Cevap HAYIR ! Çözeltinin salınımlarını doğru bir şekilde üretmek için burada küçük bir adım boyutu gereklidir .

    y'(t)=-2marulπt,y(0)=1.

  • τ=1

    resim açıklamasını buraya girin

    τ=0.1

    resim açıklamasını buraya girin

    τ=0.1[0,10]

    Bu sorun sert mi? EVET ! Çok yavaş değişen çözümü yeniden üretmek için çok küçük adımlar attık. Bu mantıksız! Buradaki zaman adımının büyüklüğü, açık Euler'in kararlılık özellikleri ile sınırlıdır .

    Bu problem

    y'(t)=-2y(t)+günaht/2,y(0)=1.


Sonuç: Sertlik ve saptama hataları hakkında bilgi, sertliği tespit etmek için yeterli değildir. Ayrıca elde edilen çözüme de bakmalısınız. Yavaşça değişiyorsa ve adım boyutu çok küçükse, sorunun büyük olasılıkla sert olması muhtemeldir. Çözüm hızla salınıyorsa ve hata tahmin tekniğinize güveniyorsanız, bu sorun sert değildir.


2. Sert problemin açık yöntemle entegre edilmesine izin veren maksimum adım boyutu nasıl belirlenir?

Otomatik adım kontrolü ile bazı kara kutu açık çözücü kullanıyorsanız, yapmanız gereken bir şey yoktur: yazılım gerekli adım boyutunu uyarlamalı olarak alacaktır.

[Λ,0]Λ=-1000

[-2,0]τΛτ

τ2|Λ|.

τ1|Λ|,
1/|Λ|<τ2/|Λ|

Tabii ki böyle bir analiz çoğunlukla bilinen spektrumlu doğrusal problemler için uygulanabilir. Daha pratik sorunlar için, sertlik tespiti için sayısal yöntemlere güvenmeliyiz (diğer cevaplardaki referanslara ve yorumlara bakınız).


David'in bağlantılı olduğu bazı makalelerde belirtildiği gibi, baskın özdeğerleri (uygun şekilde değiştirilmiş) bulmak için kullanılan güç yöntemi, Jacobian tabanlı sertlik dedektörleri için olağan bir seçimdir.
JM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.