Interpolation par Spline bicubique

Bonjour,

Je travaille comme développeur freelance et mon client actuel m’a donné un programme à réaliser.
Je dois coder une interpolation par spline bicubique en C++.
Je dois comparer mes valeurs à celles d’un programme python écrit en interne et qui utilise la fonction scipy.RectBivariateSpline.

Malgré une lecture approfondie du sujet sur plusieurs sites, je n’arrive pas à m’en sortir.

Voici le détail de mon problème:
Je reçois un fichier qui contient des valeurs de puissance sous forme de matrice.
Chaque valeur est associée à une valeur d’abscisse et une valeur d’ordonnée.
L’index de la ligne permet d’en déduire la valeur de l’abscisse idem pour l’index de colonne qui permet de déduire la valeur de l’ordonnée.
La matrice n’est pas de grande taille (max 600×600).
Le pas entre chaque valeur d’abscisse/ordonnée est est régulier.
Exemple:
abscisse: -5.0 -4.0 -3.0 -2.0 etc…
ordonnée: -6.0 -4.0 -2.0 0.0 2.0 etc…

Le calcul à réaliser est le suivant:
J’ai un point P(abscisse, ordonnée) et je dois interpoler sa valeur de puissance en fonction des valeurs de puissance des cellules de la matrice dans lesquelles je le localise.

Localisation:
En recherchant dans la matrice le 1er indice d’abscisse supérieur à l’abscisse de P, je peux en déduire le couple d’indices:

  • absSupIdx (indice d’abscisse supérieur)
  • absInfIdx (indice d’abscisse inférieur = absSupIdx – 1).
    Idem pour l’ordonnée:
  • ordSupIdx (indice d’ordonnée supérieur)
  • ordInfIdx (indice d’ordonnée inférieur = ordSupIdx – 1).

J’obtiens donc 2 paires d’indices: (absInfIdx, ordInfIdx) et (absSupIdx, ordSupIdx).
Pour avoir une matrice 4×4 nécessaire à l’interpolation par Spline bicubique, j’élargis aux cellules voisines des 4 cellules précédentes pour obtenir une matrice 4×4.
Pour chaque cellule de cette matrice, je peux associer une valeur d’abscisse, une valeur d’ordonnée et une valeur de puissance.

NOTE: lors de l’élargissement aux cellules voisines, si des indices sont en dehors de la matrice initiale (ie: indice < 0 ou indice > nombre d’éléments – 1 des lignes/colonnes), je complète la ligne/colonne par des 0 pour conserver une matrice 4×4. Si une des valeurs de P est complètement en dehors de la matrice initiale, le calcul est rejeté.

C’est ensuite que ça se complique !
Je n’arrive pas à comprendre comment déterminer la matrice de coefficients avec les valeurs des fonctions, les dérivées premières et secondes, etc…
Si j’arrive à déterminer correctement cette matrice, je pourrai ensuite l’inverser, ça je sais faire, et calculer la valeur interpolée.
Si la matrice inverse des coefficients peut être définie directement, ça m’évite de coder l’inversion.

Si on part de l’exemple suivant, comment interpoler la valeur de puissance du point P(7.099, -1.8) ?

Partant de mon algorithme de localisation, le point P est situé à l’intérieur des indices suivants: (330, 331) pour l’abscisse et (210, 211) pour l’ordonnée.
Ce qui donne les cellules encadrées en rouge et la matrice élargie encadrée en bleu sur l’image précédente.

Est-ce que quelqu’un pourrait m’expliquer (de manière détaillée si possible avec les valeurs de l’exemple) les calculs à réaliser pour définir les coefficients ai,j de la formule suivante:

Je me demande aussi s’il faut normaliser les valeurs d’abscisse et d’ordonnée pour que la cellule de la matrice élargie aux indices (0, 0) corresponde à des valeurs d’abscisse/ordonnée = (0.0, 0.0) ?
Toutes les autres valeurs étant aussi normalisées ainsi que les valeurs de P.

Pour info, la valeur interpolée par scipy.RectBivariateSpline est 4831,71270119

Votre aide me serait d’un grand secours et je vous remercie d’avance si vous pouviez m’orienter vers la bonne méthodologie parce que là je suis vraiment bloqué sur le sujet !

Cordialement.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật