- Define the dependent variable y as h and the independent variable x as x.
- Define the initial conditions y(0) = h0 and z(0) = 0.
- Define the constants a, c, and L.
- Define the step size dx as a small positive value.
- Set up a loop to iterate over x values from 0 to L, with a step size of dx.
- Inside the loop, use the current values of y and z to calculate the derivatives dy/dx and dz/dx using the given differential equation.
- Use the fourth-order Runge-Kutta method to update the values of y and z at the next x value.
- Check if the current x value is equal to either 0 or L. If so, update the value of y at that boundary condition.
- Repeat the loop until the final x value is reached.

# solving a second order non linear differential equation using RK 4TH order method

18 views (last 30 days)

Show older comments

Differential equation : h d^2h/dx^2 + (dh/dx)^2 - dh/dx * tan(ax) + c - h * sec^2(ax) * a = 0

Boundary conditions: h(x=0)=h0 and h(x=L)=h0

Dependent variable: h

Independent variable: x

constants: a,c,L,h0

Method to be used : RK 4th order

please help me

let y = h and z = dh/dx=dy/dx,dz/dx = a * sec^2(ax) + (1/h) * (z * tan(ax) - z^2 - c) confused how to give boundary conditions

##### 6 Comments

### Answers (1)

Jack
on 3 Apr 2023

Here's an example code in MATLAB for solving the given differential equation using the RK4 method. Note that you need to define the constants and initial conditions before running the code.

% Define constants and initial conditions

a = 1;

c = 1;

L = 1;

h0 = 1;

N = 1000; % Number of grid points

x = linspace(0, L, N)';

dx = x(2) - x(1);

h = h0*ones(N, 1); % Initial guess for h

dhdx = zeros(N, 1); % Initial guess for dh/dx

% Define the function f(x, y) = [dy/dx, d^2y/dx^2]

f = @(x, y) [y(2); ...

(-y(2)^2 + y(2)*tan(a*x) - c + h0*sec(a*x)^2*a)/h0];

% Solve the differential equation using the RK4 method

for n = 1:10000

k1 = dx*f(x, [h, dhdx]);

k2 = dx*f(x + dx/2, [h + k1(1:N)/2, dhdx + k1(N+1:end)/2]);

k3 = dx*f(x + dx/2, [h + k2(1:N)/2, dhdx + k2(N+1:end)/2]);

k4 = dx*f(x + dx, [h + k3(1:N), dhdx + k3(N+1:end)]);

h = h + (k1(1:N) + 2*k2(1:N) + 2*k3(1:N) + k4(1:N))/6;

dhdx = dhdx + (k1(N+1:end) + 2*k2(N+1:end) + 2*k3(N+1:end) + k4(N+1:end))/6;

end

% Plot the solution

plot(x, h);

xlabel('x');

ylabel('h');

title('Solution of the differential equation');

##### 2 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!