From 9aed84e8b11d027cc8226e889c8e9bad95f63efb Mon Sep 17 00:00:00 2001 From: "simon.cirilli" <simon.cirilli@gmail.com> Date: Mon, 2 Nov 2020 10:00:19 +0100 Subject: [PATCH] =?UTF-8?q?Fonctions=20analytique=20et=20num=C3=A9rique=20?= =?UTF-8?q?finie=20sauf=20si=20erreurs=20sinon=20good?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 +- prog | Bin 23344 -> 95136 bytes src/main.c | 38 ++++++++++ src/main.o | Bin 6496 -> 12784 bytes src/regressionLin.c | 73 ++++++++++++++----- src/regressionLin.h | 20 +----- src/regressionLin.o | Bin 8240 -> 23184 bytes src/vector.c | 166 ++++++++++++++++++++++++++++++++++++++++++++ src/vector.h | 64 +++++++++++++++++ src/vector.o | Bin 0 -> 76232 bytes 10 files changed, 327 insertions(+), 36 deletions(-) create mode 100644 src/vector.c create mode 100644 src/vector.h create mode 100644 src/vector.o diff --git a/Makefile b/Makefile index 1821e5e..0dcc309 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ LIBS=-lcunit -lm -lxml2 all: prog -prog:src/main.o src/regressionLin.o +prog:src/main.o src/regressionLin.o src/vector.o $(CC) $^ -o $@ $(LIBS) $(SANITIZERS) $(OPTIM_OPTS) %.o : %.c diff --git a/prog b/prog index 8659b5cfa0775c39eb8687b4a1a217c0879d990d..5e114ca1adbd545e7798c5e681d8c04a5f7291e7 100755 GIT binary patch literal 95136 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 delta 7551 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 QGfFVG2QW;pE@o5(0Mth4YXATM diff --git a/src/main.c b/src/main.c index 11f9a15..f4e3c49 100644 --- a/src/main.c +++ b/src/main.c @@ -8,5 +8,43 @@ int main() { + point pt0; + pt0.x=0; + pt0.y=0; + + point pt1; + pt1.x=1; + pt1.y=1; + + point pt2; + pt2.x=2; + pt2.y=2; + + point pt3; + pt3.x=3; + pt3.y=3; + + point pt4; + pt4.x=4; + pt4.y=4; + + vector v; + vector_init(&v); + vector_push(&v,pt0); + vector_push(&v,pt1); + vector_push(&v,pt2); + vector_push(&v,pt3); + vector_push(&v,pt4); + + point p = findBestDroite(v); + printf("Sol Analytique : %f %f\n",p.x,p.y); + point drt; + drt.x=1; + drt.y=0; + p = descenteGradient(0.00001,drt,v); + printf("Sol Numérique : %f %f\n",p.x,p.y); + + vector_free(&v); + return EXIT_SUCCESS; } diff --git a/src/main.o b/src/main.o index 82399091ac91c0bd190889bed3a65b312d61704d..65995157d7e47db285d3f2f5d61bdf31f4bee87f 100644 GIT binary patch literal 12784 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 BG57!g literal 6496 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 diff --git a/src/regressionLin.c b/src/regressionLin.c index 19f80f7..a297cde 100644 --- a/src/regressionLin.c +++ b/src/regressionLin.c @@ -1,36 +1,73 @@ #include "regressionLin.h" -droite findBestDroite(point* pts){ +point findBestDroite(vector pts){ // dans le cas que l'on a vu en exercice on peut directement dire : // car c'est la même fonction de base + double gA=0; // somme des xi ^2 + double gB=0; // somme des xi + double gC=0; // sommes des xi*yi + double gD=0; // somme des yi + double gN=pts.length; // nombre de points + + for(int i = 0; i < pts.length; i++){ + gA += pts.content[i].x * pts.content[i].x; + gB += pts.content[i].x; + gC += pts.content[i].x * pts.content[i].y; + gD += pts.content[i].y; + } - double gA=1; // somme des xi ^2 - double gB=1; // somme des xi - double gC=1; // sommes des xi*yi - double gD=1; // somme des yi - double gN=2; // nombre de points double numerateur=gC * gN - gB * gD; double denominateur=gA * gN - gB * gB; // pas possible si = 0 double a = numerateur / denominateur; double b = ( gC - a * gA ) / gB; - droite d; - d.a=a; - d.b=b; + point d; + d.x=a; + d.y=b; return d; } -point minmethode1(point depart, point arrivee, droite fonction){ - point pt; - return pt; -} -point solvSystem(droite dim1, droite dim2){ +point descenteGradient(double precision, point drt, vector pts){ point pt; - return pt; -} + pt.x = drt.x; + pt.y = drt.y; + double gradientx = 0; + double gradienty = 0; + double oldptx = 0; + double oldpty = 0; + double testSortie; + + while(1){ + gradientx = 0; + gradienty = 0; + testSortie = 0; + + + for(int i = 0; i < pts.length; i++){ + gradientx += ((pts.content[i].x * pts.content[i].x) * drt.x) + (drt.y * pts.content[i].x) - (pts.content[i].x * pts.content[i].y); + gradienty += (drt.x * pts.content[i].x) - pts.content[i].y; + } + gradientx = gradientx*2; + + gradienty += drt.y * pts.length; + gradienty = gradienty*2; + + double lambda = 0.1; + //drt.x est a et drt.b est b + oldptx = pt.x; + oldpty = pt.y; + + pt.x = drt.x - lambda *(gradientx); + pt.y = drt.y - lambda *(gradienty); + + + testSortie = sqrt(pow(pt.x - oldptx,2) + pow(pt.y - oldpty,2)); + + if(testSortie < precision){ + break; + } + } -point descenteGradient(int precision, droite drt){ - point pt; return pt; } diff --git a/src/regressionLin.h b/src/regressionLin.h index f1902d6..47b68a3 100644 --- a/src/regressionLin.h +++ b/src/regressionLin.h @@ -7,29 +7,15 @@ #include <string.h> #include <math.h> -typedef struct _point { - double x; - double y; -} point; - -typedef struct _droite { - double a; - double b; -} droite; - +#include "vector.h" // Analytique -droite findBestDroite(point* pts); +point findBestDroite(vector pts); // vérifier que ce que l'on trouve soit correct à l'exercice (on a déjà fait dans un exo) // on peut donc reprendre simplement A=.. et B=.. si la fonction de base ne change pas // sinon utilise solvSystem -point minmethode1(point depart, point arrivee, droite fonction); -// on doit faire ceci uniquement si la fonction de base à minimisé n'est plus la somme de a*x+b-y le tout au carré - -point solvSystem(droite dim1, droite dim2);//différentes méthodes vues en classe donc minmethode1 etc. - // Numérique -point descenteGradient(int precision, droite drt); +point descenteGradient(double precision, point drt, vector pts); #endif diff --git a/src/regressionLin.o b/src/regressionLin.o index 8a66d8cb671cb37de211f2f370d1c391dc2f9096..e848455ca599c588cea6cc7e76440a0860701014 100644 GIT binary patch literal 23184 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 BL1_R0 literal 8240 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 JA|#9+egMNMhU)+T diff --git a/src/vector.c b/src/vector.c new file mode 100644 index 0000000..4f02bab --- /dev/null +++ b/src/vector.c @@ -0,0 +1,166 @@ +#include "vector.h" + +void vectorPrint(vector v){ + for(int i=0;i<v.length;i++){ + printf("%f %f",v.content[i].x,v.content[i].y); + } + printf("\n"); +} + +void printError(int index){ + const char* error_code_names[] = {"ok", "out_of_bounds", "memory_error", "unitialized"}; + printf("%s\n", error_code_names[index]); +} + +error_code vector_init(vector* v){ + error_code result = ok; + + v->capacity = VECTOR_INIT_CAPACITY; + v->length = 0; + v->content = malloc(sizeof(type)*VECTOR_INIT_CAPACITY); + + if (v->content == NULL) + { + result = uninitialized; + } + return result; +} + + +error_code vector_length(vector *v, int *length){ + error_code result = ok; + + if (length != NULL) + { + *length = v->length; + }else{ + result = uninitialized; + } + + return result; +} + +error_code vector_push(vector *v, type element){ + error_code result = ok; + + if (v->length == v->capacity) + { + v->capacity = v->capacity * 2; + v->content = realloc(v->content, sizeof(type) * v->capacity); + } + + v->content[v->length] = element; + v->length++; + + return result; +} + +error_code vector_pop(vector *v, type *element){ + error_code result = ok; + + *element = v->content[v->length-1]; + point pt; + pt.x=0; + pt.y=0; + v->content[v->length-1] = pt; + v->length--; + + if (v->length < v->capacity/4) + { + v->capacity = v->capacity / 2; + v->content = realloc(v->content, sizeof(type) * v->capacity); + } + + return result; +} + +error_code vector_set(vector *v, int index, type element){ + error_code result = ok; + + if (index < v->length && index >= 0) + { + v->content[index] = element; + } else { + result = out_of_bounds; + } + + return result; +} + +error_code vector_get(vector *v, int index, type *element){ + error_code result = ok; + + if (index < v->length && index >= 0) + { + *element = v->content[index]; + } else { + result = out_of_bounds; + } + + return result; +} + +error_code vector_remove(vector *v, int index){ + error_code result = ok; + + if (index < v->length && index >= 0) + { + for (int i = index; i < v->length; i++) + { + v->content[i] = v->content[i+1]; + } + v->length--; + if (v->length < v->capacity/4){ + v->capacity = v->capacity / 2; + v->content = realloc(v->content, sizeof(type) * v->capacity); + } + + } else { + result = out_of_bounds; + } + + return result; +} + +error_code vector_insert(vector *v, type element, int index){ + error_code result = ok; + + if (index < v->length && index >= 0){ + if (v->length == v->capacity){ + v->capacity = v->capacity * 2; + v->content = realloc(v->content, sizeof(type) * v->capacity); + } + + for (int i = v->length-1; i >= index; i--){ + v->content[i+1] = v->content[i]; + } + v->content[index] = element; + v->length++; + }else{ + result = out_of_bounds; + } + + return result; +} + +error_code vector_free(vector *v){ + error_code result = ok; + + if (v->content != NULL) + { + v->capacity = -1; + v->length = -1; + free(v->content); + } + + return result; +} + +error_code vector_empty(vector *v){ + error_code error =uninitialized; + if(v->content!=NULL){ + v->length=0; + error = ok; + } + return error; +} diff --git a/src/vector.h b/src/vector.h new file mode 100644 index 0000000..829019f --- /dev/null +++ b/src/vector.h @@ -0,0 +1,64 @@ +/* +Auteur : Simon Cirilli +Projet : Outil de gestion de vecteurs +Hesge 2019 +*/ +#ifndef VECTOR_H +#define VECTOR_H + +#include <stdio.h> +#include <stdlib.h> +#include <stdbool.h> +#include <math.h> + +#define VECTOR_INIT_CAPACITY 4 + + +typedef struct _point { + double x; + double y; +} point; + +typedef point type; + +typedef struct _vector { + type *content; // actual content of the vector + int capacity; // capacity allocated + int length; // actual length +} vector; + +typedef enum error_code { + ok, out_of_bounds, memory_error, uninitialized +} error_code; + + +void printError(int index); + +void vectorPrint(vector v); + +error_code vector_init(vector *v); + +error_code vector_length(vector *v, int *length); + +error_code vector_push(vector *v, type element); + +error_code vector_pop(vector *v, type *element); + +error_code vector_set(vector *v, int index, type element); + +error_code vector_get(vector *v, int index, type *element); + +error_code vector_remove(vector *v, int index); + +error_code vector_insert(vector *v, type element, int index); + +error_code vector_empty(vector *v); + +error_code vector_free(vector *v); + +error_code vector_map(vector *v, type (*f)(type), vector *rhs); + +error_code vector_filter(vector *v, bool (*f)(type), vector *rhs); + + +#endif diff --git a/src/vector.o b/src/vector.o new file mode 100644 index 0000000000000000000000000000000000000000..975b949e63c195d145badfa60e030d4dd1ef599c GIT binary patch literal 76232 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 literal 0 HcmV?d00001 -- GitLab