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();
}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: int n, // gradul polinomului de interpolare double x[], // vectorul absciselor punctelor date double y[], // ordonatele punctelor date double xp //… [623370] (ID: 623370)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
