0 / 0 / 0
Регистрация: 01.03.2018
Сообщений: 67
1

Дополните пожалуйста эти методы! скалярное произведение векторов, умножение на скаляр, сравнение векторов, сравнение

16.09.2018, 14:55. Показов 4233. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Java
1
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
public class VectorTricks {
 
    public static void main(String[] args) {
        Vector v1 = new Vector(1, 2, 3);
        Vector v2 = new Vector(1, 2, 3);
        System.out.println(v1.lengthModuleVector());
        System.out.println(v1.lengthModuleVector(v2));
        System.out.println(v1.addVector(v2));
        System.out.println(v1.minusVector(v2));
}
 
    static class Vector {
        private double x, y, z;
 
        public Vector() {
            setX(0);
            setY(0);
            setZ(0);
}
 
        public Vector(double x, double y, double z) {
            this.setX(x);
            this.setY(y);
            this.setZ(z);
}
 
        public Vector(Vector v) {
            this.setX(v.getX());
            this.setY(v.getY());
            this.setZ(v.getZ());
}
 
        // длина модуль вектора
            public double lengthModuleVector() {
            return Math.sqrt(x * x + y * y + z * z);
}
 
        // сумма векторов
            public Vector addVector(Vector v) {
            return new Vector(getX() + v.getX(), getY() + v.getY(), getZ() + v.getZ());
}
 
        // разность векторов
            public Vector minusVector(Vector v) {
            return new Vector(getX() - v.getX(), getY() - v.getY(), getZ() - v.getZ());
}
 
        // длина ( модуль ) двух векторов
            public double lengthModuleVector(Vector v) {
            return Math.sqrt((y * v.getZ() - z * v.getY()) * (y * v.getZ() - z * v.getY()) + (x * v.            getZ() - z * v.getY())
            * (x * v.getZ() - z * v.getY()) + (x * v.getY() - y * v.getX()));
}
 
        public double getX() {
        return x;
}
 
        public void setX(double x) {
        this.x = x;
}
 
        public double getY() {
        return y;
}
 
        public void setY(double y) {
        this.y = y;
}
 
        public double getZ() {
        return z;
}
 
        public void setZ(double z) {
        this.z = z;
}
 
        @Override
        public int hashCode() {
        return Objects.hash(x, y, z);
}
 
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Vector other = (Vector) obj;
            if (Double.doubleToLongBits(x) != Double.doubleToLongBits(other.x))
                return false;
            if (Double.doubleToLongBits(y) != Double.doubleToLongBits(other.y))
                return false;
            if (Double.doubleToLongBits(z) != Double.doubleToLongBits(other.z))
                return false;
            return true;
}
 
        @Override
        public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Vector [x=");
        builder.append(x);
        builder.append(", y=");
        builder.append(y);
        builder.append(", z=");
        builder.append(z);
        builder.append("]");
        return builder.toString();
}
 
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2018, 14:55
Ответы с готовыми решениями:

Определить функцию работы с векторами: Сложение векторов, разность, умножение на скаляр,скалярное произведение векторов,вычисление длины вектора
с помощью фукнций map/ map-into / reduce определить функцию работы с векторами: Сложение векторов,...

создание, сложение, вычитание векторов, скалярное и векторное умножение векторов
Есть задание по курсовой работе: надо разработать классы для реализации операций векторной...

Скалярное произведение векторов(косинус), разность векторов
Кто понимает, объясните, пожалуйста, как вы понимаете, почему две формулы - для скалярного...

Выполнить скалярное произведение двух векторов!Помоги пожалуйста!на экзамене сейчас
Выполнить скалярное произведение двух векторов, производя вместо умножения, операцию поразрядного...

11
0 / 0 / 0
Регистрация: 01.03.2018
Сообщений: 67
19.09.2018, 10:22  [ТС] 2
В чем ошибка с умножением на скаляр?
Java
1
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package com.company;
 
import com.sun.javafx.geom.Quat4f;
import java.util.Objects;
 
public class VectorTricks {
 
    public static void main(String[] args) {
        Vector v1 = new Vector(1, 2, 3);
        Vector v2 = new Vector(1, 2, 3);
        System.out.println(v1.lengthModuleVector());
        System.out.println(v1.lengthModuleVector(v2));
        System.out.println(v1.addVector(v2));
        System.out.println(v1.minusVector(v2));
        System.out.println(v1.scalarMult(v2));
        System.out.println(v1.mult());
    }
 
    static class Vector {
        private double x, y, z;
 
        public Vector() {
            setX(0);
            setY(0);
            setZ(0);
        }
 
        public Vector(double x, double y, double z) {
            this.setX(x);
            this.setY(y);
            this.setZ(z);
        }
 
        public Vector(Vector v) {
            this.setX(v.getX());
            this.setY(v.getY());
            this.setZ(v.getZ());
        }
 
        // длина модуль вектора
        public double lengthModuleVector() {
            return Math.sqrt(x * x + y * y + z * z);
        }
 
        // сумма векторов
        public Vector addVector(Vector v) {
            return new Vector(getX() + v.getX(), getY() + v.getY(), getZ() + v.getZ());
        }
 
        // разность векторов
        public Vector minusVector(Vector v) {
            return new Vector(getX() - v.getX(), getY() - v.getY(), getZ() - v.getZ());
        }
 
        // длина ( модуль ) двух векторов
        public double lengthModuleVector(Vector v) {
            return Math.sqrt((y * v.getZ() - z * v.getY()) * (y * v.getZ() - z * v.getY()) + (x * v.getZ() - z * v.getY())
                    * (x * v.getZ() - z * v.getY()) + (x * v.getY() - y * v.getX()));
        }
 
        // скалярное произведение
        public double scalarMult(Vector v) {
            return x * v.x + y * v.y + z * v.z;
        }
 
        // умножение на скаляр
        public Vector mult() {
            Quat4f other = null;
            return new Vector(this.x * other.x, this.y * other.y, this.z * other.z);
        }
 
        public double getX() {
            return x;
        }
 
        public void setX(double x) {
            this.x = x;
        }
 
        public double getY() {
            return y;
        }
 
        public void setY(double y) {
            this.y = y;
        }
 
        public double getZ() {
            return z;
        }
 
        public void setZ(double z) {
            this.z = z;
        }
 
        @Override
        public int hashCode() {
            return Objects.hash(x, y, z);
        }
 
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Vector other = (Vector) obj;
            if (Double.doubleToLongBits(x) != Double.doubleToLongBits(other.x))
                return false;
            if (Double.doubleToLongBits(y) != Double.doubleToLongBits(other.y))
                return false;
            if (Double.doubleToLongBits(z) != Double.doubleToLongBits(other.z))
                return false;
            return true;
        }
 
        @Override
        public String toString() {
            StringBuilder builder = new StringBuilder();
            builder.append("Vector [x=");
            builder.append(x);
            builder.append(", y=");
            builder.append(y);
            builder.append(", z=");
            builder.append(z);
            builder.append("]");
            return builder.toString();
        }
 
    }
}
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
19.09.2018, 14:39 3
Big_best03, а что на ваш взгляд в методе сделано? Как вы это видите, построчно опишите.
1
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
19.09.2018, 19:33 4
Цитата Сообщение от Big_best03 Посмотреть сообщение
В чем ошибка
В NullPointerException (строка 68). Хотя для начало стоит почитать что такое умножение вектора на скаляр.
0
2699 / 2013 / 501
Регистрация: 17.02.2014
Сообщений: 9,388
20.09.2018, 10:48 5
Цитата Сообщение от HighPredator Посмотреть сообщение
Как вы это видите
Цитата Сообщение от JIeIIIa Посмотреть сообщение
стоит почитать
судя по стилю - это наш старый не злобный Троль...
0
JIeIIIa
20.09.2018, 11:01
  #6

Не по теме:

Aviz__, по дате регистрации не похоже.

0
Aviz__
20.09.2018, 11:20
  #7

Не по теме:

Цитата Сообщение от JIeIIIa Посмотреть сообщение
по дате
может, это первая его маска. как раз, с этого времени + три недели, он стал орудовать...

0
0 / 0 / 0
Регистрация: 01.03.2018
Сообщений: 67
24.09.2018, 17:58  [ТС] 8
Цитата Сообщение от HighPredator Посмотреть сообщение
а что на ваш взгляд в методе сделано? Как вы это видите, построчно опишите.
умножение на скаляр. Он написан правильно, но выдает ошибку
Миниатюры
Дополните пожалуйста эти методы!  скалярное произведение векторов,  умножение на скаляр,  сравнение векторов,  сравнение  
0
xoraxax
24.09.2018, 18:02
  #9

Не по теме:

это точно он, или сосед по палате

0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.09.2018, 08:21 10
Цитата Сообщение от Big_best03 Посмотреть сообщение
Он написан правильно, но выдает ошибку
А где у вас тут скаляр?
0
0 / 0 / 0
Регистрация: 01.03.2018
Сообщений: 67
08.10.2018, 16:10  [ТС] 11
не могу реализовать метод умножения на скаляр, и метод сравнения двух длин векторов. Помогите пожалуйста

Java
1
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.company;
 
import java.util.Objects;
 
public class VectorTricks {
 
    public static void main(String[] args) {
        Vector v1 = new Vector(1, 2, 3);
        Vector v2 = new Vector(1, 2, 3);
        Integer x = 5;
        Integer y = 7;
        Integer z = 5;
        System.out.println(v1.lengthModuleVector());
        System.out.println(v1.lengthModuleVector(v2));
        if( v1.lengthModuleVector() == v2.lengthModuleVector() )
        {}
        System.out.println(v1.addVector(v2));
        System.out.println(v1.minusVector(v2));
        System.out.println(v1.scalarMult(v2));
        System.out.println(v1.scalarProduct(v2,2));
        System.out.println(x.equals(y)); // Srv
        System.out.println(x.equals(z));
    }
 
    static class Vector {
        private double x, y, z;
 
        public Vector() {
            setX(0);
            setY(0);
            setZ(0);
        }
 
        public Vector(double x, double y, double z) {
            this.setX(x);
            this.setY(y);
            this.setZ(z);
        }
 
        public Vector(Vector v) {
            this.setX(v.getX());
            this.setY(v.getY());
            this.setZ(v.getZ());
        }
 
        // длина модуль вектора
        public double lengthModuleVector() {
            return Math.sqrt(x * x + y * y + z * z);
        }
 
        // сумма векторов
        public Vector addVector(Vector v) {
            return new Vector(getX() + v.getX(), getY() + v.getY(), getZ() + v.getZ());
        }
 
        // разность векторов
        public Vector minusVector(Vector v) {
            return new Vector(getX() - v.getX(), getY() - v.getY(), getZ() - v.getZ());
        }
 
        // длина ( модуль ) двух векторов
        public double lengthModuleVector(Vector v) {
            return Math.sqrt((y * v.getZ() - z * v.getY()) * (y * v.getZ() - z * v.getY()) + (x * v.getZ() - z * v.getY())
                    * (x * v.getZ() - z * v.getY()) + (x * v.getY() - y * v.getX()));
        }
 
        // скалярное произведение
        public double scalarMult(Vector v) {
            return x * v.x + y * v.y + z * v.z;
        }
 
        // умножение на скаляр
        public double scalarProduct(Vector vector, int m) {
            double result = 0;
            for (int i = 0; i < 3; i++) {
                result += vector.array[i] * m;
            }
            return result;
        }
 
        public double getX() {
            return x;
        }
 
        public void setX(double x) {
            this.x = x;
        }
 
        public double getY() {
            return y;
        }
 
        public void setY(double y) {
            this.y = y;
        }
 
        public double getZ() {
            return z;
        }
 
        public void setZ(double z) {
            this.z = z;
        }
 
        @Override
        public int hashCode() {
            return Objects.hash(x, y, z);
        }
 
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Vector other = (Vector) obj;
            if (Double.doubleToLongBits(x) != Double.doubleToLongBits(other.x))
                return false;
            if (Double.doubleToLongBits(y) != Double.doubleToLongBits(other.y))
                return false;
            if (Double.doubleToLongBits(z) != Double.doubleToLongBits(other.z))
                return false;
            return true;
        }
 
        @Override
        public String toString() {
            StringBuilder builder = new StringBuilder();
            builder.append("Vector [x=");
            builder.append(x);
            builder.append(", y=");
            builder.append(y);
            builder.append(", z=");
            builder.append(z);
            builder.append("]");
            return builder.toString();
        }
 
    }
}
0
2 / 1 / 1
Регистрация: 18.12.2016
Сообщений: 26
10.10.2018, 17:07 12
Лучший ответ Сообщение было отмечено Big_best03 как решение

Решение

Big_best03, Держи, бедолага.
Java
1
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
27
28
29
class MyVector {
    private double x,y,z;
 
    MyVector(double x,double y,double z){
        this.x=x;
        this.y=y;
        this.z=z;
    }
 
    double scalarMult(MyVector a,MyVector b){
        return (a.x*b.x+a.y*b.y+a.z*b.z);
    }
 
    private double vectorLength(){
        return (Math.sqrt(Math.pow(x,2)+Math.pow(y,2)+Math.pow(z,2)));
    }
 
    void compareVectorLength(MyVector a,MyVector b){
        if(a.vectorLength()<b.vectorLength()){
            System.out.println("Длина вектора b больше: "+b.vectorLength()+">"+a.vectorLength());
        }
        else if(a.vectorLength()>b.vectorLength()){
            System.out.println("Длина вектора a больше: "+a.vectorLength()+">"+b.vectorLength());
        }
        else if(a.vectorLength()==b.vectorLength()){
            System.out.println("Длины векторов равны : "+a.vectorLength()+"="+b.vectorLength());
        }
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
public class Main {
    public static void main(String[]args){
        Scanner in=new Scanner(System.in);
        System.out.println("Введите x для первого вектора:");
        double x=in.nextDouble();
        System.out.println("Введите y для первого вектора:");
        double y=in.nextDouble();
        System.out.println("Введите z для первого вектора:");
        double z=in.nextDouble();
        MyVector v1=new MyVector(x,y,z);
        System.out.println("Введите x для второго вектора:");
        x=in.nextDouble();
        System.out.println("Введите y для второго вектора:");
        y=in.nextDouble();
        System.out.println("Введите z для второго вектора:");
        z=in.nextDouble();
        MyVector v2=new MyVector(x,y,z);
        MyVector v3=new MyVector(0,0,0);
        System.out.println("Скалярное произведение векторов: "+v3.scalarMult(v1,v2));
        v3.compareVectorLength(v1,v2);
    }
}
Добавлено через 3 минуты
Big_best03, И сделай в классе какой-нибудь метод
Java
1
void print
, который будет выводить результаты работы остальных методов, чтобы в
Java
1
main
кучу раз не делать
Java
1
System.out.println
С остальными методами я думаю по аналогии разберёшься
1
10.10.2018, 17:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2018, 17:07
Помогаю со студенческими работами здесь

Скалярное умножение векторов(Ассоциативность,Коммутативность,Умножение с пустым знаком)
Помогите проверить операцию &quot;скалярное произведение векторов&quot; на Ассоциативность,Коммутативность и...

Скалярное умножение векторов
Как реализовать скалярное умножение векторов (A, B) для класса Vector с майном?

Перегрузка операторов. Скалярное умножение векторов
Задание целиком: /* Создать класс Динамический массив. Класс должен содержать • конструкторы...

Скалярное произведение векторов
Нужно ввести 2 вектора n размерностей но при этом названия векторов записаны в первой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru