05 April 2014

Calcul Numeric Programe C language



Examen:

// Sisteme inferior triunghiulare
#include “stdio.h”
#include “conio.h”
float a[10][10],b[10],x[10];
int n,i,j;
void citire(float a[10][10],float b[10],int n);
void afisare(float x[10],int n);
void inf_tr(float a[10][10],float b[10],int n);
void main()
{
clrscr();
  printf("n=");scanf("%d",&n);
  citire(a,b,n);
  inf_tr(a,b,n);
  printf("\n Solutia sistemului:\n");
  afisare(x,n);
getch();
}

void citire(float a[10][10],float b[10],int n)
{
  for (i=0;i   {
    for (j=0;j<=i;j++)
    {
      printf("a[%d][%d]",i+1,j+1);
      scanf("%f",&a[i][j]);
    }
  printf("b[%d]=",i+1);
  scanf("%f",&b[i]);
  }
}

void afisare(float x[10],int n)
{
  for (i=0;i     printf("\n %5.2f",x[i]);
}
void inf_tr(float a[10][10],float b[10],int n)
{
  x[0]=b[0]/a[0][0];
  for (i=1;i   {
    x[i]=0;
    for (j=0;j       x[i]+=a[i][j]*x[j];
    x[i]=(b[i]-x[i])/a[i][j];
  }
}




// Sisteme Superior Triunghiulare
#include “stdio.h”
#include “conio.h”

float a[10][10],b[10],x[10];
int n,i,j;

void citire(float a[10][10],float b[10],int n);
void afisare(float x[10],int n);
void sup_tr(float a[10][10],float b[10],int n);

void main()
{
clrscr();
  printf("n=");scanf("%d",&n);
  citire(a,b,n);
  sup_tr(a,b,n);
  printf("\n Solutia sistemului:\n");
  afisare(x,n);
getch();
}

void citire(float a[10][10],float b[10],int n)
{
  for (i=0;i   {
    for (j=i;j     {
      printf("a[%d][%d]=",i+1,j+1);
      scanf("%f",&a[i][j]);
    }
  printf("b[%d]=",i+1);
  scanf("%f",&b[i]);
  }
}

void afisare(float x[10],int n)
{
  for (i=0;i     printf("\n %5.2f",x[i]);
}
void sup_tr(float a[10][10],float b[10],int n)
{
  x[n-1]=b[n-1]/a[n-1][n-1];
  for (i=n-2;i>=0;i--)
  {
    x[i]=0;
    for (j=i+1;j       x[i]+=a[i][j]*x[j];
    x[i]=(b[i]-x[i])/a[i][i];
  }
}





// Metoda tangentei (Newton)


/* CONDITII
1. f(x) sa fie de 2 ori derivabila
2. f'(x) sa nu se anuleze pe intervalul (a,b)
3. f"(x) sa aiba semn constant pe intervalul (a,b)
*/
#include “stdio.h”
#include “conio.h”
#include

//Declararea punctelor de aproximatie a,b si a preciziei eps
float a,b, eps;
int n;

float newton(float a,float b,float eps);
float f(float x);
float df(float x);
float ddf(float x);

void main()
{
clrscr();
// Citirea valorilor punctelor a,b si a preciziei eps
  printf("a=");scanf("%f",&a);
  printf("b=");scanf("%f",&b);
  printf("Precizia: ");scanf("%f",&eps);
  printf("\n Radacina ecuatiei prin metoda Newton: %f",newton(a,b,eps));
  printf("\n Nr. de iteratii: %d",n);
getch();
}

float newton(float a,float b,float eps)
{
// xp - variabila in care se memoreaza aproximatia de la pasul precedent
  float x,xp;



// Initializarea contorului de iteratii
  n=0;

// Alegerea aproximatiei initiale
// Verificam daca f(x) si f"(x) au acelasi semn
  if (f(a)*ddf(a)>0)
    x=a;
  else
    x=b;

  do{
  // Memorarea aproximatiei de la pasul precedent
    xp=x;

  // Calculul aproximatiei curente
    x=x-f(x)/df(x);

  // Actualizarea contorului de iteratii
    n++;
    }
    while (fabs(x-xp)>=eps);
  // Metoda controlului diferentei dintre 2 aproximatii succesive
    return x;
}

float f(float x)
{
  return sin(x)+3*x-5;
}

float df(float x)
{
  return cos(x)+3;
}

float ddf(float x)
{
  return -sin(x);
}




// Metoda tangentei (Newton) MODIFICATA


/* CONDITII
1. f(x) sa fie de 2 ori derivabila
2. f'(x) sa nu se anuleze pe intervalul (a,b)
3. f"(x) sa aiba semn constant pe intervalul (a,b)
*/
#include “stdio.h”
#include “conio.h”
#include

//Declararea punctelor de aproximatie a,b si a preciziei eps
float a,b, eps;
int n;

float newton(float a,float b,float eps);
float f(float x);
float df(float x);
float ddf(float x);

void main()
{
clrscr();
  printf("a=");scanf("%f",&a);
  printf("b=");scanf("%f",&b);
  printf("Precizia: ");scanf("%f",&eps);
  printf("\n Radacina ecuatiei prin metoda Newton: %f",newton(a,b,eps));
  printf("\n Nr. de iteratii: %d",n);
getch();
}

float newton(float a,float b,float eps)
{

// xp - aproximatia de la pasul precedent
// df0 - Valoarea primei derivate in aproximatia initiala
  float x,xp,df0;

// Initializarea contorului de iteratii
  n=0;

// Alegerea aproximatiei intiale
// Verificam daca f(x) si f"(x) au acelasi semn
  if (f(a)*ddf(a)>0)
    x=a;
  else
    x=b;

// Memoram valoarea primei derivate a functiei in df0
  df0=df(x);
  do{
  // Memorarea aproximatiei de la pasul precedent
    xp=x;

  // Calculul aproximatiei curente
    x=x-f(x)/df0;

  // Actualizarea contorului de iteratii
    n++;
    }
    while (fabs(x-xp)>=eps);
  // Metoda controlului diferentei dintre 2 aproximatii succesive
    return x;
}

float f(float x)
{
  return sin(x)+3*x-5;
}

float df(float x)
{
  return cos(x)+3;
}

float ddf(float x)
{
  return -sin(x);
}




// Metoda Bipartitiei
#include “stdio.h”
#include “conio.h”
#include
// Declarearea Variabilelor
float a,b,eps;
int n;
float bipartitie(float a,float b,float eps);
float f(float x);

void main()
{
  clrscr();

  // Citim punctele a, b (capetele intervalului de aproximare
  // obtinute prin separarea radacinii) si precizia
  printf("a="); scanf("%f",&a);
  printf("b="); scanf("%f",&b);
  printf("Precizia="); scanf("%f",&eps);
  printf("Radacina Ecuatiei prin Metoda Bipartitiei: %f",bipartitie(a,b,eps));
  printf("\n Nr. de iteratii: %d",n);
getch();
}

float bipartitie(float a,float b,float eps)
{
  float x;

  // Initializarea contorului de iteratii
  n=0;
  do
  {
    // Aproximatia curenta a radacinii
    x=(a+b)/2;

    // Alegerea noului interval de aproximatie
    // Verificam daca in punctele de aproximatie functia are semne contrare
    if (f(a)*f(x)<0 p="">
      b=x;
    else
      a=x;

    // Actualizam contorul de iteratii
    n++;
  }  while (fabs(b-a)>=eps);
  // Metoda controlului lungimii intervalului de aproximare
  return x;
}
float f(float x)
{
  return sin(x)+3*x-5;
}



// Metoda Coardei


#include “stdio.h”
#include “conio.h”
#include

// Declarearea Variabilelor
float a,b,eps;
int n;

float coarda(float a,float b,float eps);
float f(float x);

void main()
{
  clrscr();
  // Citim punctele a, b (capetele intervalului de aproximare
  // (obtinute prin separarea radacinii) si precizia
  printf("a="); scanf("%f",&a);
  printf("b="); scanf("%f",&b);
  printf("Precizia="); scanf("%f",&eps);
  printf("Radacina Ecuatiei prin Metoda Coardei: %f",coarda(a,b,eps));
  printf("\n Nr. de iteratii: %d",n);
getch();
}

float coarda(float a,float b,float eps)
{
  // xp - aproximatia de la pasul precedent
  float x,xp;

 
// Initializarea contorului de iteratii
  n=0;

  // Initializarea aproximatiei initiale
  x=a;
  do
  {
  // Memoram in xp aproximatia de la pasul precedent
    xp=x;

  // Calculam aproximatia la pasul curent
    x=a-f(a)*(b-a)/(f(b)-f(a));

  // Alegem noul interval
    if (f(a)*f(x)<0 p="">
      b=x;
    else
      a=x;

    // Actualizarea contorulul de iteratii
    n++;
  }  while (fabs(x-xp)>=eps);
  // Metoda controlului diferentei intre 2 aproximatii succesive
  return x;
}

float f(float x)
{
  return sin(x)+3*x-5;
}




// Interpolare cu polinom lagrange
#include “stdio.h”
#include “conio.h”

int n,i;
float x[15],y[15],z;

void citire(float x[],float y[],int n);
float lagrange(float x[],float y[],float z);

void main()
{
clrscr();
  printf("n= ");scanf("%d",&n);
  citire(x,y,n);
  printf("z= ");scanf("%f",&z);
  printf("Valoarea in %f a polinomului este: %f",z,lagrange(x,y,z));
getch();
}

void citire(float x[],float y[],int n)
{
  for (i=0;i<=n;i++)
    {
    printf("x[%d]= ",i);scanf("%f",&x[i]);
    printf("y[%d]= ",i);scanf("%f",&y[i]);
    }
}

float lagrange(float x[],float y[],float z)
{
  int j;
  float s=0,p;
  for (i=0;i<=n;i++)
    {
    p=1;
    for (j=0;j<=n;j++)
      if (j!=i)
         p=p*(z-x[j])/(x[i]-x[j]);
    s=s+p*y[i];
    }
  return s;
}




// Aproximarea in medie (Regresie Liniara)
#include “stdio.h”
#include “conio.h”

int n,i;
float x[20],y[20],a,b;

void citire (float x[],float y[],int n);
void regresie(float x[],float y[],float *a,float *b);

void main()
{
  clrscr();
  printf("n=");scanf("%d",&n);
  citire(x,y,n);
  regresie(x,y,&a,&b);
  printf("a=%f",a);
  printf("\n b=%f",b);
getch();
}

void citire(float x[],float y[],int n)
{
  for (i=0;i<=n;i++)
    {
    printf("x[%d]= ",i);
    scanf("%f",&x[i]);
    printf("y[%d]= ",i);
    scanf("%f",&y[i]);
    }
}

void regresie(float x[],float y[],float *a,float *b)
{
  float Sx,Sy,Sxy,Sxx;
  Sx=Sy=Sxy=Sxx=0;
    for(i=0;i<=n;i++)
    {
      Sx+=x[i];
      Sy+=y[i];
      Sxy+=x[i]*y[i];
      Sxx+=x[i]*x[i];
    }
  *a=(Sx*Sy-(n+1)*Sxy)/(Sx*Sx-(n+1)*Sxx);
  *b=(Sx*Sxy-Sxx*Sy)/(Sx*Sx-(n+1)*Sxx);
}




// Interpolare Liniara
#include “stdio.h”
#include “conio.h”

float x1,y1,x2,y2,z,y;
float interp_lin(float x1,float y1,float x2,float y2,float z);

void main()
{
clrscr();
  printf("x1= ");scanf("%f",&x1);
  printf("y1= ");scanf("%f",&y1);
  printf("x2= ");scanf("%f",&x2);
  printf("y2= ");scanf("%f",&y2);
  printf("z= ");scanf("%f",&z);
  printf("Valoarea fct. aprox. este %f",interp_lin(x1,y1,x2,y2,z));
getch();
}

float interp_lin(float x1,float y1,float x2,float y2,float z)
{
  return y1+(y2-y1)/(x2-x1)*(z-x1);
}
 





 Laborator:
1 // Ecuatia grad 1

#include "stdio.h"
#include "conio.h"
int a,b;
float x;
void main()
{
clrscr();
printf("a= ");scanf("%d",&a);
printf("b= ");scanf("%d",&b);
if (a!=0)
    {
    x=(float)-b/a;
    printf("x=%.2f",x);
    }
else
    if(b==0)
        printf("Ec.are o infinitate de sol");
    else
        printf("Ec.imposibila");
getch();
}

2 /* Iteratie cu test initial */
#include “stdio.h”
#include “conio.h”
int x,S;
void main()
{
clrscr();
S=0;
printf("x= ");scanf("%d",&x);
while (x!=0)
    {
    S=S+x;
    printf("x= ");scanf("%d",&x);
    }
printf("Suma= %d",S);
getch();
}
3 Pseudocod + program iteratia cu test final

START
S = 0
EXECUTA
    CITESTE X
    S = S+x
CAT TIMP X!=0
SCRIE S
STOP

// Suma. Iteratia cu test final

#include "stdio.h"
#include "conio.h"

void main()
{
int S=0,x;
clrscr();
do{
  printf("x=");
  scanf("%d",&x);
  S=S+x;
  }
  while (x!=0);
  printf("S=%d",S);
  getch();
}

Calculul Sumelor :

START
CITESTE n
S=0
PENTRU i=p,n EXECUTA
S=S+ai
SCRIE S
STOP

Calc Sume
CITESTE n
S=0
Pentru i=1, n EXECUTA
S=S+i patrat
Scrie S
STOP

4 // S= suma de la 1 la n din i patrat
#include "stdio.h"
#include "conio.h"
int n,i,S;
void main()
{
printf("n= ");scanf("%d",&n);
S=0;
for (i=1;i<=n;i++)
S=S+i*i;
printf("Suma= %d",S);
getch();
}
#include
#include
int n,i;
float S;
void main()
{   clrscr();
printf("n= ");scanf("%d",&n);
S=0;
for (i=0;i<=n;i++)
S=S+(float)(i+1)/(i+2);
printf("Suma= %f",S);
getch();
}
6 // Suma = suma de la i=1 la n din (-1)*x­­2i/i+2
#include "stdio.h"
#include "conio.h"
int n,i;
float x,s,t;
void main()
{
clrscr();
printf("n= ");scanf("%d",&n);
printf("x= ");scanf("%f",&x);
s=0;
t=-x*x;
for(i=1;i<=n;i++)
{
s+=t/(i+2);
t=-x*x*t;
}
printf("S= %f",s);
getch();
}

7 // S= Suma de la 0 la n din -1 la i+1 * x la i / (i+1)!
#include "stdio.h"
#include "conio.h"
int n,i;
float x,s,t;
void main()
{
clrscr();
printf("n= ");scanf("%d",&n);
printf("x= ");scanf("%f",&x);
s=0;
t=-1;
for(i=0;i<=n;i++)
{
s+=t;
t=-x*t/(i+2);
}
printf("S= %f",s);
getch();
}
8 // sin(x) = suma de la 0 la infinit din -1 la i * x la 2i+1 / (2i+1)!
#include "stdio.h"
#include "conio.h"
int n,i;
float x,s,t;
void main()
{
clrscr();
printf("n= ");scanf("%d",&n);
printf("x= ");scanf("%f",&x);
s=0;
t=x;
for(i=0;i<=n;i++)
{
s+=t;
t=-x*x*t/((2*i+3)*(2*i+2));
}
printf("S= %f",s);
getch();
}







9 // Suma  1  

#include "stdio.h"
#include "conio.h"
unsigned int n,i;
float S,t;
void main()
{
printf("n= ");scanf("%d",&n);
S=0;
t=1;
for (i=0;i<=n;i++)
    {
    S=S+t*(i*i+1);
    t=-t/((2*i+2)*(2*i+1));
    }
printf("Suma= %f",S);
getch();
}


10 // SUMA 2

#include "stdio.h"
#include "conio.h"
int n,i;
float S,x,t;
void main()
{
printf(" n= ");scanf("%d",&n);
printf(" x= ");scanf("%f",&x);
S=0;
t=1;
for (i=0;i<=n;i++)
    {
    S=S+t;
    t=-t*(x*x)/((2*i+2)*(2*i+1));
    }
printf("Suma= %f",S);
getch();
}




12 // X un vector , sa se sorteze crescator
#include "stdio.h"
#include "conio.h"
int x[15],y,n,i;
void citire(int x[],int n);
void afisare(int x[],int n);
int numar(int x[],int n,int y);
void sortare(int x[],int n);
void main()              {
clrscr();
printf("nr. elemente: ");scanf("%d",&n);
citire(x,n);
afisare(x,n);
printf("\n y=");scanf("%d",&y);
printf("\n Nr. elementelor > %d este %d",y,numar(x,n,y));
sortare(x,n);
printf("\n Vectorul sortat:");
afisare(x,n);
getch();
}
void citire(int x[],int n)
{    for (i=0;i
        {
        printf("x[%d]=",i);
        scanf("%d",&x[i]);
        }
}
void afisare(int x[],int n)
{
    for (i=0;i
    printf("%d ",x[i]);
}
int numar(int x[],int n,int y)
{
int nr=0;
    for (i=0;i
        if(x[i]>y)
            nr++;
return nr;
}
void sortare(int x[],int n)
{
int j,aux;
    for (i=0;i
        for (j=i+1;j
            if (x[i]>x[j])
                {
                aux=x[i];
                x[i]=x[j];
                x[j]=aux;        }          }



13 /* horner */
#include "stdio.h"
#include "conio.h"
int n,i;
float a[15],z;
void citire(float a[],int n);
float horner(float a[],int n,float z);
void main()
{
clrscr();
  printf("Gradul polinomului: ");
  scanf("%d",&n);
  citire (a,n);
  printf("z= ");
  scanf("%f",&z);
  printf("\n Valoarea polinomului in %f este %f",z,horner(a,n,z));
getch();
}
void citire(float a[],int n)
{
  for (i=n;i>=0;i--)
    {
    printf("a[%d]",i);
    scanf("%f",&a[i]);
    }
}
float horner(float a[],int n,float z)
{
  float y;
  y=a[n];
    for (i=n-1;i>=0;i--)
      y=a[i]+z*y;
    return y;
}




16 /* Transmitere prin referinta */
#include "stdio.h"
#include "conio.h"
void interschimbare(int *a,int *b);
void main()
{
clrscr();
int x,y;
x=3;
y=7;
interschimbare(&x,&y);
printf(" x=%d \n y=%d",x,y);
getch();
}
void interschimbare(int *a,int *b)
{
  int aux;
  aux=*a;
  *a=*b;
  *b=aux;
}

CCSuite - CC Monitoring, CC Reports and AliveCheck

CC Monitoring, CC Reports and AliveCheck Create together a powerful application, user friendly, that helps managing, monitoring ...