¿Cómo integro una función y grafico el resultado en Matlab?

-1

Necesito trazar una función que tenga una integración interna, pero no sé cómo hacerlo en Matlab.

Función:

\ $ SOC (t) = SOC (0) - \ dfrac {1} {Q} \ int_ {0} ^ {t} i_2 (t) dt \ $

el tiempo está en horas, la corriente está en amperios. Así que tengo:

Corriente constante: 10A
Q: 68.6 Ah
h = 6.86
SOC (0) = 1

    
pregunta SrnLord

4 respuestas

1

Parece que está intentando calcular el estado de carga (SOC) de una batería.

En este problema en particular, ni siquiera necesita preocuparse por la integración porque la corriente es una función constante (\ $ i_ {bat} = 10 \ text {A} \ $) - por lo que la integral se convierte en:

$$ \ int_0 ^ ti_ {bat} dt = 10t | _0 ^ t $$

Eso significa que, en realidad, estás tratando de encontrar:

$$ SOC (t) = SOC (0) - \ dfrac {10t} {Q} \ tag1 $$

Luego, en t = 6.86h, deberías poder encontrar la respuesta (ya tienes valores para todas las incógnitas).

Observe que el último término en la ecuación anterior tiene que satisfacer \ $ \ bigg | \ dfrac {10t} {Q} \ bigg | \ leq1 \ $ y esto se debe a que el SOC máximo es 100% (o 1 como usted) tenerlo - \ $ SOC (0) = 1 \ $). Este problema muestra una descarga de batería desde el 100% de SOC.

La ecuación (1) debería ser fácil de trazar en matlab.

Si por alguna razón, \ $ i_ {bat} \ $ no era una función constante y no necesita usar la integral, puede usar integral (haga clic aquí) en matlab: le asigna la función en 't' y los límites de integración.

    
respondido por el Big6
2

No tengo Matlab, pero en Octave puede escribir la integración discreta genérica como:

y[n] = y[n-1] + k*x[n]

donde x es la entrada, y es la salida y k es el factor de escala opcional. Aquí está el resultado de la integración de sin(2*pi.*[0:0.1:10]) , con cero condiciones iniciales y factor de escala de unidad:

Si no me equivoco, hay una función disponible. Esto debería ser suficiente para que comiences.

    
respondido por el a concerned citizen
1

Te integras con las funciones sum () y quad (), necesitarás construir un vector de tiempo como t = 0: 0.001: maxtime;
ya que su función es simplemente 10, podría construir un vector actual de i = ones (tamaño (t)) * 10; luego suma a lo largo del tiempo intcurrent = suma (i (1: longitud de tiempo); donde la duración del tiempo es la cantidad de tiempo que tienes. Esto no es tan bueno como una solución continua.

    
respondido por el laptop2d
0

Según mi comprensión de tu pregunta:

Límite inferior = 0

Límite superior = 6.86

i (t) = 10

Q = 68.6

aquí está el código que se me ocurrió

% define the integrand
y = sym(10);
% integral
I = int(y,0,6.86);
% initial conidition
SOC0 = 1;
% Q value
Q = 68.6;
% answer
SOC = SOC0 - (1/Q)*I

espero que esto ayude.

    
respondido por el Raykh

Lea otras preguntas en las etiquetas