diff --git a/julia_set/a.out b/julia_set/a.out new file mode 100755 index 0000000000000000000000000000000000000000..6bc6e42cec6d07b667fa27873aa77c6d649b980a Binary files /dev/null and b/julia_set/a.out differ diff --git a/julia_set/julia.txt b/julia_set/julia.txt new file mode 100644 index 0000000000000000000000000000000000000000..f25c145def8eab609a3536662583ba47c3e8df44 --- /dev/null +++ b/julia_set/julia.txt @@ -0,0 +1,200 @@ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################# ############################################################################################################################################## +############################################################################################################################################################# ############################################################################################################################################## +########################################################################################################################################################### ############################################################################################################################################# +############################################################################################################################################################ # ############################################################################################################################################ +############################################################################################################################################################ ## ########################################################################################################################################### +############################################################################################################################################################ # ############################################################################################################################################ +######################################################################################################################################################## # ########################################################################################################################################### +######################################################################################################################################################### ############################################################################################################################################ +#################################################################################################################################################### # ### # ########################################################################################################################################### +##################################################################################################################################################### # # ############################################################################################################################################ +##################################################################################################################################################### # # #### ###################################################################################################################################### +##################################################################################################################################################### ## #### # ################################################################################################################################### +######################################################################################################################################################## ### ### # ################################################################################################################################## +###################################################################################################################################################### ### # ### ################################################################################################################################## +######################################################################################################################################################### # ## ################################################################################################################################### +######################################################################################################################################################### # ## # # ##################################################################################################################################### +######################################################################################################################################################## # ## # ##################################################################################################################################### +###################################################################################################################################################### # # # # ###### ################################################################################################################################### +###################################################################################################################################################### # # ## ## ################################################################################################################################## +################################################################################################################################################### ## # # # ################################################################################################################################## +############################################################################################################################################# #### # # # # ################################################################################################################################# +############################################################################################################################################### #### # # ## # ################################################################################################################################# +############################################################################################################################################## ## # ###################################################################################################################################### +############################################################################################################################################## ## # # #################################################################################################################################### +############################################################################################################################################ # # # # ################################################################################################################################# +############################################################################################################################################ ## ## ## ############# ######### ######################################################################################################## +################################################################################################################################ ########## ### ## # ############### ######### # #################################################################################################### +################################################################################################################################# ## ## ####### # ## # ################## ### ##### ###################################################################################################### +################################################################################################################################ # # ##### # # ############ # # # # ###################################################################################################### +################################################################################################################################ ## # ## ## # ### # # ######## ## # # ### ## ##################################################################################################### +################################################################################################################################ ### ## ## ## # ########## ## # # ################################################################################################### +################################################################################################################################## # ## # # # ########## ## ### ##################################################################################################### +################################################################################################################################## # ## # # ## ################ # # ##################################################################################################### +################################################################################################################################# # # #### ## # ################ # ##################################################### ############################################# +################################################################################################################################### ## #### # ## # ################ ### #################################################### # # ############################################## +################################################################################################################################ # # # ## ######### ### # ############# ### ################################################## # ############################################### +################################################################################################################################# # ### ## # ## ## ############ # # ###################################################### ############################################### +################################################################################################################################### ## # # # ## ## # ###### ####### # # ###################################### ############### ############################################### +################################################################################################################################## ##### ### # # ##### ### ##### ######################################### ###### # ### # ############################################# +############################################################################################################################### # # ## ### # # ### ### # # # # ## # #### # ############################## #### # # ########################################### +############################################################################################################################### # # #### ###### # # #### # # # ### # ##### ####################### ### # ############################################ +############################################################################################################################# ## # ###### ### # ## #### ####### # # # ###### # # ######################## # ################################################ +############################################################################################################################### # ## ##### ### ###### ######### # # ###### # ################### ## # ## ## ############################################ +################################################################################################################################# # # # #### ## ######## ######## # # ##### ### # ##################### # # # ## ############################################ +################################################################################################################################ # ######## # ##### ### #### # ##### # # ## ### ## #################### ## # # ############################################# +################################################################################################################################# # ######### ######### #### ## ### ###### # ### ## ##################### # ### # ############################################# +################################################################################################################################# ######### ### ######## # #### # # ## ###### # ##################### #### # ### ############################################### +############################################################################################################################### ############### ### ## # ## #### # ##### # # ######################### ##### # ############################################## +################################################################################################################################## ################### # # # ###### ###### # ### ################## ##### # # # ####### ####################################### +################################################################################################################################## # ################## ##### ##### ##### ######## # ###################### ## ### ##### # # ################################### +################################################################################################################################## ###################### # # #### ##### # # # ####### # ############################## ###### ################################## +#################################################################################################################################################### # # ### # # ## # ###### ## # # ########################### ####### ################################### +################################################################################################################################################## ## ##### # ### ###### ## # ########################## ## ##### ## ################################## +############################################################### ################################################################################ ## ###### # ### ### ###################### ## # ## #### #################################### +############################################################### ################################################################################ ## # # #### ### ## # ## ################### # ##### # ##################################### +################################################################# ############################################################################# # ## ### # ### ## # # # ### # ############## ### ## ################################## +############################################################### ###### #################### #################################################### ## ####### ### ############# #### ############## # # #### # # #### # ############################### +############################################################## # ##################### ################################################### # # ### # ## ##### ## ## # # # # # ####### ##### # ### #### # ## ############################### +############################################################# # ## # #################### # ################################################### # ## # ###### ### # # # # ######### #### # # ## # # # ########### ### ################ +############################################################## # # # ###################### # ################################################### # ## #### # # #### # #### #### #### ## ############ # ################ +############################################################# ### ## ## ################# # ################################################## # # ## # #### # ##### ###### # ## ### #### ############ # ############## +################################################################# # # ########## ## ############################################### # ##### ### ##### # # ##### # ##### # ### # ## ######## ############## +################################################################# # ########### # # # ############ ################################### # # ### #### # ########### ## ######## # ### # ######### ############### +################################################################ ## ####### # ################################################ # # # ## # # ###### # # ##### ### # # ##### # ############ # # ################ +############################################################### # # ####### ## ######### # ### #################################### ###### # # ##### # # # ## ### # ###### ### ##### # ############ +############################################################## # ###### #### ##### # ######################### ######## #### ### # #### # # ### ### ## ## # ############ +############################################################## # # ###### ## # #### # ######### ############ # # ############ #### ## # ##### ## #### ## ## # ############ +########################################################### # # ######## ## # ######## # # #### #### # ########### # ############# ###### # # ### # ## # #### ## # ############# +########################################################### # # ############ #### # ###### ######## # ############ ############ # ## # #### ## # # # #### # # ### # ############ +############################################################ # ################# # ####### ##### ######## # # ########## ## # #### # ### ## # ###### # ## # # # #### ##### +#################################################### ## #### # ###### ## # ### # ### ##### # ###### ## # ########### # ## # ## ###### # # #### # ## # ## ####### +##################################################### ## ### # # ##### # # ## # ##### #### ## #### ########## ### # #### # # # # ### # ## # ## # ##### +####################################################### #### ## # ### # #### # # ### ## # ### # # # #### ######### # #### # #### # ##### ##### ## ## #### +###################################################### ## ## ## # # #### # # ## # ## # ## # ######## ## # # # ######## ## ##### ##### # # # # ### # # # # #### +###################################################### # ## #### ## #### # ### # # ####### # # ######## # ## ###### ### # ### # # # ###### # # # +####################################################### ## # #### ### ## #### ### # ##### # ### ######## # # # ####### # # ## # ## ## # # ### ### +######################################################## # # # ## ## ### #### # ####### # # ########## ### # # ###### ## # # ##### ## # ###### # # ######### +##################################################### # # ## # ### # # ## # ## # ## ## # # ### ####### ### #### ##### # # # # ####### # ### ######## +###################################################### ## ## ##### # ##### # #### ##### # # # ###### # # ### ### # # # ## # # # ## ### # # ## # ######### ## ########## +##################################################### #### # ##### # # ## # #### #### # ## ##### # # ####### ## ### # ###### # ## ## # ## # ## ############## ######### +###################################################### ######### ## ## ### ## ## # # ## ######## ##### ## ## ###### # ## # #### # ## ### ### # ## #### ##################### +##################################################### # ########## # #### # ## # #### ####### ## # # # # ####### # # # #### # ### # ## # # ## # ## ####################### +####################################################### ######### # #### ## ## ### ## # ############## # ### # # ### # ## ### ## # ### ### # # # #################### +################################################################ # ### ### ## # # # # #### ## # #### # ###### # ### ### ## # ## # # ##################### +################################################################# ## # ## ## ## ## # ######## # # # ####### ##### ## ### ## # ## # #################### +############################################################### ## ######## # # # ## ######## ## # ### # ######## ###### #### # ## # ##### # ####################### +######################### ########### ########################## # ##### ## # ## # ########### ## # ### ###################### # # # ##### ######################## +######################## ############# ######################### ## ### # # # ## # # # # # ## #### ######### ## #### # ## ########################## # ### ######################### +########################## #### # ######################## ### ### # ########### ## ### ############# ### ## ########### # ### ### ######################## # #### ######################### +########################## ### # ########################## ## # #### ## ######### #### ## # # # # # ## # # # ### ## ######################### ############# ####################### +######################### ##### # # # ###################### ### # ## ########### # ## # ## ##### # ########################## ########### ######################## +######################## # ##### # ## # #### ###### ######## # ### # ## ######## ## # # # ######## ## ############################################################## +##################### # ## # ## ### ## ##### ####### # # # ######## # ## ## ## ## # ## ################################################################ +###################### # # ## # ## ### ### # ###### # #### # ## #### # # # # ## ### ### # ############################################################### +##################### # # # ### ### # ## ### ## # ### # # ### # ############## # ## ### ## ## #### # ######### ###################################################### +######################## ## # ## # # ## # ### # #### # # # ####### # # # # ## ####### #### # ## # #### # ########## # #################################################### +###################### #### ## # ### ### ## # #### # ## # ###### ## ## ##### ######## ## # # ## ## ### ## ## ######### ##################################################### +########## ############## ## # ## # ## ## # ###### # ### ## ####### # # ##### ## # #### #### # ## # # ##### # #### #################################################### +########### ## ######### # ## # # ### ## # # # ## # # # ### ### # # ###### # # # ##### #### # ##### # ##### ## ## ##################################################### +######### ### # ####### # # # # ##### #### ### ####### ### # # ## ## # ## # ## # # ### # ## # # #################################################### +########## # # ###### # ## ##### # # ## ###### # # ### ########## # # ####### # #### ### ## ## # # # ####################################################### +#### ### # # ## ## # ## # # ####### # # # ######## ### # ##### # ### #### ## ### #### # ## ###################################################### +## # # ###### # # # ### # ### ###### ## # ######## # # ####### # # ### # #### ## #### ## # ##################################################### +##### # # # # ### # # # # ##### ##### ## ######## # # # ## ######## # ## # ## # ## # # #### # # ## ## ## ##################################################### +##### ## ## ##### ##### # #### # #### # ######### #### # # # ### # ## ### # # #### # ### # ## #### ###################################################### +###### # ## # ## # ### # # # # #### # ### ########## #### ## #### ##### # ## # # ##### # # ### ## #################################################### +######## ## # ## # #### # # ###### ## # ## # ########### # ## ###### # ##### ### # ### # ## ###### # #### ## ################################################### +###### #### # # # ## # ###### # ## ### # #### # ## ########## # # ######## ##### ####### # ################# # ########################################################### +############# # ### # # #### # # # ## #### # ## # ############ ############ # ######## ###### # #### ############ # # ########################################################## +############## # ## #### # ## # ### # # ###### ############# # ########### # #### #### # # ######## # ## ######## # # ########################################################## +############# # ## ## #### ## ##### # ## #### ############ # # ############ ######### # #### # ## ###### # # ############################################################# +############# # ## ## ### ### # # #### # ### #### ######## ######################### # ##### #### ###### # ############################################################# +############# # ##### ### ###### # ### ## # # # ##### # # ###### #################################### ### # ######### ## ####### # # ############################################################## +################# # # ############ # ##### # # ### ##### # # ###### # # ## # # # ################################################ # ####### ## ############################################################### +################ ######### # ### # ######## ## ########### # #### ### # # ################################### ############ # # # ########### # ################################################################ +############### ######## ## # ### # ##### # ##### # # ##### ### ##### # ############################################### ## ########## # # ################################################################ +############### # ############ #### ### ## # ###### ##### # #### # ## # # ################################################## # ################# ## ## ### ############################################################ +################# # ############ ## #### #### #### # #### # # #### ## # ################################################### # ###################### # # # ############################################################# +################# ### ########### # # # ## # # #### ######### # # # # ### ###### # ## # ################################################### # #################### # ## # ############################################################ +################################ ## # #### ### # ##### ####### # # # # # ## ## ##### ## # ### # # ################################################### ##################### # ############################################################# +################################ # #### # # #### # # ############## #### ############# ### ####### ## #################################################### #################### ###### ############################################################## +################################### ## ### ############## # ### # # # ## ### # ### ## # ############################################################################# ################################################################ +###################################### # ##### # ################### ## # ## ### #### # # ## ################################################################################ ############################################################## +##################################### #### ## # ## ###################### ### ### # ###### ## ################################################################################ ############################################################## +################################### ## ##### ## ########################## # ## ###### ### # ##### ## ################################################################################################################################################# +#################################### ####### ########################### # # ## ###### # ## # # ### # # ################################################################################################################################################### +################################### ###### ############################## # ####### # # # ##### #### # # ###################### ################################################################################################################################# +#################################### # # ##### ### ## ###################### # ######## ##### ##### ##### ################## # ################################################################################################################################# +######################################## ####### # # # ##### ################## ### # ###### ###### # # # ################### ################################################################################################################################# +############################################### # ##### ######################### # # ##### # #### ## # ## ### ############### ############################################################################################################################## +################################################ ### # #### ##################### # ###### ## # # #### # ######## ### ######### ################################################################################################################################ +############################################## # ### # ##################### ## ### # ###### ### ## #### ######### ######### # ################################################################################################################################ +############################################## # # ## #################### ## ### ## # # ##### # #### ### ##### # ######## # ############################################################################################################################### +############################################# ## # # # ##################### # ### ##### # # ######## ######## ## #### # # # ################################################################################################################################ +############################################# ## ## # ## ################### # ###### # # ######### ###### ### ##### ## # ############################################################################################################################## +################################################# # ######################## # # ###### # # # ####### #### ## # ### ###### # ## ############################################################################################################################ +############################################# # ### ####################### ##### # ### # # # #### # # ###### #### # # ############################################################################################################################## +############################################ # # #### ############################## # #### # ## # # # # ### ### # # ### ## # # ############################################################################################################################## +############################################## # ### # ###### ######################################### ##### ### ##### # # ### ##### ################################################################################################################################# +################################################ ############### ###################################### # # ####### ###### # ## ## # # # ## ################################################################################################################################## +################################################ ###################################################### # # ############ ## ## # ## ### # ################################################################################################################################ +################################################ # ################################################## ### ############# # ### ######### ## # # # ############################################################################################################################### +############################################### # # #################################################### ### ################ # ## # #### ## ################################################################################################################################## +############################################## ##################################################### # ################ # ## #### # # ################################################################################################################################ +###################################################################################################### # # ################ ## # # ## # ################################################################################################################################# +###################################################################################################### ### ## ########## # # # ## # ################################################################################################################################# +#################################################################################################### # # ## ########## # ## ## ## ### ############################################################################################################################### +###################################################################################################### ## ### # # ## ######## # # ### # ## ## # ## ############################################################################################################################### +####################################################################################################### # # # # ############ # # ##### # # ############################################################################################################################### +####################################################################################################### ##### ### ################## # ## # ####### ## ## ################################################################################################################################ +##################################################################################################### # ######### ############### # ## ### ########## ############################################################################################################################### +######################################################################################################### ######### ############# ## ## ## ########################################################################################################################################### +################################################################################################################################## # # # # ########################################################################################################################################### +##################################################################################################################################### # # ## ############################################################################################################################################# +####################################################################################################################################### # ## ############################################################################################################################################# +################################################################################################################################## # ## # # #### ############################################################################################################################################## +################################################################################################################################## # # # # #### ############################################################################################################################################ +################################################################################################################################### # # # ## ################################################################################################################################################## +################################################################################################################################### ## ## # # ##################################################################################################################################################### +#################################################################################################################################### ###### # # # # ##################################################################################################################################################### +###################################################################################################################################### # ## # ####################################################################################################################################################### +###################################################################################################################################### # # ## # ######################################################################################################################################################## +#################################################################################################################################### ## # ######################################################################################################################################################## +################################################################################################################################### ### # ### ##################################################################################################################################################### +################################################################################################################################### # ### ### ####################################################################################################################################################### +#################################################################################################################################### # #### ## #################################################################################################################################################### +####################################################################################################################################### #### # # #################################################################################################################################################### +############################################################################################################################################# # # #################################################################################################################################################### +############################################################################################################################################ # ### # ################################################################################################################################################### +############################################################################################################################################# ######################################################################################################################################################## +############################################################################################################################################ # ####################################################################################################################################################### +############################################################################################################################################# # ########################################################################################################################################################### +############################################################################################################################################ ## ########################################################################################################################################################### +############################################################################################################################################# # ########################################################################################################################################################### +############################################################################################################################################## ########################################################################################################################################################## +############################################################################################################################################### ############################################################################################################################################################ +############################################################################################################################################### ############################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ +############################################################################################################################################################################################################################################################################################################ diff --git a/julia_set/main.c b/julia_set/main.c new file mode 100644 index 0000000000000000000000000000000000000000..8e3c5a28a59bedac300adf471bdacfd88a82f598 --- /dev/null +++ b/julia_set/main.c @@ -0,0 +1,86 @@ +#include <assert.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <time.h> + +#define MAX_ITER 100 +#define R 2 + +struct Complex { + double x; + double y; +}; + +struct Complex *new_complex(double x, double y) { + struct Complex *c = malloc(sizeof(struct Complex)); + c->x = x; + c->y = y; + return c; +} + +struct Complex add_complex(struct Complex c1, struct Complex c2) { + struct Complex z; + z.x = c1.x + c2.x; + z.y = c1.y + c2.y; + return z; +} + +struct Complex mult_complex(struct Complex c1, struct Complex c2) { + struct Complex z; + z.x = c1.x * c2.x - c1.y * c2.y; + z.y = c1.x * c2.y + c2.x * c1.y; + return z; +} + +double norm(struct Complex c) { return c.x * c.x + c.y * c.y; } + +bool is_in_julia_set(struct Complex z, struct Complex c, + uint64_t max_iterations) { + struct Complex local_z; + local_z.x = z.x; + local_z.y = z.y; + uint64_t iterations = 0; + double max_norm = R * R; + + while (norm(local_z) < max_norm && iterations < max_iterations) { + local_z = add_complex(mult_complex(local_z, local_z), c); + iterations++; + } + return (iterations != max_iterations); +} + +void draw_julia_set() { + double y_min = -1.0; + double y_max = 1.0; + double x_min = -1.5; + double x_max = 1.5; + + double x_inc = 0.0001; + double y_inc = 0.0001; + // struct Complex c = {-0.7, 0.27015}; + struct Complex c = {-0.4, 0.6}; + + + double norm_c = norm(c); + double upper = (double)(R * R * (R - 1.0) * (R - 1.0)); + assert(upper > norm_c); + + for (double y = y_min; y < y_max; y += y_inc) { + for (double x = x_min; x < x_max; x += x_inc) { + struct Complex z = {x, y}; + if (is_in_julia_set(z, c, MAX_ITER)) { + printf("#"); + } else { + printf(" "); + } + } + printf("\n"); + } +} + +int main(int argc, char **argv) { + draw_julia_set(); + return 0; +} diff --git a/jupyter_notebooks/04_PIController.ipynb b/jupyter_notebooks/04_PIController.ipynb index 6c82620c52c7692a37288fe5992ae01d83056c0b..89184a543da1b510a4651b2c316ca5e0de9d89e6 100644 --- a/jupyter_notebooks/04_PIController.ipynb +++ b/jupyter_notebooks/04_PIController.ipynb @@ -145,7 +145,7 @@ "ks = 10\n", "mp = 0.01\n", "\n", - "r = exp(-4/k_s)\n", + "r = exp(-4/ks)\n", "theta = pi * log(r) / log(mp)\n", "\n", "kp = (a - r * r) / b\n", diff --git a/pages/src/contacts.md b/pages/src/contacts.md index 926cb96b4378718bc8bc1708e380cd9e7b33d371..ae8ca40eaf51f4aa7dc5d1feb60b873f3b74cd2f 100644 --- a/pages/src/contacts.md +++ b/pages/src/contacts.md @@ -10,6 +10,7 @@ The authors of this tutorial are: - [Bogdan ROBU](http://www.gipsa-lab.grenoble-inp.fr/page_pro.php?vid=1451) (Bogdan.Robu AT grenoble-inp.fr) +- [Raphaƫl BLEUSE](https://research.bleuse.net/) (Raphael.Bleuse AT univ-grenoble-alpes.fr) All the source code is available [here](https://gitlab.inria.fr/control-for-computing/tutorial).