Question

10.16: Write a user-defined MATLAB function that solves a first-order ODE by applying the midpoint method...

10.16: Write a user-defined MATLAB function that solves a first-order ODE by applying the midpoint method (use the form of second-order Runge-Kutta method, Eqs(10.65),(10.66)). For function name and arguments use [x,y]=odeMIDPOINT(ODE,a,b,h,yINI). The input argument ODE is a name for the function that calculates dy/dx. It is a dummy name for the function that is imported into odeMIDPOINT. The arguments a and b define the domain of the solution, h is step size; yINI is initial value. The output arguments, x and y, are vectors with the x and y coordinates of the solution. Use the function odeMIDPOINT to solve the ODE in Problem 10.2. Write a MATLAB program in a script file that solves the ODE twice, once by using h=0.8 and once using h=0.1. The program should also plot exact solution (given in prob. 10.2 and two numerical solutions (all in same figure).10.2: first-order ODE: dy/dx=x-xy/2 from x=1 to x=3.4 with y(1)=1. Use h=0.8a) solve with Euler's explicit method.b) solve with modified Euler methodc) solve with classical fourth-order Runge-Kutta method. The analytical solution is y=2-e^((1-x^2)/4). In each part, calculate the error between the true solution and numerical solution at the points where the numerical solution is determined.

Homework Answers

Answer #1

MATLAB Script:

close all
clear
clc

ODE = @(x,y) x - x*y/2;
a = 1; b = 3.4; yINI = 1;

h = 0.8;
[x1, y1] = odeMIDPOINT(ODE, a, b, h, yINI);

h = 0.1;
[x2, y2] = odeMIDPOINT(ODE, a, b, h, yINI);

xx = a:0.01:b;
plot(xx, 2 - exp((1 - xx.^2)/4), 'linewidth', 2), hold on
plot(x1, y1, 'o-', x2, y2, 'o-'), xlabel('x'), ylabel('y')
legend('Exact Solution', 'h = 0.8', 'h = 0.1', 'location', 'northwest')

function [x, y] = odeMIDPOINT(ODE, a, b, h, yINI)
x = a:h:b;
y(1) = yINI;
for i = 1:length(x)-1
k1 = h*ODE(x(i), y(i));
k2 = h*ODE(x(i) + h/2, y(i) + k1/2);
y(i+1) = y(i) + k2;
end
end

Plot:

Know the answer?
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for?
Ask your own homework help question
Similar Questions
Given (dy/dx)=(3x^3+6xy^2-x)/(2y) with y=0.707 at x= 0, h=0.1 obtain a solution by the fourth order Runge-Kutta...
Given (dy/dx)=(3x^3+6xy^2-x)/(2y) with y=0.707 at x= 0, h=0.1 obtain a solution by the fourth order Runge-Kutta method for a range x=0 to 0.5
Solve the first-order differential equation by any appropriate method. (Enter your solution in the form F(x,...
Solve the first-order differential equation by any appropriate method. (Enter your solution in the form F(x, y) = C or y = F(x, C) where C is a needed constant.) y dx + (9x + 100y) dy = 0
Use C++ in Solving Ordinary Differential Equations using a Fourth-Order Runge-Kutta of Your Own Creation Assignment:...
Use C++ in Solving Ordinary Differential Equations using a Fourth-Order Runge-Kutta of Your Own Creation Assignment: Design and construct a computer program in C++ that will illustrate the use of a fourth-order explicit Runge-Kutta method of your own design. In other words, you will first have to solve the Runge-Kutta equations of condition for the coefficients of a fourth-order Runge-Kutta method.   See the Mathematica notebook on solving the equations for 4th order RK method.   That notebook can be found at...
The indicated function y1(x) is a solution of the given differential equation. Use reduction of order,...
The indicated function y1(x) is a solution of the given differential equation. Use reduction of order, to find a second solution dx **Please do not solve this via the formula--please use the REDUCTION METHOD ONLY. y2(x)= ?? Given: y'' + 2y' + y = 0;    y1 = xe−x
Write a MATLAB function and test bench script code to solve the above simple RL/RC circuits...
Write a MATLAB function and test bench script code to solve the above simple RL/RC circuits by following the instructions noted below. The input signal and impulse response generation should be done in the function. The test bench script should be used only to call the function and for signal plotting purposes. No plotting should be done inside the function itself. Name your function L2_C Instructions: Input voltage ,x(t), can be AC or DC. Consider a variable ‘w1’ which can...
ADVERTISEMENT
Need Online Homework Help?

Get Answers For Free
Most questions answered within 1 hours.

Ask a Question
ADVERTISEMENT
Active Questions
  • POWERSHELL: Create a hash table with the following fields containing appropriate values: (1) Product name Price...
    asked 3 minutes ago
  • IN PYTHON Add a while loop to this code so that it will replay the Game...
    asked 13 minutes ago
  • Build the subnetting tables for the following data (Classful addressing): IP: 192.44.82.16 Mask:255.255.255.192
    asked 21 minutes ago
  • If a future stream of payments is delayed, then the present value of that future stream...
    asked 27 minutes ago
  • Assume the random variable X is normally distributed with mean u=55 and standard deviation sigmaσequals=7. Compute...
    asked 27 minutes ago
  • John knows that monthly demand for his product follows a normal distribution with a mean of...
    asked 44 minutes ago
  • No one theory can account for all crimes. which theory of crime causation do you think...
    asked 54 minutes ago
  • Based on the below data: Customer1:Bread,Cereals,Milk Customer2:Tomatoes,Eggs Customer3:Pork,Bread,Milk Customer4:Sugar,Tomatoes,Pork,Bread Customer5:Vinegar Customer6:Eggs,Milk,Cereals,Sugar,Pork Customer7:Eggs,Milk,Vinegar Customer8:Sugar,Pork explain h
    asked 56 minutes ago
  • Pleas write a program that checks if any array of string is a plaindrome required input:...
    asked 1 hour ago
  • A parallel-plate capacitor with plates of area 720 cm2 is charged to a potential difference V...
    asked 1 hour ago
  • Develop an algorithm and a program in C that asks the user to enter a positive...
    asked 1 hour ago
  • The principal of Paul Revere High School bragged that his 2016 graduating class of 1500 students...
    asked 1 hour ago