Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2012, 11:58   #1
Rossomaxa
 
Регистрация: 17.07.2012
Сообщений: 4
По умолчанию Ортогонализация векторов.....

есть программа :
#include <conio.h>
#include <iostream>
#include<math.h>
using namespace std;
class Vector{
float x;
float y;
float z; //координаты вектора
float t;
float s;
public:
Vector(float x1,float x2,float x3,float x4,float x5) //конструктор
{x=x1;y=x2;z=x3;t=x4;s=x5;}
Vector add(Vector S) //вычисление суммы векторов
{x+=S.x;
y+=S.y;
z+=S.z;
t+=S.t;
s+=S.s;
Vector Q(x,y,z,t,s);
return Q;}
Vector sub(Vector S) //разность векторов
{x-=S.x;
y-=S.y;
z-=S.z;
t-=S.t;
s-=S.s;
Vector Q(x,y,z,t,s);
return Q;}
float scalar(Vector S) //скалярное произведение векторов
{float temp;
temp=x*S.x+y*S.y+z*S.z+t*S.t+s*S.s;
return temp;}
Vector mult(float temp) //умонжение вектора на число
{x*=temp;
y*=temp;
z*=temp;
t*=temp;
s*=temp;
Vector Q(x,y,z,t,s);
return Q;}
float length() //длина вектора
{float temp;
temp=sqrt(x*x+y*y+z*z+t*t+s*s);
return temp;}
float angle(Vector S) //угол между векторами
{float ang;
ang=acos(scalar(S)/length()/S.length());
return ang;}
};
void main()
{float X1,X2,X3,X4,X5,lambda;
cout<<"Vvedite 5 koordinat vektora a:"<<endl;
cin>>X1>>X2>>X3>>X4>>X5;
Vector A(X1,X2,X3,X4,X5);
cout<<"Vvedite 5 koordinat vektora b: "<<endl;
cin>>X1>>X2>>X3>>X4>>X5;
Vector B(X1,X2,X3,X4,X5);
cout<<"Vvedite 4islo Lambda: ";
cin>>lambda;
Vector M(0,0,0,0,0);
M=A.mult(lambda); M.add(B.mult(1-lambda));
Vector N(0,0,0,0,0);
N=A.mult(1/lambda); N.sub(B.mult(1/(1+lambda)));
cout<<"Ugol mezdu vektorami (lambda*a+(1-lambda)*b) i (a/lambda-b/(1+lambda)) : "<<M.angle(N)<<endl;
_getch();
}

но нужно еще провести ОРТОГОНАЛИЗАЦИЮ ВЕКТОРОВ....... а я не знаю как это делается.......срочно нужна ваша помощь....пожалуйста.
Rossomaxa вне форума Ответить с цитированием
Старый 17.07.2012, 20:17   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Этого никто не знает.
Точнее, никто не знает, что Вы подразумеваете под словом "ортогонализация".
Напишите, что имеется на входе, что должно быть на выходе, и по какому алгоритму одно должно быть преобразовано в второе.
s-andriano вне форума Ответить с цитированием
Старый 17.07.2012, 21:35   #3
Rossomaxa
 
Регистрация: 17.07.2012
Сообщений: 4
По умолчанию

у меня в задании просто указано:
1 шаг. Найти произведение длин векторов. Длина вектора находится по формуле (1);
2 шаг. Найти скалярное произведение векторов по формуле (2);
3 шаг. Разделить скалярное произведение на произведение длин векторов. Найдем косинус этого угла (формула(3)).
4 шаг. Найти угол (формула(4)).
5 шаг. Провести процесс ортогонализации векторов.

Процесс ортогонализации Грамма - Шмидта........

Последний раз редактировалось Rossomaxa; 17.07.2012 в 21:38.
Rossomaxa вне форума Ответить с цитированием
Старый 17.07.2012, 23:09   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Rossomaxa Посмотреть сообщение
Процесс ортогонализации Грамма - Шмидта........
http://ru.wikipedia.org/wiki/%D0%9F%...B4%D1%82%D0%B0
s-andriano вне форума Ответить с цитированием
Старый 18.07.2012, 13:39   #5
Rossomaxa
 
Регистрация: 17.07.2012
Сообщений: 4
По умолчанию

да блин видел я эту формулу......что не понимаете никак что НЕ ПОЛУЧАЕТСЯ У МЕНЯ ЕЕ ПРИМЕНИТЬ К ПРОГРАММЕ........кто бы если мог мне уже измененный правильный код выложить......дополненный........
Rossomaxa вне форума Ответить с цитированием
Старый 18.07.2012, 14:33   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Вы прикидываетесь идиотом или держите других форумчан за идиотов?

Что сложного в алгоритме:
новый1 = старый 1
новый2 = старый2 - коэф*новый1, где коэф = скалярно(старый2, новый1)/скалярно(новый1, новый1)

особо учитывая, что у вас есть код с комментариями?
p51x вне форума Ответить с цитированием
Старый 18.07.2012, 15:18   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Этого никто не знает.
Точнее, никто не знает, что Вы подразумеваете под словом "ортогонализация".
Напишите, что имеется на входе, что должно быть на выходе, и по какому алгоритму одно должно быть преобразовано в второе.
И я то-же не знаю. Я знаю слово - ортогональность.
Ортогонизация, это наверное преобразование пространства из рерпендикулярного, в перепендикулярное?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вектор векторов Freewill Visual C++ 6 19.02.2012 18:05
Перемножение векторов Smile_Eminsa Общие вопросы C/C++ 0 11.05.2010 09:14
Массив из 2 векторов GreatMuse Общие вопросы C/C++ 6 30.01.2010 22:09
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 15:25