Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 01.03.2018
Сообщений: 67

Скалярное произведение векторов, умножение на скаляр, сравнение векторов

16.09.2018, 14:55. Показов 4678. Ответов 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
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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2018, 14:55
Ответы с готовыми решениями:

Скалярное произведение векторов
Передо мной стоит задача посчитать скалярное произведение 2-ух векторов ((a,b)=a1b1+a2b2). Пусть в метод getVectorSum у меня передаются 2...

Векторное и Скалярное произведение
Есть прожка на Си котоорая вычисляет векторное и скалярное произведение трехмерных векторов.Нужно перевести на ява.Есть желающие кто...

Java. Найти скалярное произведение и угол между двумя векторами (подпрограммы)
Доброго времени суток! Моя задача состоит в том, чтобы в двух подпрограммах найти скалярное произведение двух векторов и угол между ними....

11
0 / 0 / 0
Регистрация: 01.03.2018
Сообщений: 67
19.09.2018, 10:22  [ТС]
В чем ошибка с умножением на скаляр?
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
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
19.09.2018, 14:39
Big_best03, а что на ваш взгляд в методе сделано? Как вы это видите, построчно опишите.
1
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
19.09.2018, 19:33
Цитата Сообщение от Big_best03 Посмотреть сообщение
В чем ошибка
В NullPointerException (строка 68). Хотя для начало стоит почитать что такое умножение вектора на скаляр.
0
 Аватар для Aviz__
2743 / 2052 / 507
Регистрация: 17.02.2014
Сообщений: 9,472
20.09.2018, 10:48
Цитата Сообщение от HighPredator Посмотреть сообщение
Как вы это видите
Цитата Сообщение от JIeIIIa Посмотреть сообщение
стоит почитать
судя по стилю - это наш старый не злобный Троль...
0
20.09.2018, 11:01

Не по теме:

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

0
20.09.2018, 11:20

Не по теме:

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

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

Не по теме:

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

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

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
Лучший ответ Сообщение было отмечено 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2018, 17:07
Помогаю со студенческими работами здесь

Перевод с С++ на Java. Вычисление векторного и скалярного произведение трехмерных векторов
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;locale&gt; using namespace std; class CVector3f { ...

Метод dotProduct(Vector2D v), возвращающий скалярное произведение вектора, указанного в аргументе, и текущего вектора
Помогите пожалуйста!!! Срочно!!! Дано задание: Метод dotProduct(Vector2D v), возвращающий скалярное произведение вектора, указанного...

Определение скалярного произведения двух векторов.
Напишите рекурсивную программу для определения скалярного произведения двух векторов. (Возможно эту задачу решить на яве? Если кто-то...

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru