Filter löschen
Filter löschen

How to solve a system of integro differential equation using numerical method?

12 Ansichten (letzte 30 Tage)
integro differential equation

Akzeptierte Antwort

Torsten
Torsten am 24 Dez. 2021
Bearbeitet: Torsten am 24 Dez. 2021
Simple.
Solve instead
dx/dt = t*x(t) + exp(t)*u(t), x(0) = 1
dy/dt = t^3*x(t) + exp(-t)*v(t), y(0) = 1
du/dt = exp(-t)*y(t), u(0) = 0
dv/dt = exp(t)*sin(x(t)), v(0) = 0
using one of the ODE solver from the MATLAB ODE suite, e.g. ODE15S,ODE45.
  3 Kommentare
Torsten
Torsten am 24 Dez. 2021
Bearbeitet: Torsten am 24 Dez. 2021
This works for your IDE from above, not for IDEs in general.
Do you really expect someone out there will write a code for you for the solution of general systems of IDEs ?
I think this would take some weeks or even months of work.
Hint for the du/dt and dv/dt terms:
What do you get if you differentiate
integral_{0}^{t} exp(-s)*y(s) ds
and
integral_{0}^{t} exp(s)*sin(x(s)) ds
with respect to t ?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Hewa selman
Hewa selman am 28 Dez. 2021
function mysysfun
clc;
clear;
t = 0:0.1:10;
%%%t = [0 5];
initial_Y1 = 1;
initial_Y2 = 1;
initial_U1 = 0;
initial_U2 = 0;
%%%Y0 = [initial_Y1 initial_Y2];
Y0 = [initial_Y1 initial_Y2 initial_U1 initial_U2];
[t, Y] = ode45 (@ mysys, t, Y0);
%%
%figure;
plot(t,Y(:,1),'r');
xlabel('t1'); ylabel('Y1');
title('solving the 1st order differential equations Y(1,1)')
figure;
plot(t,Y(:,2),'g');
xlabel('t2'); ylabel('Y2');
title('solving the 1st order differential equations Y(2,1)')
figure;
plot(t,Y(:,1),'r')
grid on; hold on;
plot(t,Y(:,2),'g')
xlabel('Time of t1')
ylabel('Equation Y1')
title('solving the system of 1st order differential equations')
legend('Y(1,1)','Y(2,1)','Interpreter','latex');
%%
function dYdt = mysys(t,Y)
dYdt1_11=t+exp(t)*Y(2)+exp(t)*U(1);
dYdt2_21=exp(t)+cos(Y(1))+exp(t)*U(2);
dUdt3_31=exp(-t)*Y(2);
dUdt4_41=exp(t)*sin(Y(1));
%%%dYdt = [dYdt1_11; dYdt2_21];
dYdt = [dYdt1_11; dYdt2_21; dUdt3_31; dUdt4_41];
end
end
Hello Mr. Torsten. Could you help me for solve this code. I think ode45 is not suitable for solve this code. The system is integro differential eqyation.
with regards.

Torsten
Torsten am 28 Dez. 2021
Bearbeitet: Torsten am 28 Dez. 2021
function main
tspan = [0 10];
y0 = [1; 1; 0; 0];
[T,Y] = ode45(@fun,tspan,y0);
plot(T,[Y(:,1),Y(:,2)])
end
function dy = fun(t,y)
dy = zeros(4,1);
dy(1) = t*y(1) + exp(t)*y(3);
dy(2) = t^3*y(1) + exp(-t)*y(4);
dy(3) = exp(-t)*y(2);
dy(4) = exp(t)*sin(y(1));
end
This is the code for your original system of IDEs.
I don't know about the new system you wanted to solve with the code from above.
  2 Kommentare
Hewa selman
Hewa selman am 29 Dez. 2021
well. thank you Mr. Torsten.
Could i use the comlex functions instead of real functions in this code? Or I have to get the real and imaginary pars and next use your code.
Like this code
%% file imaginaryODE
function fv = imaginaryODE(t,yv)
y = yv(1) + 1i*yv(2);
yp = complexfun(t,y);
fv = [real(yp) ;imag(yp)];
end
y0 = 1 + 1i;
yv0 = [real(y0); imag(y0)];
tspan = [0 2];
y = yv(:,1) + 1i*yv(:,2);
[t,yv] = ode45(@imaginaryODE, tspan, yv0);
% and the file complexfun
function f = complexfun(t,y)
f = y.*t+2*1i;
I have to solve the complex integro differential equations and get the results.
Could you help me in this problem
with regards.
Torsten
Torsten am 29 Dez. 2021
Bearbeitet: Torsten am 29 Dez. 2021
Seems to work as expected:
function main
y0 = 1 + 1i;
z0 = [1 1];
tspan = [0 2];
[t,y] = ode45(@complexfun, tspan, [y0,z0]);
figure
plot(t,[real(y(:,1)),imag(y(:,1))])
figure
plot(t,[y(:,2),y(:,3)])
end
function f = complexfun(t,y)
f = zeros(3,1);
f(1) = y(1)*t+2*1i;
f(2) = y(2)*t;
f(3) = y(3)*t+2;
end

Melden Sie sich an, um zu kommentieren.


Hewa selman
Hewa selman am 3 Jan. 2022
Bearbeitet: Hewa selman am 3 Jan. 2022
HELLO MR. TORSTEN.
THANK YOU FOR SUPPORT.
I AM NOT UNDERSTANDING THE PLOT CLEARLY, SINCE THE INITIAL VALUE PLACES THE POINT(1,1) BUT IN FIGURE IT PLACES THE POINT (0,1). I THINK THE PLOT (PLOT 3D) IS MORE CLEAR AND I TRIED TO PLOT THE 3D ONE, BUT I AM NOT SURE TOO AS FOLLOSW
a = -2:0.1:2;
b = -2:0.1:2;
f = meshgrid(a,b);
surfc(a,b,abs(f))
WHERE, (a+bi) is complex number.
PLEADE HELP ME
WITH REGARDS.
  9 Kommentare
Torsten
Torsten am 21 Jan. 2022
I hope you took z'(t) into account in the derivative and the integral terms.

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by