Math 2280-2 Problem 4.3.10 Invoke some packages that are needed with(DEtools): Define the slope function f := (t,x) -> Matrix([[1., 2.],[1., 0.]]).x + Vector([0.,exp(-t)]); Zio2JEkidEc2IkkieEdGJUYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlLCYtSSIuRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliR0YlNiQtSSdNYXRyaXhHRi02IzckNyQkIiIiIiIhJCIiI0Y4NyRGNiRGOEY4OSVGNy1JJ1ZlY3RvckdGLTYjNyRGPC1JJGV4cEdGLTYjLCQ5JCEiIkY3RiVGJUYl xtrue:= t-> (1/9)*Vector([2*exp(2*t) - 2*exp(-t) - 6*t*exp(-t),exp(2*t) - exp(-t) + 6*t*exp(-t)]); Zio2I0kidEc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlLCQtSSdWZWN0b3JHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHRiU2IzckLCgtSSRleHBHRiw2IywkOSQiIiNGNy1GMzYjLCRGNiEiIiEiIyomRjYiIiJGOEY+ISInLChGMkY+RjhGO0Y9IiInI0Y+IiIqRiVGJUYl Initial condition x0:=Vector([0,0]); LSZJJ1ZlY3Rvckc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkc2IjYjSSdjb2x1bW5HRig2Iy9JJCVpZEdGKCIpO1lqOQ==
<Text-field style="Heading 1" layout="Heading 1">Calculation with n=10</Text-field> Setting up some data structures for the iterations t0:=0.; tn:=1.; n :=10; h := (tn-t0)/n; xvals := Vector(n+1): tvals := Vector(n+1): xvals[1]:=x0: tvals[1]:=t0: JCIiIUYj JCIiIiIiIQ== IiM1 JCIrKysrKzUhIzU= RK4 using vectors for i from 1 to n do x := xvals[i]: t := tvals[i]: k1:= f(t,x): # left hand slope k2:= f(t+h/2,x+h*k1/2): # midpoint slope: first approx. k3:= f(t+h/2,x+h*k2/2): # midpoint slope: second approx. k4:= f(t+h,x+h*k3): # right hand slope approx. k:=(k1+2*k2+2*k3+k4)/6: # Simpson's integration rule xvals[i+1]:= x + h*k: # improved Euler update tvals[i+1]:= t+h: # increase x end do: This is the approximation to x(1) print(tvals[n+1],xvals[n+1],xtrue(tvals[n+1])); NiUkIisrKysrNSEiKi0mSSdWZWN0b3JHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2I0knY29sdW1uR0YsNiMvSSQlaWRHRiwiKTtBMDstRic2Iy9GMSInQ0t4
<Text-field style="Heading 1" layout="Heading 1">Calculation with n=20</Text-field> Setting up some data structures for the iterations t0:=0.; tn:=1.; n :=20; h := (tn-t0)/n; xvals := Vector(n+1): tvals := Vector(n+1): xvals[1]:=x0: tvals[1]:=t0: JCIiIUYj JCIiIiIiIQ== IiM/ JCIrKysrK10hIzY= RK4 using vectors for i from 1 to n do x := xvals[i]: t := tvals[i]: k1:= f(t,x): # left hand slope k2:= f(t+h/2,x+h*k1/2): # midpoint slope: first approx. k3:= f(t+h/2,x+h*k2/2): # midpoint slope: second approx. k4:= f(t+h,x+h*k3): # right hand slope approx. k:=(k1+2*k2+2*k3+k4)/6: # Simpson's integration rule xvals[i+1]:= x + h*k: # improved Euler update tvals[i+1]:= t+h: # increase x end do: This is the approximation to x(1) print(tvals[n+1],xvals[n+1],xtrue(tvals[n+1])); NiUkIisrKysrNSEiKi0mSSdWZWN0b3JHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2I0knY29sdW1uR0YsNiMvSSQlaWRHRiwiKVtWKEgiLUYnNiMvRjEiKFs3SSQ=
<Text-field style="Heading 1" layout="Heading 1">Calculation of the true solution using Maple</Text-field> This part of the code confirms there is a typo in the books xtrue. unassign('x'); unassign('t'); sys:={diff(x(t),t)=x(t)+2*y(t), diff(y(t),t)=x(t)+exp(-t)}; PCQvLUklZGlmZkclKnByb3RlY3RlZEc2JC1JInhHNiI2I0kidEdGKkYsLCZGKCIiIi1JInlHRipGKyIiIy8tRiU2JEYvRiwsJkYoRi4tSSRleHBHNiRGJkkoX3N5c2xpYkdGKjYjLCRGLCEiIkYu dsolve(sys union {x(0)=0,y(0)=0}); PCQvLUkieEc2IjYjSSJ0R0YmLCgtSSRleHBHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHRiY2IywkRigiIiMjRjEiIiotRis2IywkRighIiIjISIjRjMqJkYoIiIiRjRGOyNGOSIiJC8tSSJ5R0YmRicsKEYqI0Y7RjNGNCNGN0YzRjojRjFGPQ== xtrue(t)[1]- (-(2/9)*exp(-t)+(2/9)*exp(2*t)-(2/3)*t*exp(-t)); IiIh xtrue(t)[2] - (-(1/9)*exp(-t)+(1/9)*exp(2*t)+(2/3)*t*exp(-t));
TTdSMApJNVJUQUJMRV9TQVZFLzE0NjM0NjE2WColKWFueXRoaW5nRzYiNiJbZ2whIyUhISEiIyIjIiIhRidGJg==TTdSMApJNVJUQUJMRV9TQVZFLzE2MDUyMjE2WColKWFueXRoaW5nRzYiNiJbZ2wnIyUhISEiIyIjM0ZGNTBBMjRGMUVERURFMDNGRjA2N0U3ODhCMTEwRjRGJg==TTdSMApJM1JUQUJMRV9TQVZFLzc3MzIyNFgqJSlhbnl0aGluZ0c2IjYiW2dsJyMlISEhIiMiIzNGRjUwQTQ2NUY2OTZENDMzRkYwNjdGOEJEM0JDRDE0RiY=TTdSMApJNVJUQUJMRV9TQVZFLzEyOTc0MzQ4WColKWFueXRoaW5nRzYiNiJbZ2wnIyUhISEiIyIjM0ZGNTBBNDQxNTdFMDIwQzNGRjA2N0Y3OTBENTY4RjdGJg==TTdSMApJNFJUQUJMRV9TQVZFLzMzMDEyNDhYKiUpYW55dGhpbmdHNiI2IltnbCcjJSEhISIjIiMzRkY1MEE0NjVGNjk2RDQzM0ZGMDY3RjhCRDNCQ0QxNEYm