Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Interpolazione

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Se si sta parlando di interpolazione polinomiale
    https://en.wikipedia.org/wiki/Polynomial_interpolation

    non ti resta che compilare la matrice di Vandermonde.

    Commons di apache ha una libreria (math) che ti linko qui:

    http://commons.apache.org/proper/commons-math/

    che ha già implementato ogni cosa. Ti riporto un piccolo esempio da cui articolare
    codice:
    import org.apache.commons.math3.linear.*;
    
    /* ....
    .... 
    */
    private RealMatrix VandermondeMatrix;
    private RealVector Constants, CoefficientsMatrix;
    private int degree;
        
        private RealMatrix calculateVandermondeMatrix() {
            double[][] values = new double[degree+1][degree+1];
            for (int i = 0; i < values.length; i++) {
                for (int j = 0; j < (values[i].length-1); j++) {
                    values[i][j] = Math.pow(points[i].getX(), degree-j);
                }
                values[i][degree] = 1;
            }
            VandermondeMatrix = new Array2DRowRealMatrix(values);
            return VandermondeMatrix;
        }
    
    
        private RealVector getConstants() {
            double[] values = new double[degree+1];
            for (int i = 0; i < values.length; i++) {
                values[i] = points[i].getY();
            }
            Constants = new ArrayRealVector(values) ;
            return Constants;
        }
        
        private RealVector calculateCoefficientsMatrix() {
            DecompositionSolver solver = new LUDecomposition(this.VandermondeMatrix).getSolver();
            return solver.solve(Constants);
        }
    
    
    
    
    public PolynomialInterpolation(Point[] points) {
            this.points = points;        
            this.degree = points.length-1;
        }
    dove la classe Point (in realtà inutile, ma visto che ho riutilizzato codice di un vecchio progetto me la sono trovata tra i piedi) altro non è che una classe che modellizza un punto nel piano (2D) e che ha solo due campi, x, y e metodi getter e setter.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  2. #2
    Quote Originariamente inviata da Andrea1979 Visualizza il messaggio
    Se si sta parlando di interpolazione polinomiale
    https://en.wikipedia.org/wiki/Polynomial_interpolation

    non ti resta che compilare la matrice di Vandermonde.

    Commons di apache ha una libreria (math) che ti linko qui:

    http://commons.apache.org/proper/commons-math/

    che ha già implementato ogni cosa. Ti riporto un piccolo esempio da cui articolare
    codice:
    import org.apache.commons.math3.linear.*;
    
    /* ....
    .... 
    */
    private RealMatrix VandermondeMatrix;
    private RealVector Constants, CoefficientsMatrix;
    private int degree;
        
        private RealMatrix calculateVandermondeMatrix() {
            double[][] values = new double[degree+1][degree+1];
            for (int i = 0; i < values.length; i++) {
                for (int j = 0; j < (values[i].length-1); j++) {
                    values[i][j] = Math.pow(points[i].getX(), degree-j);
                }
                values[i][degree] = 1;
            }
            VandermondeMatrix = new Array2DRowRealMatrix(values);
            return VandermondeMatrix;
        }
    
    
        private RealVector getConstants() {
            double[] values = new double[degree+1];
            for (int i = 0; i < values.length; i++) {
                values[i] = points[i].getY();
            }
            Constants = new ArrayRealVector(values) ;
            return Constants;
        }
        
        private RealVector calculateCoefficientsMatrix() {
            DecompositionSolver solver = new LUDecomposition(this.VandermondeMatrix).getSolver();
            return solver.solve(Constants);
        }
    
    
    
    
    public PolynomialInterpolation(Point[] points) {
            this.points = points;        
            this.degree = points.length-1;
        }
    dove la classe Point (in realtà inutile, ma visto che ho riutilizzato codice di un vecchio progetto me la sono trovata tra i piedi) altro non è che una classe che modellizza un punto nel piano (2D) e che ha solo due campi, x, y e metodi getter e setter.
    Grazie.
    Mi basta inserire i miei punti dentro una matrice e passarla alla funzione
    PolynomialInterpolation ??
    Ma come parametro riceve un Point (teoricamente è una matrice)?
    Non lo so, ma mi sono confuso ahahhaha.

    Inoltre, a che mi serve il getConstants e il calculateCoefficientsMatrix() ??

    Forse questi metodi valgono per il tuo progetto, giusto? A me serve prendere spunto solo dalle formule della matrice di Vandermonde ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.