[C con Clase] Codigo de Euler en C
ainhize goenaga
addicted_to_music90 en hotmail.com
Lun Jun 14 15:24:59 CEST 2010
Hola,
Somos estudiantes de 1 de ingenieria informatica y como proyecto de fin de curso nos han mandado hacer un programa que resuelva un circuito de un filtro pasivo RC con el codigo de euler.
Hasta ahora tenemos esto:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3,141592653
int menua();
void Meter_Valores();
int main(int argc, char *argv[])
{
menu();
system("PAUSE");
return 0;
}
int menu(){
//Variables
int aukera=0;
int bukatu=0;
int sartu=0;
//Programa
do{
printf("**************************************************************\n");
printf("**** EKUAZIO DIFERENTZIAL SISTEMAK EBASTEKO PROGRAMA ****\n");
printf("**************************************************************\n");
printf("*** 1) Programan sartu ***\n");
printf("*** 2) Programatik irten ***\n");
printf("******************************\n\n");
printf("Sartu zure aukera: ");
scanf("%i",&aukera);
fflush(stdin);
if(aukera==1){
Meter_Valores();
bukatu=1;
}
if(aukera==2){
bukatu=1;
}
}while(bukatu==0);
//Final
return sartu;
}
void Meter_Valores(){
//Valores
float Vin=0,C1=0,C2=0,R1=0,R2=0fre=0,sinu=0;
int auk=0;
//Programa
system("cls");
printf("Mete los valores\n");
printf("\nMete la Frecuencia: ");
scanf("%f",&fre);
fflush(stdin);
printf("\nMete la amplitud:");
scanf("%f",&anp);
sinu=2*PI*fre*t[0];
Vin=anp*sin(sinu);
fflush(stdin);
printf("\nMete C1:");
scanf("%f",&C1);
fflush(stdin);
printf("De cuanto?\n");
printf("1) Micro\n");
printf("2) Nano\n");
printf("3) Pico\n");
scanf("%i",&auk);
if(auk==1){
C1=C1*0.000001;
}
if(auk==2){
C1=C1*0.000000001;
}
if(auk==3){
C1=C1*0.000000000001;
}
printf("\nMete C2:");
scanf("%f",&C2);
fflush(stdin);
printf("de cuanto?\n");
printf("1) Micro\n");
printf("2) Nano\n");
printf("3) Pico\n");
scanf("%i",&auk);
if(auk==1){
C2=C2*0.000001;
}
if(auk==2){
C2=C2*0.000000001;
}
if(auk==3){
C2=C2*0.000000000001;
}
printf("\nMete R1:");
scanf("%f",&R1);
fflush(stdin);
printf("\nMete R2:");
scanf("%f",&R2);
fflush(stdin);
//Bukaera
}
float euler(){
//Variables
int i=0, n=0;
float h=0.0000001;
//Programa
for(
//Final
}
/*Aqui ya no tenemos ni idea de como seguir
Nuestras ecuaciones del circuito son estos:
dQ1t:=(Vin*C2*C1*R1+Vin*C2*C1*R2-Q1*C2*R1-Q1*C2*R2-Q2*R1*C1)/C2/C1/R1/R2
dQ2t:=-(Q2*C1-Vin*C2*C1+Q1*C2)/C2/C1/R2
y en el programa maple euler lo hemos hecho de esta manera:
voltaia:=dQ2t*R2:
Q1[0]:=0:Q2[0]:=0:t[0]:=0:delta:=1e-8:Vout[0]:=0:
for n from 0 to 10000 dot[n+1]:=t[n]+delta:
Q1[n+1]:=evalf(Q1[n]+(subs({Q1=Q1[n],Q2=Q2[n],t=t[n]},dQ1t))*delta):
Q2[n+1]:=evalf(Q2[n]+(subs({Q1=Q1[n],Q2=Q2[n],t=t[n]},dQ2t))*delta):
Vout[n+1]:=evalf(subs({Q1=Q1[n],Q2=Q2[n],t=t[n]},voltaia)):
end do:n:='n':
V:=[seq([j*1e-8,Vout[j]],j=0..100)]:
y no sabemos como hacerlo en C
*/
Si alguien nos ayuda le agradeceriamos mucho porque no sabemos ni por donde empezar.
Más información sobre la lista de distribución Cconclase