Skip to content
Snippets Groups Projects
Commit 57602145 authored by simon.cirilli's avatar simon.cirilli
Browse files

Correction de nuage de points

parent 66ed95df
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <math.h> #include <math.h>
#include <time.h>
#include "regressionLin.h" #include "regressionLin.h"
int main() { int main() {
srand( time( NULL ) );
point pt0; point pt0;
pt0.x=0; pt0.x=0;
pt0.y=1; pt0.y=1;
...@@ -43,7 +44,7 @@ int main() { ...@@ -43,7 +44,7 @@ int main() {
point drt; point drt;
drt.x = 0.8; drt.x = 0.8;
drt.y = 1.2; drt.y = 1.2;
p = descenteGradient(0.000001,drt,v); p = descenteGradient(0.00000001,drt,v);
printf("Sol Numérique : a: %f b: %f\n",p.x,p.y); printf("Sol Numérique : a: %f b: %f\n",p.x,p.y);
//Tests //Tests
...@@ -52,23 +53,25 @@ int main() { ...@@ -52,23 +53,25 @@ int main() {
drtTest.y = 1.2; drtTest.y = 1.2;
vector vecTest = nuagePoints(drtTest, 30, 0, 20); vector vecTest = nuagePoints(drtTest, 30, 0, 20);
printf("Test n°1\n"); printf("Test n°1\n");
p = descenteGradient(0.000001,drtTest,vecTest); p = descenteGradient(0.00000001,drtTest,vecTest);
printf("Sol Numérique Test 1 : a: %f b: %f\n",p.x,p.y); printf("Sol Numérique Test 1 : a: %f b: %f\n",p.x,p.y);
printf("Test n°2\n"); printf("Test n°2\n");
drtTest.x = 1; drtTest.x = 1;
drtTest.y = 1; drtTest.y = 1;
vector vecTest2 = nuagePoints(drtTest, 10, 0, 10); vector vecTest2 = nuagePoints(drtTest, 10, 0, 10);
p = descenteGradient(0.000001,drtTest,vecTest2); p = descenteGradient(0.00000001,drtTest,vecTest2);
printf("Sol Numérique Test 2 : a: %f b: %f\n",p.x,p.y); printf("Sol Numérique Test 2 : a: %f b: %f\n",p.x,p.y);
printf("Test validation croisée\n"); printf("Test validation croisée\n");
vector ve1 = nuagePoints(drtTest, 100, 0, 100); drtTest.x = 1;
vector ve2 = nuagePoints(drtTest, 100, 0, 100); drtTest.y = 1;
vector ve3 = nuagePoints(drtTest, 100, 0, 100); vector ve1 = nuagePoints(drtTest, 10, 0, 100);
double* lol = validationCroisee(drtTest,ve1,ve2,ve3); vector ve2 = nuagePoints(drtTest, 10, 0, 100);
vector ve3 = nuagePoints(drtTest, 10, 0, 100);
double* er = validationCroisee(drtTest,ve1,ve2,ve3);
for(int i=0;i<3;i++){ for(int i=0;i<3;i++){
printf("Erreurs : %f\n",lol[i]); printf("Erreurs : %f\n",er[i]);
} }
vector_free(&v); vector_free(&v);
...@@ -77,7 +80,7 @@ int main() { ...@@ -77,7 +80,7 @@ int main() {
vector_free(&ve1); vector_free(&ve1);
vector_free(&ve2); vector_free(&ve2);
vector_free(&ve3); vector_free(&ve3);
free(lol); free(er);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
No preview for this file type
/*
* Auteurs : Simon Cirilli, Kiady Arintsoa
* HEPIA 2020
* Description :
*/
#include "regressionLin.h" #include "regressionLin.h"
point findBestDroite(vector pts){ point findBestDroite(vector pts){
...@@ -69,7 +75,6 @@ point descenteGradient(double precision, point drt, vector pts){ ...@@ -69,7 +75,6 @@ point descenteGradient(double precision, point drt, vector pts){
vector nuagePoints(point drt, int len, int minP, int maxP){ vector nuagePoints(point drt, int len, int minP, int maxP){
vector vec; vector vec;
vector_init(&vec); vector_init(&vec);
srand( time( NULL ) );
double bruit; double bruit;
point add; point add;
// Il faut prend drt proche de la solution Analytique // Il faut prend drt proche de la solution Analytique
...@@ -79,6 +84,7 @@ vector nuagePoints(point drt, int len, int minP, int maxP){ ...@@ -79,6 +84,7 @@ vector nuagePoints(point drt, int len, int minP, int maxP){
// printf("%f\n",bruit); // printf("%f\n",bruit);
add.x = ((double) rand()*(maxP-minP)/(double)RAND_MAX-minP); add.x = ((double) rand()*(maxP-minP)/(double)RAND_MAX-minP);
add.y = drt.x * add.x + drt.y + bruit; add.y = drt.x * add.x + drt.y + bruit;
//printf("%f %f %f\n",add.x,add.y,bruit);
vector_push(&vec,add); vector_push(&vec,add);
} }
return vec; return vec;
...@@ -91,7 +97,8 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){ ...@@ -91,7 +97,8 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
vector g1g2; vector g1g2;
vector_concat(&g1g2,g1,g2); vector_concat(&g1g2,g1,g2);
// Calculer la descenteGradient sur g1g2 // Calculer la descenteGradient sur g1g2
point p1u2 = descenteGradient(0.000001,drtTest,g1g2); point p1u2 = descenteGradient(0.00000001,drtTest,g1g2);
printf("p1u2 : %f %f\n",p1u2.x,p1u2.y);
// Test sur g3 => point 2.1 de l'Analytique avec a et b les valeurs retournée sur p1u2 // Test sur g3 => point 2.1 de l'Analytique avec a et b les valeurs retournée sur p1u2
erreurs[0] = 0; erreurs[0] = 0;
// On trouve le carré de l'erreur pour chaque point // On trouve le carré de l'erreur pour chaque point
...@@ -107,7 +114,8 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){ ...@@ -107,7 +114,8 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
vector g1g3; vector g1g3;
vector_concat(&g1g3,g1,g3); vector_concat(&g1g3,g1,g3);
// Calculer la descenteGradient sur g1g3 // Calculer la descenteGradient sur g1g3
point p1u3 = descenteGradient(0.000001,drtTest,g1g3); point p1u3 = descenteGradient(0.00000001,drtTest,g1g3);
printf("p1u3 : %f %f\n",p1u3.x,p1u3.y);
// test sur g2 // test sur g2
erreurs[1] = 0; erreurs[1] = 0;
for(int i = 0; i< g2.length; i++){ for(int i = 0; i< g2.length; i++){
...@@ -122,7 +130,8 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){ ...@@ -122,7 +130,8 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
vector g2g3; vector g2g3;
vector_concat(&g2g3,g2,g3); vector_concat(&g2g3,g2,g3);
// Calculer la descenteGradient sur g2g3 // Calculer la descenteGradient sur g2g3
point p2u3 = descenteGradient(0.000001,drtTest,g2g3); point p2u3 = descenteGradient(0.00000001,drtTest,g2g3);
printf("p2u3 : %f %f\n",p2u3.x,p2u3.y);
// Test sur g1 // Test sur g1
erreurs[2] = 0; erreurs[2] = 0;
for(int i = 0; i< g1.length; i++){ for(int i = 0; i< g1.length; i++){
......
...@@ -19,6 +19,6 @@ point descenteGradient(double precision, point drt, vector pts); ...@@ -19,6 +19,6 @@ point descenteGradient(double precision, point drt, vector pts);
// Tests // Tests
vector nuagePoints(point drt, int len, int minP, int maxP); vector nuagePoints(point drt, int len, int minP, int maxP);
double* validationCroisee(point drt, vector g1, vector g2, vector g3); double* validationCroisee(point drtTest, vector g1, vector g2, vector g3);
#endif #endif
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment