{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Define right hand side in u'=f(t,u)\n", "def f(t,u):\n", " return sin(u)-t*u" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Set initial time, initial value for u(0), final time, and stepsize \"h\".\n", "init_time = 0.0\n", "initu = 1.0\n", "finaltime = 5.0\n", "h = 0.1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Load in Euler's method subroutine, execute\n", "load('euler_method.sage')\n", "euler_results = euler_method(f,[init_time,initu],h,finaltime)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Load in improved Euler method subroutine, execute\n", "load('imp_euler.sage')\n", "impeuler_results = imp_euler(f,[init_time,initu],h,finaltime)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Load in RK4 routine, execute\n", "load('rk4_method.sage')\n", "rk4_results = rk4_method(f,[init_time,initu],h,finaltime)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Plot results for each solver\n", "p1 = line(euler_results,rgbcolor=[1,0,0],legend_label='Euler method')\n", "p2 = line(impeuler_results,rgbcolor=[0,1,0],legend_label='Improved Euler')\n", "p3 = line(rk4_results,rgbcolor=[0,0,0],legend_label='RK4')\n", "p = p1+p2+p3\n", "p.set_legend_options(loc='upper center');\n", "p.axes_labels(['$t$','$u(t)$'])\n", "show(p)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.2", "language": "sage", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 4 }