MATLAB Answers

## How to solve first-order nonlinear differential equation where the solution is coupled with an integral?

Asked by Califfo

### Califfo (view profile)

on 3 Jul 2019
Latest activity Commented on by David Goodmanson

### David Goodmanson (view profile)

on 8 Jul 2019
Accepted Answer by David Goodmanson

### David Goodmanson (view profile)

I'm trying to solve this nonlinear ODE • where q is a nonlinear function, solution of ODE;
• represents the velocity and it is equal to: ;
• tis the time: • the over dot denotes the derivative with respect to time;
• the initial condition is λ is a degradation parameter of function q and it is equal to: The integral depends to the solution of ODE.
So I have written this code, but the solution is bad because there isn't degradation of q function
clc
clear
close all
tspan = [0 pi*5];
q0 = 0;
x=@(t)t.*sin(t);
xdot=@(t)t.*cos(t)+sin(t);
lambda = @(t,q) 1+0.01*integral(@(t)q*xdot(t),0,t,'ArrayValued',true);
qdot = @(t,q) xdot(t)*(1-(abs(q)*lambda(t,q)*(0.5+0.5*sign(xdot(t)*q))));
[t,q] = ode45(qdot, tspan, q0);
plot(x(t),q,'LineWidth',2)

#### 0 Comments

Sign in to comment.

## 1 Answer

Answer by David Goodmanson

### David Goodmanson (view profile)

on 4 Jul 2019
Edited by David Goodmanson

### David Goodmanson (view profile)

on 4 Jul 2019
Accepted Answer

Hi Califfo;
This may be in line with what you want. At least it's changing size It's based on the idea that you know not only qdot, but also lambdadot. That quanity is simply the integrand, .01*q*xdot, and you know that lambda has a starting value of 1. You can make a vector from [q, lambda], which I arbitrarily called z, and then use ode45..
tspan = [0 pi*10];
g0 = 0;
lam0 = 1;
z0 = [g0; lam0];
[t,z] = ode45(@fun, tspan, z0);
x = t.*sin(t);
plot(x,z(:,1))
function zdot = fun(t,z)
xdot = t*cos(t)+sin(t);
q = z(1);
lam = z(2);
qdot = xdot*(1-(abs(q))*(lam/2)*(1+ sign(xdot*q)));
lamdot = 0.01*q*xdot;
zdot = [qdot; lamdot]
end

Califfo

### Califfo (view profile)

on 4 Jul 2019
David it's perfect, thank you very much!!!
Probably I think I will write you if something is not quite clear to me.
David Goodmanson

### David Goodmanson (view profile)

on 8 Jul 2019
Yes, let me and the website know if there is anything that needs clarification.

Sign in to comment.