[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