[PYTHON] Trouvez le coefficient du polypole le moins carré

Aperçu

Méthode du carré minimum

La méthode du carré minimum est une méthode pour trouver une expression relationnelle en minimisant la somme des carrés des erreurs dans le traitement des valeurs mesurées avec des erreurs.

À propos du programme

Le programme créé cette fois-ci est un processus qui répertorie les données «x» y »préparées à l'avance, trouve la matrice« S »T» à partir des données et dérive le coefficient «a». De plus, l'ordre du polynôme que vous voulez trouver est défini sur «m». Il existe peut-être déjà une bibliothèque qui peut facilement trouver la méthode des moindres carrés, mais cette fois nous n'utiliserons pas une telle bibliothèque, seulement la bibliothèque de manipulation de tableaux numpy, et même si la quantité de données est modifiée Nous avons créé un processus flexible.

programme

LeastSquares.py


# -*- coding: utf-8 -*-
#!/usr/bin/env python3

import numpy as np

X_data = [10, 20, 50, 70, 100]
Y_data = [9.3, 9.8, 10.9, 11.9, 13.1]
m = 1

def ST_list(power):
    S, T = 0, 0
    for i, j in zip(X_data,Y_data):
        S += i**power
        T += i**power * j
    return S, T

def A_matrix(n_size, len):
    A = []
    for k in range(n_size):
        A.append(S_list[k+len-m*2-1:k+len-m*2-1+n_size])
    return A

S_list = []
T_list = []
for n in range(len(X_data)):
    S , T = ST_list(n)
    S_list.insert(0, S)
    T_list.insert(0, T)

A = np.array(A_matrix(m+1, len(S_list)))
b = np.array(T_list[-1*m-1::]).reshape(m+1, 1)
Ainv = np.linalg.inv(A)
x = np.dot(Ainv, b)

print("S ="); print(A); print()
print("T ="); print(b); print()
print("a ="); print(x)

Résultat d'exécution

Trouvez le coefficient a du polypole du premier ordre
m = 1
S =
[[17900   250]
 [  250     5]]

T =
[[2977.]
 [  55.]]

a =
[[0.04203704]
 [8.89814815]]

Trouvez le coefficient a du polypole quadratique
m = 2
S =
[[130430000   1477000     17900]
 [  1477000     17900       250]
 [    17900       250         5]]

T =
[[2.2141e+05]
 [2.9770e+03]
 [5.5000e+01]]

a =
[[1.22729504e-05]
 [4.07142857e-02]
 [8.92034855e+00]]

Résumé

Dans ces données, nous avons trouvé le coefficient «a» pour les polynômes du premier et du second ordre. Si vous augmentez la quantité de données, vous pouvez également effectuer des opérations cubiques et quaternaires, mais comme elles sont affectées par des fractions flottantes comme le polynôme quadratique, vous devez utiliser le format round ou` pour le rendre facile à voir. C'est vrai.

À la fin

C'est tout pour cet article. Désolé pour le programme difficile à voir. J'ai l'impression qu'il existe un meilleur moyen, en particulier en ce qui concerne la manipulation de tableaux. Si vous avez des conseils, veuillez les laisser dans la section commentaires. Merci de rester avec nous jusqu'à la fin.

Recommended Posts

Trouvez le coefficient du polypole le moins carré
Trouvez la définition de la valeur de errno
Version Migemo de la commande: find ,: mfind
Comment trouver la zone du diagramme de Boronoi
J'ai essayé la méthode des moindres carrés en Python
Trouvez le nombre de jours dans un mois
Découvrez la fraction de la valeur saisie en python
Approximation par la méthode des moindres carrés d'un cercle à deux points fixes
Trouvez la solution de l'équation d'ordre n avec python
Découvrez le jour par date / heure
Projecet Euler 12 Trouvez le nombre de fractions sans diviser.
Calculer la somme des valeurs uniques par tabulation croisée des pandas
Connaissez l'emplacement du fichier de définition de classe Python.
Découvrez l'emplacement des packages installés avec pip
Calcul de la matrice d'homographie par la méthode des moindres carrés (méthode DLT)
Le début de cif2cell
Trouvez le maximum de Python
Le sens de soi
le zen de Python
L'histoire de sys.path.append ()
La vengeance des types: la vengeance des types
J'ai essayé de trouver l'entropie de l'image avec python
Comment trouver le nombre optimal de clusters pour les k-moyennes
Maya | Découvrez le nombre de polygones dans l'objet sélectionné
Découvrez la largeur apparente d'une chaîne en python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Hériter de la bibliothèque standard pour trouver la valeur moyenne de Queue
Python --Trouvez le nombre de groupes dans l'expression regex
Trouver l'index de la valeur maximale (valeur minimale) d'un tableau multidimensionnel
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Trouver le diamètre du graphique par recherche de priorité de largeur (mémoire Python)
Trouvez l'écart moyen / standard des valeurs de luminosité dans l'image
Trouver les valeurs propres d'une vraie matrice symétrique en Python