vault backup: 2024-10-29 11:16:37
51
.obsidian/workspace.json
vendored
|
@ -20,8 +20,23 @@
|
|||
"icon": "lucide-file",
|
||||
"title": "1 CV Basics"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "7406f7d42d73069d",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "conflict-files-obsidian-git.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "conflict-files-obsidian-git"
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"currentTab": 1
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
|
@ -190,8 +205,26 @@
|
|||
"smart-second-brain:Open S2B Chat": false
|
||||
}
|
||||
},
|
||||
"active": "0d5325c0f9289cea",
|
||||
"active": "7406f7d42d73069d",
|
||||
"lastOpenFiles": [
|
||||
"Foundation of data science/notes/1 CV Basics.md",
|
||||
"conflict-files-obsidian-git.md",
|
||||
"Foundation of data science/notes/Logistic Regression.md",
|
||||
"Foundation of data science/notes/Logistic Regression for C > 1.md",
|
||||
"Foundation of data science/images/Pasted image 20241025165411.png",
|
||||
"Foundation of data science/images/Pasted image 20241025165317.png",
|
||||
"Foundation of data science/images/Pasted image 20241025165130.png",
|
||||
"Foundation of data science/images/Pasted image 20241025163314.png",
|
||||
"Foundation of data science/images/Pasted image 20241025163040.png",
|
||||
"Foundation of data science/images/Pasted image 20241025162426.png",
|
||||
"Foundation of data science/images/Pasted image 20241025162234.png",
|
||||
"Foundation of data science/images/Pasted image 20241025162152.png",
|
||||
"Foundation of data science/images/Pasted image 20241025161824.png",
|
||||
"Foundation of data science/images",
|
||||
"Autonomous Networking/slides/AutonomousNet-Class11-2122-Performance_of_action_selection_methods_UCB.pdf",
|
||||
"Autonomous Networking/notes/q&a.md",
|
||||
"Autonomous Networking/notes/8.md",
|
||||
"Autonomous Networking/images/Pasted image 20241025092935.png",
|
||||
"Autonomous Networking/notes/5 Drones.md",
|
||||
"Chats/New Chat.md",
|
||||
"Chats",
|
||||
|
@ -204,27 +237,13 @@
|
|||
"Autonomous Networking/notes/6 Internet of Things.md",
|
||||
"Autonomous Networking/notes/7 RL.md",
|
||||
"Autonomous Networking/slides/7 RL1.pdf",
|
||||
"Biometric Systems/images/Pasted image 20241023133231.png",
|
||||
"Biometric Systems/images/Pasted image 20241023135125.png",
|
||||
"Biometric Systems/images/Pasted image 20241023135925.png",
|
||||
"Biometric Systems/images/Pasted image 20241023135127.png",
|
||||
"Biometric Systems/images/Pasted image 20241023135922.png",
|
||||
"Biometric Systems/images/Pasted image 20241023135924.png",
|
||||
"Biometric Systems/images/Pasted image 20241023140250.png",
|
||||
"Biometric Systems/images/Pasted image 20241023141948.png",
|
||||
"Biometric Systems/images/Pasted image 20241023144725.png",
|
||||
"Biometric Systems/images/Pasted image 20241024090856.png",
|
||||
"Autonomous Networking/slides/2 RFID.pdf",
|
||||
"conflict-files-obsidian-git.md",
|
||||
"Autonomous Networking/notes/6.1 RL.md",
|
||||
"Biometric Systems/slides/LEZIONE5_NEW_More about face localization.pdf",
|
||||
"Autonomous Networking/slides/4 WSN2.pdf",
|
||||
"Biometric Systems/slides/LEZIONE4_Face introduction and localization.pdf",
|
||||
"Biometric Systems/notes/4. Face recognition.md",
|
||||
"Foundation of data science/slides/Untitled.md",
|
||||
"Biometric Systems/slides/LEZIONE3_Affidabilita_del_riconoscimento.pdf",
|
||||
"Biometric Systems/notes/3. Recognition Reliability.md",
|
||||
"Foundation of data science/notes/1 CV Basics.md",
|
||||
"Foundation of data science/slides/notes 2.md",
|
||||
"Biometric Systems/notes/2. Performance indexes.md",
|
||||
"Biometric Systems/notes/1. Introduction.md",
|
||||
|
|
BIN
Autonomous Networking/images/Pasted image 20241025084609.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025084755.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025084830.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025084938.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025085237.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025085512.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025085759.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025090344.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025090549.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025090625.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025092932.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
Autonomous Networking/images/Pasted image 20241025092935.png
Normal file
After Width: | Height: | Size: 31 KiB |
|
@ -144,6 +144,7 @@ Often the number of tags in the system **is not known!**
|
|||
|
||||
- The total number of tags is estimated according to the outcome of the previous frame (based on Chebyshevʼs inequality)
|
||||
![[Pasted image 20240928181304.png]]
|
||||
I look for the n (number of tags) value that minimizes the difference!
|
||||
|
||||
Given N and a possible value of n, the expected number of slots with r tags is estimated as:
|
||||
![[Pasted image 20240928181424.png]]
|
||||
|
|
75
Autonomous Networking/notes/8.md
Normal file
|
@ -0,0 +1,75 @@
|
|||
### The 10-arms testbed
|
||||
- we compare different strategies to assess the relative effectiveness
|
||||
- 10 actions along the X axis
|
||||
- Y axis shows the distribution of rewards
|
||||
|
||||
- Each reward is sampled from a normal distribution with some mean q*(a) and variance=1
|
||||
- Each q*(a) is drawn from a normal distribution with mean=0 and variance=1
|
||||
![[Pasted image 20241025084609.png]]
|
||||
|
||||
- q* is randomly sampled from a normal distribution
|
||||
- rewards are randomly sampled based on q
|
||||
- actions are randomly taken on exploration steps
|
||||
- to fairly compare different methods we need to perform many independent run
|
||||
- for any learning method we measure its performance over 2000 independent runs
|
||||
|
||||
![[Pasted image 20241025084755.png]]
|
||||
|
||||
.. add siled ...
|
||||
![[Pasted image 20241025084830.png]]
|
||||
|
||||
#### Experiments
|
||||
- run experiments for different epsilons
|
||||
- 0
|
||||
- 0.01
|
||||
- 0.1
|
||||
|
||||
![[Pasted image 20241025084938.png]]
|
||||
- exploring more I find the best actions
|
||||
- exploring less it will converge slowly
|
||||
- not exploring may never find the best action(s)
|
||||
|
||||
Let's do the same experiment starting with optimistic initial values
|
||||
- we start with a high value for the rewards
|
||||
- we set q1(a) = +5 for all actions
|
||||
![[Pasted image 20241025085237.png]]
|
||||
as we can see, the system explores more at the beginning, which is good as it will find the best actions to take sooner!
|
||||
|
||||
**Optimistic initial value method:**
|
||||
- explores more at the beginning
|
||||
- only effective for stationary problems
|
||||
- for non-stationary problems we have to use eps-greedy
|
||||
|
||||
### Optimism in the Face of Uncertainty
|
||||
- ...
|
||||
- easy problem:
|
||||
- two arms, one always good and one always bad
|
||||
- try both and done
|
||||
- hard problem:
|
||||
- arm much better than other one but there is much noise
|
||||
- takes really long time to disambiguate
|
||||
|
||||
![[Pasted image 20241025085759.png]]
|
||||
which actions should we peek?
|
||||
- greedy would peek the green one
|
||||
- eps-greedy too
|
||||
- optimism in the face of uncertainty says:
|
||||
- the more uncertain we are about an action-value, the more it is to explore that action, as it could turn out to be the best!
|
||||
- principle: *do not take the arm you believe is best, take the one which has the most potential to be the best*
|
||||
|
||||
![[Pasted image 20241025090344.png]]
|
||||
the brackets represent a confidence interval around q*(a). The system is confident that the value lies somewhere in the region.
|
||||
|
||||
If region is very small, we are very certain!
|
||||
|
||||
![[Pasted image 20241025090549.png]]
|
||||
In this situation we chose Q2 as estimated value is the highest.
|
||||
|
||||
#### Action selection
|
||||
![[Pasted image 20241025090625.png]]
|
||||
... check slides for formula explaination ...
|
||||
|
||||
|
||||
- to systematically reduce uncertainity, UCB explores more at the beginning
|
||||
- UCB's exploration reduces over time, eps-greedy continues to take a random action 10% of the time
|
||||
|
54
Autonomous Networking/notes/q&a.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
#### Q: explain the problem of energy consumption in sensor networks
|
||||
As sensor run on batteries, energy consumption is a serious problem as we want sensors' batteries to last as long as possible. It's often challenging to replace or recharge the batteries.
|
||||
Energy consumption is caused by a several things:
|
||||
- overhearing
|
||||
- overemitting
|
||||
- idle listening
|
||||
- collisions
|
||||
- overhead caused by control packets
|
||||
- continuous operation
|
||||
- transmission distance
|
||||
|
||||
To achieve a low energy consumption is very important to define good MAC and routing strategies.
|
||||
For MAC we can use protocols such as S-MAC, allows sensor to sleep most of the time when they are not communicating.
|
||||
S-MAC works by letting sensors do the carrier sense only for a small fraction of the time while idle. To make this work, neighbor nodes needs to be synchronized to each-other, to be able to do carrier sensing at the same time. ecc.
|
||||
|
||||
|
||||
#### Q: Challenges of routing in wireless sensor networks
|
||||
routing protocols must be:
|
||||
- scalable to support networks with very different sizes, and performance should not degrade increasing the size
|
||||
- wide range of node density
|
||||
- limited resources for each node
|
||||
- low computation capability
|
||||
- can not use too much energy
|
||||
- nodes may even not have a global ID
|
||||
- fault tollerant
|
||||
- a node failure should not destroy the entire network
|
||||
- support mobility as some nodes may be mobile
|
||||
A good routing protocol should also guarantee that the network will have a long lifetime, as long as possible.
|
||||
Energy consumption is very important as we seen before, for this reason, based on the needs, we can have different kind of routing protocols:
|
||||
- proactive
|
||||
- reactive
|
||||
- geo-based
|
||||
|
||||
#### Q: Explain the difference between Framed Slotted Aloha and Tree Slotted Aloha protocols in RFID system
|
||||
Both protocols are based on Slotted ALOHA: a frame is divided in time slots, and a tag randomly choses a slot to answer, in a way to reduce collisions.
|
||||
In Frame Slotted Aloha, the number of slots in a frame is always the same. If two (or more) nodes decide to take the same slot, they create a collision. To try to address the collision, a new query is issued by the reader.
|
||||
In TSA instead, for each collision slot s, a new child frame with a smaller slot number is issued. And only the tag that decided to transmit in slot s will transmit in the same frame.
|
||||
The TSA protocol improves the system efficiency as the probability of having a collision is lower. But for both protocols, to have good performance is important to have an estimate of the number of tags to identify as we need to chose the number of slots based on it. If we have too many slots, we will have a lot of time wasted in idle slots, if we have too few slots, we will have a lot of collisions.
|
||||
|
||||
#### Q: in a slotted aloha protocol for RFID system how is the estimated tag population participating into intermediate frames?
|
||||
Main issues:
|
||||
- total number of tags to identify is not known
|
||||
- initial frame size is set to a predefined value (e.g. 128)
|
||||
- the size of the following frames is estimated by:
|
||||
$$tags\_per\_collision\_slot=\frac{(estimated\_total\_num\_of\_tags) - (identified\_tags)}{collision\_slots}$$
|
||||
The key issue is that we don't know the total number of tags! We can estimate it with the Chebyshev inequality. The problem is that for very large tag number, it can be inaccurate.
|
||||
|
||||
#### Q: explain the binary splitting protocol for RFID systems (discuss its performance)
|
||||
All the tags have a counter set initially to 0. When the reader sends the first query every tag responds.
|
||||
Every time a collision is generated, rags randomly increments their counter. The process repeat until a single tag or no tag responds. In this case all tags will decrement the counter.
|
||||
As each time the tags are split into two sets, we can "see" it as a binary tree, so we can count the node of the tree to get an estimation.
|
||||
$$BS_{tot}(n)=\begin{cases}1,n\le1\\ 1+\sum_{k=0}^{n}\binom{n}{k}\left(\frac12\right)^{k}\left(1-\frac12\right)^{n-k}\left(BS_{tot}\left(k\right)+BS_{tot}\left(n-k\right)\right),n>1\end{cases}$$
|
||||
|
||||
#### Q: explain the differences between proactive and reactive routing in sensor networks. Discuss the advantages and disadvantages
|
After Width: | Height: | Size: 190 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 216 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 25 KiB |
|
@ -0,0 +1,48 @@
|
|||
Ovviamente non possiamo usare la sigmoide, ci serve qualcos'altro.
|
||||
Possiamo usare la SoftMax, che è definita così:
|
||||
|
||||
$$\text{softmax}(z_i) =\frac{ e^{z_i}}{\sum_{j=1}^{n}e^{z_{j}}}
|
||||
$$
|
||||
Per cui otteniamo:
|
||||
$$f_{\theta}(x_i)=softmax(\theta^Tx_i)$$
|
||||
$\theta^Tx_i$ corrisponde al logit, o score.
|
||||
- $x_i$ è un vettore di dimensione $[d*1]$ che rappresenta le features del sample $i$
|
||||
- può anche essere una feature sola ovviamente, ma possono essere 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26...
|
||||
- $\theta$ è la matrice dei parametri (pesi) di dimensione $[c*d]$
|
||||
- con due classi era un vettore perché in quel caso consideravamo solamente la probabilità di cadere nella classe 1. Stavolta invece consideriamo la probabilità di cadere in ogni singola classe. Per cui abbiamo un vettore di pesi diverso per ogni classe, con come sempre, un peso per ogni feature.
|
||||
|
||||
Esempio stupido che mi sono inventato ora: i sample sono case e le feature sono dimensione e numero di piani, le classi da predire sono: appartamento, villa in campagna, villetta in città
|
||||
|
||||
Definiamo
|
||||
- $f(x)$: codifica la distribuzione di probabilità su tutte le classi
|
||||
- $f(x)_i$: rappresenta la probabilità per la singola classe i
|
||||
- con probabilità $f(x)_i$, ci si trova nella classe i
|
||||
|
||||
La probabilità di cadere in una certa classe la definiamo in modo simile alla volta scorsa. Ma dobbiamo chiaramente considerare che le classi non sono 2. Sia $c$ il numero di classi, otteniamo:
|
||||
$$P(Y|f(X))= \prod_{i=1}^c[f(X)_i]^{Y_i}$$
|
||||
Y è un vettore cosiddetto "one-hot", ovvero solo uno degli elementi vale 1 e tutti gli altri 0.
|
||||
Possiamo togliere la produttoria e considerare solo uno degli elementi: quello per cui $y_i$ vale 1. Otteniamo così: $$P(Y_i|f(X_i))= f(X_i)_Y$$
|
||||
Definiamo ora in modo analogo la Likelihood:
|
||||
$$L = \prod_{i=1}^{n} P(Y_i \mid f(X_i))$$
|
||||
(come sempre, $P(Y_i \mid f(X_i))$ è la probabilità che il valore reale sia Yi dato il valore predetto con il sample $x_i$)
|
||||
|
||||
Come sempre, la Likelihood può essere difficile da calcolare, è molto più facile calcolare il logaritmo di essa, per cui lo definiamo:
|
||||
$$log(L)=LL=\sum_{i=0}^nlog(P(y_i|f(x_i)))=\sum_{i=0}^nlog(f(x^i)_{y_i})$$
|
||||
(con n = numero di sample)
|
||||
Analogamente, definiamo la NLL aggiungendo il $-$ davanti:
|
||||
$$NLL = -\sum_{i=0}^nf(x^i)_{y_i}=-\sum_{i=0}^n\sum_{j=0}^clog(f(x^i)_j)$$
|
||||
Questa viene anche detta Cross Entropy (CE)
|
||||
|
||||
Definiamo un esempio:
|
||||
classi
|
||||
- gatto [1, 0, 0]
|
||||
- cane [0, 1, 0]
|
||||
- giraffa [0, 0, 1]
|
||||
sample x1 e x2
|
||||
- $f(x1)=[0.4, 0.2, 0.4]$ (il modello è indeciso, non riesce a decidere se $x1$ è un gatto o una giraffa, però il modello dice che probabilmente non è un cane)
|
||||
- $f(x2)=[0.01, 0.98, 0.01]$ (il modello per questo sample invece è molto sicuro)
|
||||
|
||||
Calcoliamo la Cross Entropy!
|
||||
$$-[[1(-0.91)+0(-1.6)+0(-0.91)]+[0(-4.6)+0(-0.02)+0(-4.6)]] = 0.93$$
|
||||
quei numeri strani sono semplicemente i logaritmi di 0.4, 0.2 ecc., abbiamo semplicemente applicato la formula sopra!
|
||||
|
54
Foundation of data science/notes/Logistic Regression.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
La regressione logistica è una tecnica di machine learning fondamentale e ampiamente utilizzata per risolvere problemi di classificazione binaria. A differenza della regressione lineare, che è più adatta per problemi di previsione continua, la regressione logistica si focalizza sulla previsione di classi distinte, trasformando un input continuo in una probabilità, grazie alla funzione sigmoide: $$\sigma(z) = \frac{1}{1+e^{-z}}$$
|
||||
![[Pasted image 20241025161824.png]]
|
||||
|
||||
Ipotizziamo di avere la seguente situazione, per valori bassi della nostra variabile x, tutti i sample hanno classe 0, viceversa per valori alti. Ma per valori intermedi abbiamo sia sample nella classe 0 che nella classe 1.
|
||||
![[Pasted image 20241025162426.png]]
|
||||
La funzione sigmoide nel grafico a destra rappresenterà quindi la ***probabilità di cadere nella classe 1***.
|
||||
|
||||
La regressione logistica è una tecnica per trovare una "linea ondulata" ottimale che rappresenta la probabilità di appartenere alla Classe 1 per vari valori della variabile. Ogni punto su questa linea indica la probabilità (p) di appartenere alla classe: i punti in basso hanno probabilità zero (p=0), mentre quelli in alto raggiungono la probabilità massima (p=1). La funzione logistica (es. la sigmoide, ma un altro esempio è la softmax) mappa valori da uno spazio infinito (-∞, +∞) a uno spazio probabilistico [0,1]. Al contrario, la funzione logit può trasformare lo spazio delle probabilità [0,1] in uno spazio che si estende da (-∞, +∞).
|
||||
$$logit(p)=log\left(\frac{p}{1-p}\right)$$
|
||||
![[Pasted image 20241025163040.png]]
|
||||
|
||||
Trasformare lo spazio [0,1] in (-∞, +∞) rende il problema simile a una regressione lineare, facilitando l'ottimizzazione. La ricerca della linea ottimale parte da una retta iniziale nello spazio logit variabile, con l'obiettivo di regolarne i coefficienti per massimizzare la verosimiglianza.
|
||||
|
||||
Per una variabile, l'equazione è: $$\text{logit}(p) = \log \left( \frac{p}{1 - p} \right) = \beta_0 + \beta_1 \cdot v$$
|
||||
L'obiettivo è adattare la retta ai punti dati nel grafico _logit vs variabile_ in modo che, una volta trasformata nella curva ondulata tramite l'inversa della funzione logit, separi il maggior numero di punti tra le classi. Per fare questo, si utilizza una strategia simile alla regressione lineare, ma invece di minimizzare i residui quadrati (mean squared error), si massimizza la likelihood.
|
||||
Procediamo nel seguente modo:
|
||||
- scegliamo dei valori arbitrari per definire una linear regression iniziale
|
||||
- proiettiamo i punti sulla retta. Applicando la funzione logistica otteniamo una roba tipo quella che si vede nel terzo grafico
|
||||
|
||||
![[Pasted image 20241025163314.png]]
|
||||
|
||||
Pensandoci, possiamo rappresentare le probabilità con questa equazione:
|
||||
$$P(Y=y | X;\theta)=\sigma(\beta^Tx)^y[1-\sigma(\beta^Tx)]^{1-y}$$
|
||||
e se ci facciamo caso è praticamente una distribuzione di Bernoulli. Si legge come: la probabilità che Y sia y (che ricordiamo, può essere 0 oppure 1), dati i valori di X (la variabile v nei grafici sopra per intenderci) e $\theta$ (il vettore dei coefficienti della regressione lineare che dicevamo prima).
|
||||
|
||||
La likelihood totale per il vettore di pesi $\beta$ è quindi:
|
||||
$$
|
||||
L(\beta) = \prod_{i=1}^{n} P(Y_i \mid x_i)
|
||||
$$
|
||||
Sostituendo l'equazione 4 nell'equazione 5 otteniamo:
|
||||
|
||||
$$
|
||||
L(\beta) = \prod_{i=1}^{n} \sigma(\beta^T x^{(i)})^{y^{(i)}} \cdot [1 - \sigma(\beta^T x^{(i)})]^{(1 - y^{(i)})}
|
||||
$$
|
||||
L'idea è di stimare i parametri ($\beta$) in modo da massimizzare $L(\beta)$. Tuttavia, per comodità matematica, massimizziamo il logaritmo di $L(\beta)$ e lo chiamiamo log-likelihood:
|
||||
|
||||
$$
|
||||
LL(\beta) = \sum_{i=1}^{n} y^{(i)} \log \sigma(\beta^T x^{(i)}) + (1 - y^{(i)}) \log[1 - \sigma(\beta^T x^{(i)})]
|
||||
$$
|
||||
A questo punto, spero che l'obiettivo precedentemente dichiarato sia più chiaro: trovare i migliori parametri di adattamento β nello spazio logit vs variabile, in modo che LL(β) nello spazio probabilità vs variabile sia massimo.
|
||||
|
||||
Come si risolve questo problema? Vediamo due modi!
|
||||
##### Gradient Ascend
|
||||
Calcoliamo la derivata parziale della funzione LL:
|
||||
![[Pasted image 20241025165130.png]]
|
||||
Però dobbiamo calcolarlo per tutti i sample ovviamente, per cui:
|
||||
![[Pasted image 20241025165317.png]]
|
||||
|
||||
Poi aggiorniamo il valore così:
|
||||
![[Pasted image 20241025165411.png]]
|
||||
il parametro $\eta$ indica il rate di apprendimento, come nel gradiant descend della linear regression. Lo scegliamo noi, se è troppo grande l'algoritmo non convergerà mai, se è troppo piccolo ci metterà un fottio, ma sarà più preciso.
|
||||
|
||||
#### Newton's method
|
||||
Un altro metodo è quello di Newton, che è pure migliore. Però ora devo andare alla maker faire quindi ne parliamo settimana prossima, ciao.
|