Vector

[ Java ]

26 Jun 2012

public final class Vector implements iVector {
    private double[] m_v;
    public Vector(int n) {
        m_v = new double[n];
        for (int i = 0; i < n; m_v[i++] = 0);
    }
        public Vector(double[] c) {
                m_v = new double[c.length];
                m_v = c;
        }
        public int dimension() {
                return m_v.length;
        }
        public double getComponent(int i) {
                try {
                                if (i < 0 || i >= m_v.length)
                                throw new Exception("Индекс не принадлежит диапазону данной размерности\n");
                                return m_v[i];
                        } catch (Exception e) {
                                e.printStackTrace(System.err);
                                return 0;
                        }
        }
        public double scalar(iVector v) {
                double res = 0;
                int a = m_v.length;
                int b = v.dimension();
                try {
                        if (a != b) throw new Exception("Несовпадение размерностей\n");
                } catch (Exception e) {
                        e.printStackTrace(System.err);
                }
                for (int i = 0; i < a; i++)
                        res += m_v[i] * v.getComponent(i);
                return res;
        }
        public double len() {
                return Math.sqrt(scalar(this));
        }
        public Vector multiply(double factor) {
                double [] a=new double [m_v.length];
                for (int i = 0; i < m_v.length; i++)
                        a[i]=m_v[i] * factor;
                return new Vector(a);
        }
        public Vector add(iVector v) {
                double [] a=new double [m_v.length];
                for (int i = 0; i < m_v.length; i++)
                        a[i]=m_v[i] + v.getComponent(i);
                return new Vector(a);
        }
        public Vector sub(iVector v) {
                double [] a=new double [m_v.length];
                for (int i = 0; i < m_v.length; i++)
                        a[i]=m_v[i] - v.getComponent(i);
                return new Vector(a);
        }
}

Исходники доступны на GitHub