Clear Filters
Clear Filters

how can i solve eps y''+ mu a(x) y'-b(x)y=f(x) with boundary condition y(0)=y(1)=0

2 views (last 30 days)
i want to know the function code for reaction convection diffusion equation in ode with two paremeter epsilon and mu
  1 Comment
Sam Chak
Sam Chak on 9 May 2024
Are you interested in learning how to code and then writing the function code yourself?
Or, would you prefer BVP experts in this forum to provide the full code with arbitrarily assigned values for the parameters eps, mu, a(x), b(x), and f(x)?
Clarifying this will help us determine the appropriate level of guidance to match your skill level.

Sign in to comment.

Answers (2)

sai charan sampara
sai charan sampara on 9 May 2024
Hello Dhayalan,
The equations of the above form can be solved by using "diff" and "dsolve" functions in MATLAB. The "diff" function is used to define the first and seconder order derivatives of "y". Then the equation and the initial conditions are defined and solved using "dsolve". Here is an example:
syms y(x)
ode = 2*x^2*diff(y,x,2)+3*x*diff(y,x)-y-x== 0;
cond1 = y(0) == 0;
cond2 = y(1) == 0;
conds = [cond1 cond2];
ySol(x) = dsolve(ode,conds)
ySol(x) = 

Areeba
Areeba on 14 May 2024
import numpy as np
from scipy.sparse import diags
from scipy.sparse.linalg import spsolve
def solve_rcd_equation(epsilon, mu, a, b, f, x_min, x_max, N):
# Discretization
dx = (x_max - x_min) / (N - 1)
x = np.linspace(x_min, x_max, N)
# Constructing the differentiation matrix
diagonals = [[epsilon/dx**2], [-(epsilon/dx**2 + mu*a(x)/2*dx)], [epsilon/dx**2 + mu*a(x)/2*dx - b(x)]]
D = diags(diagonals, [-1, 0, 1], shape=(N, N)).toarray()
# Boundary conditions
D[0, 0] = 1
D[0, 1] = 0
D[-1, -1] = 1
D[-1, -2] = 0
# Right-hand side
rhs = f(x)
rhs[0] = 0
rhs[-1] = 0
# Solve the system
y = spsolve(D, rhs)
return x, y
# Example functions for a, b, and f
def a(x):
return 1
def b(x):
return 1
def f(x):
return np.sin(np.pi * x)
# Parameters
epsilon = 0.1
mu = 0.5
x_min = 0
x_max = 1
N = 100
# Solve the equation
x, y = solve_rcd_equation(epsilon, mu, a, b, f, x_min, x_max, N)
# Plot the solution
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Solution of Reaction-Convection-Diffusion Equation')
plt.grid(True)
plt.show()

Community Treasure Hunt

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

Start Hunting!