ODE(1) GNU Plotting Utilities ODE(1)

ode - حل عددی معادلات دیفرانسیل معمولی

ode [ options ] [ file ]

ode ابزاری است که مسئله‌ی مقدار اولیه را برای دستگاه مشخصی از معادلات دیفرانسیل معمولی مرتبه اول، به روش انتگرال‌گیری عددی حل می‌کند. سه طرح انتگرال‌گیری عددی مجزا در دسترس است: Runge-Kutta-Fehlberg (پیش‌فرض)، Adams-Moulton، و Euler. طرح‌های Adams-Moulton و Runge-Kutta با اندازه گام تطبیقی در دسترس هستند.

عملکرد ode توسط برنامه‌ای مشخص می‌شود که به زبان ورودی آن نوشته شده است. این برنامه صرفاً فهرستی از عبارت‌ها برای مشتق‌های متغیرهایی است که باید انتگرال‌گیری شوند، به همراه چند دستور کنترلی. چند نمونه در بخش مثال‌ها (EXAMPLES) ارائه شده است.

دستور ode برنامه را از فایل مشخص‌شده می‌خواند، یا اگر نام فایلی داده نشده باشد، از ورودی استاندارد می‌خواند. در صورت خواندن از ورودی استاندارد، ode هنگامی که یک تک‌نقطه را به تنهایی در یک خط ببیند، خواندن را متوقف کرده و خارج می‌شود.

در هر گام زمانی، مقادیر متغیرهای تعیین‌شده در برنامه در خروجی استاندارد نوشته می‌شوند. بنابراین جدولی از مقادیر تولید خواهد شد که هر ستون آن روند تغییرات یک متغیر را نشان می‌دهد. اگر فقط دو ستون وجود داشته باشد، خروجی را می‌توان با لوله به graph(1) یا یک برنامه رسم نمودار مشابه هدایت کرد.


خواندن ورودی از file پیش از خواندن از ورودی استاندارد. این گزینه پس از خواندن قطعه‌برنامه‌ای که دستگاه معادلات دیفرانسیل را تعریف می‌کند، امکان کار تعاملی را فراهم می‌سازد.


هنگام چاپ نتایج عددی، از prec رقم با‌معنی استفاده می‌کند (پیش‌فرض ۶ است). اگر این گزینه مشخص شود، قالب چاپ نماد علمی خواهد بود.

چاپ یک خط عنوان در ابتدای خروجی، که نام متغیرها را در هر ستون مشخص می‌کند. اگر این گزینه مشخص شود، قالب چاپ نماد علمی خواهد بود.

گزینه‌های زیر طرح انتگرال‌گیری عددی را مشخص می‌کنند. تنها یکی از سه گزینه اساسی -R، -A، -E می‌تواند مشخص شود. پیش‌فرض -R (Runge-Kutta-Fehlberg) است.


استفاده از الگوریتم Runge-Kutta-Fehlberg مرتبه پنجم، با اندازه گام تطبیقی، مگر اینکه یک اندازه گام ثابت مشخص شده باشد. هنگامی که اندازه گام ثابتی مشخص شود و تحلیل خطایی درخواست نشده باشد، طرح کلاسیک Runge-Kutta مرتبه چهارم به کار گرفته می‌شود.

استفاده از یک طرح پیش‌بین-تصحیح‌کننده Adams-Moulton مرتبه چهارم، با اندازه گام تطبیقی، مگر آن‌که یک اندازه گام ثابت، stepsize، مشخص شده باشد. الگوریتم Runge-Kutta-Fehlberg برای عبور از نقاط «بد» (در صورت وجود) به کار می‌رود.

استفاده از یک طرح Euler سریع و ساده، با اندازه گام ثابت. مقدار پیش‌فرض stepsize برابر 0.1 است. برای کاربردهای جدی توصیه نمی‌شود.
در صورت مشخص شدن -E، گزینه‌های کران خطا -r و -e (به زیر مراجعه کنید) نمی‌توانند استفاده شوند.

استفاده از کران پایین hmin برای اندازه گام. طرح عددی اجازه نخواهد داد اندازه گام از hmin کمتر شود. پیش‌فرض این است که به اندازه گام اجازه داده شود تا حد محدودیت ماشین کاهش یابد، یعنی کمترین مقدار ممیز شناور با دقت مضاعف غیرصفر.
آرگومان اختیاری hmax، در صورت وجود، بیشینه مقداری را برای اندازه گام تعیین می‌کند. این گزینه برای جلوگیری از جهش سریع روتین عددی از روی ناحیه‌ای حائز اهمیت، سودمند است.


گزینه -r یک کران بالا برای خطای نسبی تک‌گام تعیین می‌کند. اگر گزینه -r استفاده شود، خطای نسبی تک‌گام در هر متغیر وابسته هرگز از rmax (که مقدار پیش‌فرض آن 10^-9 است) فراتر نخواهد رفت. در صورت وقوع این حالت، حل مسئله متوقف شده و پیام خطایی چاپ خواهد شد. اگر اندازه گام ثابت نباشد، اندازه گام به صورت «تطبیقی» کاهش خواهد یافت تا کران بالای خطای تک‌گام نقض نشود. بنابراین، انتخاب یک کران بالای کوچک‌تر برای خطای تک‌گام، موجب انتخاب اندازه‌گام‌های کوچک‌تر خواهد شد. یک کران پایین rmin نیز می‌تواند به صورت اختیاری تعیین شود تا زمان افزایش اندازه گام را پیشنهاد دهد (مقدار پیش‌فرض برای rmin برابر rmax/1000 است).

مشابه -r، اما به جای خطای نسبی، خطای مطلق تک‌گام را محدود می‌کند.

نادیده گرفتن سقف خطای تک‌گام، که به ode اجازه می‌دهد حتی در صورت تجاوز از این سقف به کار خود ادامه دهد. این امر ممکن است منجر به خطاهای عددی بزرگی شود.

چاپ فهرستی از گزینه‌های خط فرمان و خروج.
چاپ شماره نسخه ode و بسته ابزارهای ترسیم (plotting utilities)، و خروج.

اکثراً خودتوضیح هستند. بزرگ‌ترین استثنا “syntax error” است که به معنای خطای گرامری است. پیام‌های خطای زبان به این شکل هستند:

ode: nnn: message...

که در آن «nnn» شماره خط ورودی دارای خطا است. اگر گزینه -f استفاده شده باشد، عبارت «(file)» پس از «nnn» برای خطاهای رخ داده درون فایل قرار می‌گیرد. متعاقباً، زمانی که ode خواندن ورودی استاندارد را آغاز کند، شماره خطوط دوباره از ۱ شروع می‌شوند.

هیچ تلاشی برای بازیابی موفقیت‌آمیز از خطاهای نحوی در ورودی انجام نمی‌شود. با این حال، تلاشی ناچیز برای همگام‌سازی دوباره صورت می‌گیرد تا بیش از یک خطا در یک پایش قابل یافتن باشد.

خطاهای زمان اجرا پیامی را در توصیف مشکل صادر می‌کنند و حل مسئله رها می‌شود.

برنامه

y' = y
y = 1
print t, y
step 0, 1

مسئله مقدار اولیه‌ای را حل می‌کند که جواب آن y=e^t است. هنگامی که ode این برنامه را اجرا می‌کند، دو ستون از اعداد را در خروجی استاندارد خواهد نوشت. هر خط مقدار متغیر مستقل t، و متغیر y را هم‌زمان با گام برداشتن t از 0 به 1 نشان می‌دهد.

نمونه‌ای پیشرفته‌تر به این صورت خواهد بود:

sine' = cosine
cosine' = -sine
sine = 0
cosine = 1
print t, sine
step 0, 2*PI

این برنامه یک مسئله مقدار اولیه را برای دستگاهی شامل دو معادله دیفرانسیل حل می‌کند. این مسئله مقدار اولیه در واقع توابع سینوس و کسینوس را تعریف می‌کند. این برنامه دستگاه را در طول یک دوره تناوب کامل گام‌بندی می‌کند.

ode توسط Nicholas B. Tufillaro (nbt@reed.edu) نوشته شده، و اندکی توسط Robert S. Maier (rsm@math.arizona.edu) بهبود یافته تا در مجموعه GNU plotting utilities ادغام شود.

“The GNU Plotting Utilities Manual”.

گزارش‌های باگ را به bug-gnu-utils@gnu.org ارسال کنید.

Dec 1998 FSF