Sunteți pe pagina 1din 5

Coman Ioana-Malina

Grupa 8313

Colociviu Metode Numerice

1. #include "stdio.h"
#include "stdlib.h"
#include "math.h"

double Neville(double xi[], double yi[], int ni, double x, double* err)
/*--------------------------------------------------------------------------
Evalueaza polinomul de interpolare Lagrange prin metoda Neville si returneaza o
estimare a erorii absolute
---------------------------------------------------------------------------*/

{
double* p, y;
int i, m;
p = (double*)malloc(ni * sizeof(double));

for (i = 0; i < ni; i++) /* initializeaza tabloul cu */


p[i] = yi[i]; /* polinoamele de ordin 0 */
for (m = 1; m < ni - 1; m++) /* parcurge coloanele tabloului */
for (i = 0; i < ni - m; i++)
p[i] = ((x - xi[m + i]) * p[i] + (xi[i] - x) * p[i + 1]) / (xi[i] -
xi[m + i]);
y = p[1]; /* valoarea polinomului */
*err = fabs(p[1] - p[2]); /* estimarea erorii */
free(p);
return y;
}

void main()
{
double x[10] = { 0.05,0.15, 0.2, 0.3, 0.4, 0.5, 0.8, 1.1, 1.4, 1.7 };
double y[10];
double err = 0;

for (int i = 0; i < 10; i++)


y[i] = (7 - x[i])/23;
printf("Valoarea interpolantului in punctul 1.55 este %lf,", Neville(x, y,
10, 1.55, &err));
printf(" cu o valoare a erorii de %.5lf\n", err);
printf("Valoarea interpolantului in punctul 1.55 este %lf,", Neville(x, y,
10, 1.65, &err));
printf(" cu o valoare a erorii de %.5lf\n", err);
printf("Valoarea interpolantului in punctul 1.55 este %lf,", Neville(x, y,
10, 1.9, &err));
printf(" cu o valoare a erorii de %.5lf\n", err);
}
Coman Ioana-Malina
Grupa 8313

2.
// Algoritmul Euler -modificat
#include <stdio.h>
#include <math.h>
float f(float x, float y)
{
return (3-4*y)/(2*x);
}

int main(void)
{
float x=1.0, y=-4.0, h=0.05, y1, y2;
Coman Ioana-Malina
Grupa 8313

int n=0;

printf("n=%3d x=%8.4f y=%8.4f \n",n,x,y);


for(n=1;n<=50;n++) {
y1=f(x,y);
y=y+h*f(x,y);
x=x+h;y2=f(x,y);
y=y+h*(y1+y2)/2;
printf("n=%3d x=%8.4f y=%8.4f val_ex%8.4f \n",n,x-h,y,3/4-19/(4*x*x));
}
return 0;}
Coman Ioana-Malina
Grupa 8313

3.

#include <stdio.h>
#include <math.h>
#define Pi 3.1415926535897932384626433832795

double Func(double x)
{
return sin(x);
}

double TrapezControl(double a, double b)


/* Calculeaza integrala functiei Func pe intervalul [a,b] utilizand formula
trapezelor cu control automat al pasului de integrare */
{
const double eps = 1e-6;
const int kmax = 30;
double h, sum, t, t0;
long i, n;
int k;

h = b - a;
n = 1;
t0 = 0.5 * h * (Func(a) + Func(b)); //aprox. initiala

for (k = 1; k <= kmax; k++)


{
sum = 0.0;
for (i = 1; i <= n; i++)
sum += Func(a + (i - 0.5) * h);
t = 0.5 * (t0 + h * sum);
if (fabs(t - t0) <= eps * fabs(t))
break;
h *= 0.5;
n *= 2;
t0 = t;
}

if (k >= kmax)
printf("TrapezControl: nr. maxim de iteratii depasit!\n");

return t;
}

void main()
{
printf("integrala functiei atan(x) pe intervalul [pi 0] are valoarea:
%8.5f \n", TrapezControl(Pi ,0));
Coman Ioana-Malina
Grupa 8313
}

S-ar putea să vă placă și