Sei sulla pagina 1di 2

//Simulazione del circuito con due celle RC

#include "graphics.h"
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include "CustomGraphics.h"

using namespace std;

//dichiarazione dei prototipi delle funzioni "fun" e "sol"


float fun(float t);
float sol(float t);

int APIENTRY WinMain

(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)


{
//inizializzazione della schermata e dichiarazione delle variabili
initwindow(850, 610);
setbkcolor(15);
setcolor(15);
bar(0, 0, 850, 610);
float a, b, c;
float t, x, t1, x1;
float rx, ry;
float h;
float x1prec, x1suc, x2prec, x2suc;
/*inizializzazione degli assi cartesiani, dei coefficienti del modello
matematico del sistema e del passo di discretizzazione*/
rx = 6;
ry = 10;
a = 1;
b = 0;
c = 5;
//tracciamento degli assi
assi(rx, ry, 0);
//Grafico della soluzione analitica
t = 0;
do
{
x = sol(t);
tracciapixel(t, x, rx, ry, 3, 0);
t = t + 0.001;
} while (t < rx);
setcolor(3);
outtextxy(650, 500, "Soluzione analitica");
getch();
//Grafico dell'algoritmo di Eulero esplicito
t = 0;
x1prec = 1;
x2prec = 3;
h = 0.001;
do
{
x1suc = x2prec*h + x1prec;
x2suc = (h / a)*(fun(t) - c*x1prec - b*x2prec) + x2prec;
tracciapixel(t, x1prec, rx, ry, 11, 0);
t1 = t + h;
//tracciasegmento(t, x1prec, t1, x1suc, rx, ry, 5, 0);
t = t1;
x1prec = x1suc;
x2prec = x2suc;
} while (t < rx);
setcolor(5);
outtextxy(650, 530, "Eulero esplicito");
getch();
return (0);
}

//definizione della funzione "fun", contenente il segnale in ingresso


float fun(float t)
{
float f;
f =exp(-3*t);
return(f);
}

//definizione della funzione "sol", contenente la soluzione analitica del sistema


float sol(float t)
{
float f;
f =(1/14.0)*exp(-3*t)+(13/14.0)*cos(sqrt(5)*t)+(45/14.0)*(sin(sqrt(5)*t)/
sqrt(5));
return(f);
}

Potrebbero piacerti anche