Sytem of ODE with time varying coefficients in a csv file

2 visualizaciones (últimos 30 días)
Atharva Bhomle
Atharva Bhomle el 16 de Abr. de 2023
Comentada: Torsten el 16 de Abr. de 2023
I want to solve 2 simultaneous differential equations whose coefficients are dependent on temperature and solar irradiance whose data i have in a csv file. How should i model this to get the values of voltage and current?
Here the terms in differential equations are dependent on temperature and solar irradiance and are also dependent on the current values of voltage and current.
  3 comentarios
Atharva Bhomle
Atharva Bhomle el 16 de Abr. de 2023
Editada: Torsten el 16 de Abr. de 2023
here is the code currently i have written
i have solar irradiance and temperature data for every 5 min in a day
clc;
clear all;
close all;
filename='new.csv';
M=csvread(filename,1,2);
gt=linspace(1,287,287);
TT=linspace(1,287,287);
g=M(:,2);
T=M(:,1)+273;
t_values=linspace(1,287,287);
initial_conditions=[0.1; 0];
[tv, xv]=ode45(@(t,x) myODE(t, x, T, g, TT, gt), t_values, initial_conditions);
subplot(5,1,1);
plot(tv,xv(:,1));
xlabel("time");
ylabel("V");
subplot(5,1,2);
plot(tv,xv(:,2));
xlabel("time");
ylabel("I");
subplot(5,1,3);
plot(tv,xv(:,1).*xv(:,2));
xlabel("time");
ylabel("Power");
subplot(5,1,4);
plot(xv(:,1),xv(:,2));
xlabel("V");
ylabel("I");
subplot(5,1,5);
plot(xv(:,1),xv(:,1).*xv(:,2));
xlabel("V");
ylabel("Power");
function Dx = myODE(t, x, T, g, TT, gt)
%defining constants
C=940e-06;
L=2.5e-3;
voc=21.24;
A=1.6;
B=1.6;
k=1.3805e-23;
q=1.6e-19;
rs=0.051;
rsh=333.36;
r=5.76;
iscr=2.55;
ki=0.0017;
ego=1.1;
ns=36;
pmp=37.26;
T = interp1(TT, T, t);
g = interp1(gt, g, t);
iph=(iscr+ki*(T-298))*(g);
irs= iscr/(exp((q*voc)/(ns*k*A*T))-1);
io= irs*((T/298)^3)*exp(((q*ego)/(B*k))*((1/298)-(1/T)));
id= io*(exp((q*(x(1)+x(2)*rs))/(A*k*T))-1);
Dx=[(1/C)*(iph-id-((x(1)+x(2)*rs)/rsh)); ...
(1/L)*(x(1)+x(2)*rs-x(2)*r-(((x(2)^2)*r)/pmp))];
end
Torsten
Torsten el 16 de Abr. de 2023
Your usage of interp1 is wrong. Look up the documentation.
From the arrays g and T, you must retrieve the values at time instant t.
This works like
g_actual_time = interp1(Time,g,t)
T_actual_time = interp1(Time,T,t)
So you need an array Time that contains the times when g and T were measured.
What the arrays gt and TT are good for: I don't know.
If you are uncertain about how to proceed, take a look at the example "ODE with Time-Dependent Terms" under

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by