int n, // gradul polinomului de interpolare double x[], // vectorul absciselor punctelor date double y[], // ordonatele punctelor date double xp //… [623370]

AITKEN
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

double aitken (
int n, // gradul polinomului de interpolare
double x[], // vectorul absciselor punctelor date
double y[], // ordonatele punctelor date
double xp // punctul în care se interpoleaza functia
)
{// declararea si definirea variabilelor locale
int i,j; // contoare si indecsi de vectori

// corpul de instructiuni al functiei

for(i=1;i<=n;i++) {
for (j=i;j<=n;j++) y[j]=y[i -1]*((xp -x[j])/(x[i -1]-x[j]))+y[j]*((xp -x[i-1])/(x[j] -x[i-1]));
}
return y[n];
}

int main(void)
{
int n,i;
double x[20],y[20],xp;

printf(" \nIntroduceti n (grad maxim polinom dorit): ");
scanf("%d",&n);
for(i=0;i<=n;i++) {
printf(" x[%d ]= ",i);
scanf("%lf",&x[i]);
}

for(i=0;i<=n;i++) {
printf(" y[%d]= ",i);
scanf("%lf",&y[i]);
}
printf(" \nIntroduceti xp = ");
scanf("%lf",&xp);
printf(" \nRezultatul este = %lf",aitken(n,x,y,xp));

getch();
return 1;
}

APROXIMATII SUCCESIVE
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define er 0.000001
double fi(double x)
{
return exp( -x);
}
int Aproxsucc(
double (*fi)(double),
double ls,
double ld,
double x0,
double h,
double *rad )
{
double pc;
double xn,xn_1;
double der;
pc=ls;
do {
der=(fi(pc+h) -fi(pc))/h;
if (fabs(der)>=1) return 0;
pc=pc+h;
}
while (pc<=ld);
xn=x0;
do {
xn_1=xn;
xn=fi(xn_1);
}
while (fabs (xn -xn_1)>er);
*rad=xn;
return 1;
}

int main(void)
{
double ls,ld,x0,h,rad;
printf(" \n Calul solutiei unei ecuatii date, cu metoda aproximatiilor succesive \ n\n");
printf(" \n Introduceti valoarea de start pentru aproximatii : \nx0= ");
scanf("%lf",&x0);
printf(" \n Introduceti limitele intervalului in care se cauta solutia: ");
printf(" \n lim st:"); scanf("%lf",&ls); printf(" \n lim dr:"); scanf("%lf",&ld);
printf(" \n pas derivare:");scanf("%lf",&h);
if(Aproxsucc(&fi,ls,ld,x0,h,&rad)) printf(" \n Radacina este: %lf, aprox: %lf",rad,log(rad));
else printf("Eroare"); getch();
}

BISECTIEI
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ma th.h>
double f(double x)
{
return x*x+x- 6;
}
int bisectie(/*double (*f)(double),*/ double ls,double ld,double err,double *sol)
{
int pas=0;
double xm;
if (f(ls)*f(ld)>0)
return 0;
if (f(ls)==0)
{
*sol=ls;
return 1;
}
if (f(ld)==0)
{
*sol=ld;
return 1;
}
xm=(ls+ld)/2;
// while ((fabs(ld -ls)>err)&&(f(xm)!=0))
while (f(xm)!=0)
{
xm=(ls+ld)/2;
pas++;
if(f(ls)*f(xm)<0) {printf(" \n pas:%d – prec: %e", pas, fabs(ld -ls)); ld=xm;}
else {printf(" \n pas:%d + prec: %e", pas, fabs(ld- ls)); ls=xm;}
}
*sol=xm;
return 1;
}

int main(void)
{
int e;
double ls,ld,err,sol;
printf(" \n lim st: ");
scanf ("%lf",&ls);
printf(" \n lim dr:");
scanf ("%lf",&ld);
printf(" \n eroarea:");
scanf ("%lf",&err);

e=bisectie(ls,ld,err,&sol);
if(e) {printf (" \n%d",e); printf(" \n sol: %lf",sol);}
else printf ("\n Eroare!");
getch(); }

DERIVATA 2
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
double f(double x)
{
return 2*x -2;
}

double der2(double x0,
double h
)
{
double der;
der=(f(x0+0.5*h) -f(x0-0.5*h))/h;

return der;
}

int main(void)
{
double x0,h;
printf(" \n punctul de calcul: ");
scanf ("%lf",&x0);
printf(" \n pas :");
scanf ("%lf",&h);

printf(" \n%f", der2(x0,h));
// else printf (" \n Eroare!");

getch();

}

DERIVATA 3
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

double f(double x)
{
return 2*x -2;
}

double der3(double x0,
double h1,
double h2
)
{
dou ble der;
der=((h1*h1)*f(x0+h2) -((h2*h2)- (h1*h1))*f(x0)- (h2*h2)*f(x0 -h1))/(h1*h2*(h1+h2));
return der;
}

int main(void)
{
double x0,h1,h2;
printf(" \n punctul de calcul: ");
scanf ("%lf",&x0);
printf(" \n distanta punctului din sta nga fata de x0 :");
scanf ("%lf",&h1);
printf(" \n distanta punctului din dreapta fata de x0 :");
scanf ("%lf",&h2);
printf(" \n%d", der3(x0,h1,h2));
// else printf (" \n Eroare!");

getch();

}

DERIVATA 5
#include<st dio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

double f(double x)
{
return x*x;
}

double der5(double x0,
double h
)
{
double der;
der=(1/(12*h))*(f(x0 -2*h) -8*f(x0 -h)+8*f(x0+h) -f(x0+2*h));
return der;
}

int main(void)
{
double x0,h;
printf(" \n punctul de calcul: ");
scanf ("%lf",&x0);
printf(" \n pas :");
scanf ("%lf",&h);

printf(" \n%d", der5(x0,h));
// else printf (" \n Eroare!");

getch();
}

DREPTUNGHI

#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
double f(double x)
{
return 2*x;
}
double dreptunghi (
double ls,
double ld,
int n
)
{
double h;
double sum;
int i;
sum=0;
h=(ld -ls)/n;
for (i=0;i<n;i++) sum=sum+h*f(ls+i*h);
return sum;
}

int main(void)

{

double ls,ld;
int n;
printf(" \n Introduceti limitele intervalului in care se cauta solut ia: ");
printf(" \n lim st:");
scanf("%lf",&ls);
printf(" \n lim dr:");
scanf("%lf",&ld);
printf(" \n numarul de subintervale:");
scanf("%d",&n);
printf(" \n%lf",dreptunghi(ls,ld,n));
getch();
}

GAUSS
#include<conio.h>
#include<stdio.h>
#inclu de<math.h>
#include<stdlib.h>
# define N 20
double schimb (double &a,double &b)
{
double temp;
temp=a;
a=b;
b=temp;
}
double gauss(
int n,
double A[][20],
double B[],
double X[]
)
{
int i,k,j;
double m,d,max;
int lp;
d=1;
for (i=1;i<=n -1;i++)
{
max=fabs(A[i][i]);
lp=i;
for (k=i+1;k<=n;k++)
{
if(fabs(A[k][i])>max){max=fabs(A[k][i]);
lp=k;
}
}
if(max==0) return 0;
if (i!=lp){
for (j=i;j<=n;j++) schimb(A[i][j],A[lp][j]);
schimb (B[i],B[lp]);
d= -d;
}

for (k=i+1;k<=n;k++){
m=A[k][i]/A[i][i];
for (j=i+1;j<=n;j++) A[k][j]=A[k][j] -m*A[i][j];
B[k]=B[k] -m*B[i];
}
}

if(A[n][n] != 0) for(i=1; i<=n; i++) d *= A[i][i];
else return 0;

for(k=n; k>=1; k –){
X[k]=B[k];
for (j=n;j>k;j –) X[k]=X[k] -A[k][j]*X[j];
X[k]=X[k]/A[k][k];
}

return d;
}

int main(void)
{
double A[20][20];
double B[20];
dou ble X[20];
int i,j,n;
double ls,ld;

printf(" \n Introduceti ordinul sistemului : ");
scanf("%d",&n);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
printf (" \n A[%d][%d]= ",i,j);
scanf ("%lf",&A[i][j]);
}

for (i=1;i<=n;i++)
{
printf ("\n B[%d]= ",i);
scanf ("%lf",&B[i]);
}

printf(" \n Determinantul este: %lf",gauss(n,A,B,X));
for (i=1;i<=n;i++) printf(" \n X= %lf", X[i]);
getch();

}

JACOBI
#include<conio.h>
#include<stdio.h>
#include< math.h>
#include<stdlib.h>
#define N 8
#define er 0.001
double jacobi(
int n,
double A[][N],
double B[],
double X[]
)
{
int i,j;
double sum;
double Xn[N],Xn_1[N];
int sem;
for(i=1;i<=n;i++)
{
sum=0;
for (j=1;j<=n;j++) sum=sum+fabs(A[i][j]);
if(sum>(2*fabs(A[i][i]))) return 0;
}
for(i=1;i<=n;i++) Xn[i]=X[i];
do {
sem=1;
for(i=1;i<=n;i++) Xn_1[i]=Xn[ i];
for(i=1;i<=n;i++) {
Xn[i]=B[i];
for (j=1;j<=n;j++) if (j!=i) Xn[i]=Xn[i] -A[i][j]*Xn_1[j];
Xn[i]=Xn[i]/A[i][i];
}
for(i=1;i<=n;i++) if (fabs(Xn[i] -Xn_1[i])>er) sem=0;
}
while (sem==0);
for(i=1;i<=n;i++) X[i]=Xn[i];
return 1;
}

int main(void) {
double A[N][N];
double B[N];
double X[N];
int i,j,n;
double ls,ld;
printf(" \n Introduceti ordinul sistemului : ");
scanf("%d",&n);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++) {
printf (" \n A[%d][%d]= ",i,j);
scanf ("%lf",&A[i][j]);
} for (i=1;i<=n;i++) {
printf (" \n B[%d]= ",i);
scanf ("%lf",&B[i]);
}
for (i=1;i<=n;i++) {
X[i]=B[i];
}

if (jacobi(n,A,B,X))
{ for (i=1;i<=n;i++)
printf (" \n X[%d]= %lf",i,X[i]);
}
else printf (" \n Eroare");
// printf(" \n Sum: %lf",jacobi(n,A,B,X));
getch();

}

LAGRANGE

#include <stdio.h>
#include <stdlib.h>
#incl ude <conio.h>
#include <math.h>

double lagrange (
int n, // gradul polinomului de interpolare
double x[], // vectorul absciselor punctelor cunoscute
double y[], // vectorul ordonatelor punctelor cunoscute
double x1 // punctul în ca re se calculeaza interpolarea
)

{// declararea si definirea variabilelor locale
int i,j; // contori pentru buclele ‘for()’ si indexarea vectorilor
double sum; // variabila ce retine sumele partiale
double prod; // variabila ce retine produsul
// corpul de instructiuni al functiei
sum=0;
for (i=0;i<=n;i++) { prod=1;
for(j=0;j<=n;j++) {
if (j!=i) prod*=(x1 -x[j])/(x[i] -x[j]); }
sum=sum+y[i]*prod; }
return sum; // valoarea polinomului în punctul de interpolare cerut
}
int main() { int i,n;
double x[20],y[20],x1,r;
printf("Dati gradul pol: ");
scanf("%d",&n);
printf("Dati abscisa in care doriti calculul: ");
scanf("%lf",&x1);
printf("Dati abscisele \n");
for (i=0;i<=n;i++) {
printf("x[%d]: ",i);
scan f("%lf",&x[i]); }
printf("Dati ordonatele: \n");
for (i=0;i<=n;i++) {
printf("y[%d]: ",i);
scanf("%lf",&y[i]);}
r=lagrange(n,x,y,x1);
printf("Rezultatul este: %lf",r);
getche();
return 1;
}

NEWON
#include <stdio.h>
#include <st dlib.h>
#include <conio.h>
#include <math.h>
double newton1 (
int n, // gradul polinomului de interpolare
double x0, // abscisa primului punct cunoscut
double h, // pasul constant între abscisele cunoscute
double y[], // vectorul ordonatelor punct elor cunoscute
double xp // abscisa punctului în care se face interpolarea
)
{ // declararea si definirea variabilelor locale

double sum; // variabila ce retine sumele partiale
double prod; // variabila ce retine produsele
int i,j; // contoare în buclele ‘for()’ si indecsi pentru vectori.
// corpul de instructiuni al functiei
sum=y[0]; // pornesc cu suma de la y0 (vedeti formula (6.19))
prod=1;
for(i=1;i<=n;i++) { for (j=0;j<=n -i;j++) y[j]=y[j+1] -y[j]; // calculul diferentelor finite
prod*=(xp -(x0+(i -1)*h))*(1/h)*(1./i);
sum+=y[0]*prod;
printf(" \n%lf ",y[0]);
}
return sum; } // valoarea interpolata

int main()
{
int i,n;
double x0,y[20],xp,r,h;
printf("Dati gradul polinomului: ");
scanf("%d",&n);
printf("Dati pasul: ");
scanf("%lf",&h);
printf("Dati abscisa: ");
scanf("%lf",&x0);
printf("Dati ordonatele: \n");
for (i=0;i<=n;i++)
{
printf("y[%d]: ",i);
scanf("%lf",&y[i]);
}
printf("Dati abscisa in care doriti calculul: ");
scanf("%lf" ,&xp);
r=newton1(n,x0,h,y,xp);
printf("Rezultatul este: %lf",r);
getche();
return 1;
}

NEWTON 2
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
double newton2 (
int n, // gradul polinomului de interpolare
double xn, // abscisa maxima a punctelor cunoscute
double h, // pasul constant între abscisele cunoscute
double y[], // vectorul ordonatelor punctelor cunoscute
double xp // abscisa punctului în care se face interpolarea
)
{// declararea si definirea var iabilelor locale
double sum; // variabila ce retine sumele partiale
double prod; // variabila ce retine produsele
int i,j; // contoare
// corpul de instructiuni al functiei
sum=y[n]; // valoarea interpolata porneste de la yn (vedeti relatia (6.21))
prod=1;
for(i=1;i<=n;i++) {
for (j=n;j<=i;j –) y[j]=y[j] -y[j-1]; // calculul diferentelor finite
prod*=(xp -(xn+(i -1)*h))*(1/h)*(1/i);
sum+=y[n]*prod;
}
return sum; // valoarea polinomului de interpolare în punctul cerut
}

int main ()
{ int i,n;
double xn,y[20],xp,r,h;
printf("Dati gradul polinomului: ");
scanf("%d",&n);
printf("Dati pasul: ");
scanf("%lf",&h);
printf("Dati abscisa: ");
scanf("%lf",&xn);
printf("Dati ordonatele: \n");
for (i=0;i<=n;i++)
{
printf("y[%d]: ",i);
scanf("%lf",&y[i]);
}
printf("Dati abscisa in care doriti calculul: ");
scanf("%lf",&xp);
r=newton2(n,xn,h,y,xp);
printf("Rezultatul este: %lf",r);
getche();
return 1;
}

NEWTON DIF
#include <stdio.h>
#include <stdl ib.h>
#include <conio.h>
#include <math.h>
#include<iostream>
using namespace std;

double newtondif ( int n, // numarul de puncte date ale functiei
double x[], // vectorul absciselor punctelor date
double y[], // vectorul ordonatelor punctelor date
double x1 // punctul în care se interpoleaza functia
)
{// declararea si definirea variabilelor locale
double sum; // variabila ce retine sumele partiale
double prod; // variabila ce retine produsele partiale
int i,j; // contoare
// corpul de instructiuni al functiei
sum=y[0];
prod=1;
for(i=1;i<=n;i++) { for (j=0;j<=n -i;j++) y[j]=(y[j+1] -y[j])/(x[j+i] -x[j]); // calculul diferentelor divizate
prod*=x1 -x[i-1];
sum+=y[0]*prod;
cout<<y[0]<<endl;
}
return sum;}

int main(){ int i,n;
double x[20],y[20],xp,r;
printf("Dati gradul polinomului: ");
scanf("%d",&n);
printf("Dati abscisele \n");
for (i=0;i<=n;i++) {
printf("x[%d]: ",i);
scanf("%lf",&x[i]);
}
printf("Dati ordonatele: \n");
for (i=0;i <=n;i++) {
printf("y[%d]: ",i);
scanf("%lf",&y[i]);
}
printf("Dati abscisa in care doriti calculul: ");
scanf("%lf",&xp);
r=newtondif(n,x,y,xp);
printf("Rezultatul este: %lf",r);
getche();
return 1;
}

NEWTON 1
#include <stdio. h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
double newtondif (
int n, // numarul de puncte date ale functiei
double x[], // vectorul absciselor punctelor date
double y[], // vectorul ordonatelor punctelor date
double x1 // punctul în care se interpoleaza functia
)
{// declararea si definirea variabilelor locale
double sum; // variabila ce retine sumele partiale
double prod; // variabila ce retine produsele partiale
int i,j; // contoare
// corpul de instructiun i al functiei
sum=y[0];
prod=1;
for(i=1;i<=n;i++) {
for (j=0;j<=n -i;j++) y[j]=(y[j+1] -y[j])/(x[j+i] -x[j]); // calculul diferentelor divizate
prod*=x1 -x[i-1];
sum+=y[0]*prod;
}
return sum;
}

int main() {int i,n;
double x[20],y[20] ,xp,r;
printf("Dati gradul polinomului: ");
scanf("%d",&n);
printf("Dati abscisele \n");
for (i=0;i<=n;i++) {
printf("x[%d]: ",i);
scanf("%lf",&x[i]);
}
printf("Dati ordonatele: \n");
for (i=0;i<=n;i++) {
printf("y[%d]: ",i);
scanf("%lf",&y[i]);
}

printf("Dati abscisa in care doriti calculul: ");
scanf("%lf",&xp);
r=newtondif(n,x,y,xp);
printf("Rezultatul este: %lf",r);
getche();
return 1;
}

NEWTON R AHPSON
#include<stdio.h>
#include<stdlib.h>
#include<co nio.h>
#include<math.h>
double f(double x)
{
return x*x*x- 3*x+1;
}

int Newtonraphsonec(double x0,double er,double nmax,double *sol)
{
double xn,xn_1,h,der;
xn=x0;h=0.0001;
do {
xn_1=xn;
der=(f(xn_1+h) -f(xn_1))/h;
if (der==0) return 0;
xn=xn_1 -f(xn_1)/der;
nmax ++;
}

while ((fabs(xn -xn_1)>er)&&(nmax>0));
if(nmax==0)return 0;
*sol=xn;
return 1;
}

int main(void){
double x0,er,nmax,sol;
printf(" \n Calul solutiei unei ecuatii, cu metoda Newton Raphson \ n\n");
printf(" \n Introduceti eroarea maxima dorita : \ n\ner= ");
scanf("%lf",&er);
printf(" \n Introduceti valoarea de start : \nx0= ");
scanf("%lf",&x0);
printf(" \n Introduceti numarul maxim de iter atii: \nnmax= ");
scanf("%lf",&nmax);
printf(" \n%d", Newtonraphsonec(x0,er,nmax,&sol));
printf("Radacina ecuatie este : : \t%lf",sol);
getche();
}

REGRESIE EXPONENTIALA

#include <conio.h>
#include <stdio.h>
#include <s tdlib.h>
#include <conio.h>
#include <math.h>
#define NRMAX 10

void regexp (
int m,
double x[NRMAX],
double y[NRMAX],
double *pa,
double *pb
)
{
double sx,sy,sxx,sxy;
int i;
sx=0;sy=0;sxx=0;sxy=0;
for (i=1;i<=m;i++) {
sx=sx+x[i];
sy=sy+(log(y[i]));
sxy=sxy+(x[i]*(log(y[i])));
sxx=sxx+x[i]*x[i];
}
*pa=exp((sy*sxx -sx*sxy)/(m*sxx -sx*sx));
*pb=exp((m*sxy -sx*sy)/(m*sxx -sx*sx));
}

int main (void){
int i,m;
double pa,pb;
double x[NRMAX],y[NRMAX];

printf(" \nRegresia exponentiala \ n");
printf(" \nIntroduceti numarul experientelor:");
scanf("%d",&m);
printf(" \nIntroduceti abscisele si ordonatele functiei:");
for (i=0;i<m;i++)
{
printf(" \nx[%d]=",i);
scanf("%f",&x[i]);
printf("y[ %d]=",i);
scanf("%f",&y[i]);
}

regexp(m,x,y,&pa,&pb);
printf("Rezultatul regresiei geometrice este: pa=%lf; pb=%lf",pa,pb);
getch();
return 1;
}

REGRESIE GEOMETRICA
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define NRMAX 10

void reggeom (
int m,
double x[NRMAX],
double y[NRMAX],
double *pa,
double *pb
)
{
double sx,sy,sxx,sxy;
int i;
sx=0;sy=0;sxx=0;sxy=0;
for (i=1;i<=m;i++) {
sx=sx+(log(x[i]));
sy=sy+(log(y [i]));
sxy=sxy+(log(x[i])*log(y[i]));
sxx=sxx+(log(x[i])*log(x[i]));
}
*pa=exp((sy*sxx -sx*sxy)/(m*sxx -sx*sx));
*pb=exp((m*sxy -sx*sy)/(m*sxx -sx*sx));
}

int main (void)
{
int i,m;
double pa,pb;
double x[NRMAX],y[NRMAX];

printf("REGRESI A GEOMETRICA");
printf(" \nIntroduceti numarul experientelor:");
scanf("%d",&m);
printf(" \nIntroduceti abscisele si ordonatele functiei:");
for (i=0;i<m;i++)
{
printf(" \nx[%d]=",i);
scanf("%lf",&x[i]);
printf("y[%d]=",i);
scanf("%lf",&y[i] );
}

reggeom(m,x,y,&pa,&pb);
printf("Rezultatul regresiei geometrice este: pa=%lf; pb=%lf",pa,pb);

getch();
return 1;
}

REGRESIE HIPERBOLICA
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define NRMAX 10

void reghip (
int m,
double x[],
double y[],
double *pa,
double *pb
)
{
double sx,sy,sxx,sxy;
int i;
sx=0;sy=0;sxx=0;sxy=0;
for (i=1;i<=m;i++) {
sx=sx+x[i];
sy=sy+(1/y[i]);
sxy=sxy+(x[i]/y[i]);
sxx=sxx+ x[i]*x[i];
}
*pa=(m*sxy -sx*sy)/(m*sxx -sx*sx);
*pb=(sxx*sy -sxy*sx)/(m*sxx -sx*sx);
}
int main (void)
{
int i,m;
double pa,pb;
double x[NRMAX],y[NRMAX];

printf("REGRESIA HIPERBOLICA");
printf(" \nIntroduceti numarul experientelor:");
scanf("%d",&m);
printf(" \nIntroduceti abscisele si ordonatele functiei:");
for (i=0;i<m;i++)
{
printf(" \nx[%d]=",i);
scanf("%lf",&x[i]);
printf("y[%d]=",i);
scanf("%lf",&y[i]);
}

reghip(m,x,y,&pa,&pb);
printf("Rezultatul regresiei hiperbolice este: pa=%lf; pb=%lf",pa,pb);

getch();
return 1;
}

REGRESIE LINIARA
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define NRMAX 10

void reglin (
int m, // numarul experientelor
double x[], // vectorul absciselor functiei
double y[], // vectorul ordonatelor functiei
double *pa, // adresa coeficientului lui x (pointer)
double *pb // adresa termenului liber (pointer)
)
{ // declararea si definirea variabilelor locale
double sx; // variabila pentru suma absciselor
double sy; // variabila pentru suma ordonatelor
double sxx; // variabila pentru sumele de forma x2
double sxy; // variabila pentru sumele de forma xy
int i; // contor pentru ciclurile ‘for()’.

// corp ul de instructiuni al functiei
sx=0;sy=0;sxx=0;sxy=0; // variabilele suma sunt initializate cu 0
for (i=1;i<=m;i++) { sx=sx+x[i];
sy=sy+y[i];
sxy=sxy+x[i]*y[i];
sxx=sxx+x[i]*x[i];
}
*pa=(m*sxy*sx*sy)/(m*sxx*sx*sx);
*pb=(sxx*sy*sx *sxy)/(m*sxx*sx*sx);
}
int main (void)
{
int i,m;
double pa,pb;
double x[NRMAX],y[NRMAX];

printf(" \nRegresia LINIARA:");
printf(" \nIntroduceti numarul experientelor:");
scanf("%d",&m);
printf(" \nIntroduceti abscisele si ordonatele functiei:");
for (i=0;i<m;i++) {
printf("x[%d]=",i);
scanf("%lf",&x[i]);
printf("y[%d]=",i);
scanf("%lf",&y[i]);
}
reglin(m,x,y,&pa,&pb);
printf("Rezultatul regresiei liniare este: pa=%lf; pb=%lf",pa,pb);
getch();
return 1;}

REGRESIE TRIGONOMETRICA
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define NRMAX 10
#define pi 3.141592
void regtrig (
int m,
double x[NRMAX],
double y[NRMAX],
double *pa,
double *pb
)
{
double omega,sy,scos2x, scosx,sycosx;
int i;
sy=0;scos2x=0;scosx=0;sycosx=0;
for (i=1;i<=m;i++) {
scos2x=scos2x+((cos(omega*x[i]))*(cos(omega*x[i])));
sy=sy+y[i];
scosx=scosx+(cos(omega*x[i]));
sycosx=sycosx+y[i]*(cos(omega*x[i]));
}
*pa=(sy*scos2x -scosx*sycosx)/(m*scos2x -scosx*scosx);
*pb=(m*sycosx -scosx*sy)/(m*scos2x -scosx*scosx); }

int main (void){
int i,m;
double pa,pb,omega;
double x[NRMAX] = {0,pi/2, pi, 3*pi/2, 2*pi},
y[NRMAX] = {2, 1, 0, 1, 2};
printf("REGRESIA TRIGONOMETRICA");
printf(" \nIntroduceti numarul experientelor:");
scanf("%d",&m);
printf("omega=");
scanf("%f",&omega);
/*
printf(" \nIntroduceti abscisele si ordonatele functiei:");
for (i=0;i<m;i++) {
printf(" \nx[%d]=",i);
scanf("%lf",&x[i]);
printf("y[%d]=",i) ;
scanf("%lf",&y[i]);
}
*/
regtrig(m,x,y,&pa,&pb);
printf("Rezultatul regresiei trigonometrice este: pa=%lf; pb=%lf",pa,pb);

getch();
return 1;
}

RICHARDSON
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

double f(double x)
{ return exp(x);
return 2*x;
}
double richardson( double ls, double ld, int n, int m )
{
double h;
double k;
double sumh;
double sumk;
double sum;
int i;
h=(ld -ls)/n;
k=(ld -ls)/m;
sumh=h*(f(ls)+f(ld))/2;
sumk=k*(f(ls)+f(ld))/2;
for (i=1;i<=n -1;i++) sumh=sumh+h*f(ls+(i*h));
for (i=1;i<=m -1;i++) sumk=sumk+k*f(ls+(i*k));
sum=sumh+(sumh -sumk)/((k/h)*(k/h)- 1);
return sum;
}

int main(void) {
int n,m;
double ls,ld,h,k;
printf(" \n Introduceti limitele intervalului in care se cauta solutia: ");
printf(" \n lim st:");
scanf("%lf",&ls);
printf(" \n lim dr:");
scanf("%lf",&ld);
printf(" \n numarul de subintervale 1:");
scanf("%d",&n);
printf(" \n numarul de subintervale 2:");
scanf("%d",&m);

//printf(" \n%ld",richardson(ls,ld,n ,m));
printf(" \n Valoarea integralei este: %lf",richardson(ls,ld,n,m));
getch();
}

SIMPSON
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

double f(double x)
{ return exp(x);
return x*x;
}
double simpson( do uble ls, double ld, int n )
{
double h;
double sum;
int i;
h=(ld -ls)/n;
sum=h*(f(ls)+f(ld))/3;
for (i=1;i<=n -1;i++)
{
if (!(i%2)) sum=sum+(2./3)*h*f(ls+(i*h));
else sum=sum+(4./3)*h*f(ls+(i*h));
}
return sum;
}

int main(void){
int n;
double ls,ld;
printf(" \n Introduceti limitele intervalului in care se cauta solutia: ");
printf(" \n lim st:");
scanf("%lf",&ls);
printf(" \n lim dr:");
scanf("%lf",&ld);
printf(" \n numarul de subintervale:");
scanf("%d",&n);
// printf(" \n%ld",s impson(ls,ld,n));
printf(" \n Valoarea integralei este: %lf",simpson(ls,ld,n));
getch();
}

TRAPEZ
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

double f(double x)
{
return exp(x);
return x*x;
}
doubl e trapez (
double ls,
double ld,
int n
)
{
double h;
double sum;
int i;
sum=0;
h=(ld -ls)/n;
sum=((f(ls)+f(ld))/2)*h;
for (i=1;i<=n -1;i++) sum=sum+h* f(ls+i*h);
return sum;
}

int main(void)
{
double ls,ld;
int n;
printf(" \n Introduceti limitele intervalului in care se cauta solutia: ");
printf(" \n lim st:");
scanf("%lf",&ls);
printf(" \n lim dr:");
scanf("%lf",&ld);
printf(" \n numarul de subintervale:");
scanf("%i",&n);
printf(" \n% Integrala este : %lf",trapez(ls,ld,n));
// printf(" \n Radacina este: %lf, aprox: %lf",rad,log(rad));
getch();
}

Similar Posts