Как нормировать вектор
С самого момента появления компьютер считался в первую очередь вычислительной машиной и сейчас все еще остается таковой. Любая команда, отдаваемая пользователем, переводится в набор нулей, единиц и операций с ними. Именно по этой причине на начальных этапах обучения программисты постоянно моделируют способы решения различных математических задач, например – нормировки вектора.
Ознакомьтесь с математической теорией. Вектор имеет два основных параметра, характеризующих его: длину и направление. Задать и то, и другое можно, записав вектор в виде: a=xi+yj+zk, где i, j, k – единичные векторы системы координат, а x, y, z – коэффициенты. Т. е. фактически вектор задается как некоторое количество единичных отрезков. Если длина его не имеет значения, то проводится «нормировка»: процесс, в ходе которого вектор сокращается до стандартной единичной длины, сохраняя лишь информацию о направлении. Математически операция заключается в том, что каждую координату нужно поделить на модуль вектора, равный (x^2+y^2+z^2)^1/2 (корень из суммы квадратов).
Алгоритм реализации аналогичен для всех языков программирования, однако, во избежание путаницы, код будет приведен только для языка С.
Выведите на экран информацию о запросе. Сделать это можно командой printf(“Введите коэффициенты перед i, j, k:”);.Пользователю понадобится ввести три значения через пробел. В коде они будут сохранены как x, y, z типа float (дробные).
Сохраните введенные пользователем данные. Считывание удобнее всего организовать при помощи команды cin, находящейся в библиотеке iostream.h. Строка кода при этом будет выглядеть следующим образом: cin>>x>>y>>z;.
Рассчитайте и сохраните значение модуля вектора. Подключите библиотеку math.h, создайте переменную M типа float и введите расчетную формулу: S=sqrt(x*x+y*y+z*z);. Использование функции «квадрата» в данном случае нерационально.
Проверьте, не является ли вектор нулевым. Для этого поставьте условие: if (S==0) printf(“Вектор — нулевой”), следующую часть программы запишите под вкладкой else , где троеточие – нижеприведенный код. Таким образом вы реализуете развилку для двух случаев.
Нормированные значения сохранять не обязательно, если нужно всего лишь вывести их на экран. Расчет и вывод в этом случае можно совместить в одно действие, записав строку кода: printf (“a(n)=%di+%dy+%dz”, x/s, y/s, z/s).
Поставьте команду getch(); чтобы консоль не закрывалась после выполнения задачи.
Скалярное произведение векторов/Задачи/Нормализация вектора
Нормализация вектора — это преобразование заданного вектора в вектор в том же направлении, но с единичной длиной.
Для нормализации вектора нужно каждую компоненту поделить на длину вектора, или умножить инверсию длины на данный вектор. Длина вектора в трёхмерном евклидовом пространстве определяется формулой: l e n g t h = ( x ∗ x + y ∗ y + z ∗ z ) >>
- Дан вектор A B → ( 2 , 2 , 2 ) >(2,2,2)>
- Тогда длина вектора: | A B → | = ( x ∗ x + y ∗ y + z ∗ z ) = 12 ≈ 3.46 >|=>=>\approx 3.46>
- Инверсия длины: I n v L e n g t h = 1 / l e n g t h ≈ 0.2886
- Тогда для нормализации вектора нужно умножить вектор на инверсию длины:
Программный код нормализации трехмерного вектора
public float length() return (float)Math.Sqrt((X * X) + (Y * Y) + (Z * Z)); > public xyzVector normalize() float locLength = length(); float inv_length = (1 / locLength); x *= inv_length; y *= inv_length; z *= inv_length; return this; >
- Страницы, использующие устаревший тег source
- Аналитическая геометрия
Как пронормировать векторы
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Научный форум dxdy
Из учебника «Справочник по высшей математике» 1999 Минск. Страница 179.
11.6 Приведение квадратичной формы к каноническому виду ортогональным преобразованием переменных.
В примере промежуточно находят собственные векторы
получили
нормализовав эти векторы записали их координаты в столбцы составив матрицу В

И если не сложно, самое главное: как из всего этого в итоге получается кононический вид:
?
10.04.2008, 16:21
Приведите тогда пример из учебника целиком — он у вас без начала и без конца.
10.04.2008, 16:33

Начало примера:
найти ортогональное преобразование, приводящее к каноническому виду:
Ответ в предыдущем моем сообщении.
Буду премного благодарен.
10.04.2008, 16:49
Замечательно, а чему оказались равны векторы
и
? Это пронормированные
и
?
Матрица квадратичной формы
в координатах
и
— это
. Тогда матрица этой же формы, но в других координатах
, имеет вид
и
.
10.04.2008, 17:32
То есть получается надо найти 

и
квадратичная форма должна быть диагональной, то эти векторы будут собственными для исходной матрицы, так что для соответствующих им собственных чисел
и
(найдите их!) должно выйти
.
Можно и просто подобрать эти коэффициенты. Если
,
,
. Очевидно,
и
удовлетворят все трем уравнениям.
11.04.2008, 16:55
Спасибо большое. Начинает проясняться ситуация.
Только никак не пойму, откуда ты взял:
,
,
?
11.04.2008, 17:14
Я приравнял коэффиценты при
,
и
соответственно в тождестве
и домножил их на 5, чтобы избавиться от знаменателя.
| Страница 1 из 1 | [ Сообщений: 10 ] |
