Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 11

Решение уравнения перебором

14.11.2018, 19:42. Показов 3714. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с кодом. Суть такая: нужно найти x,y,z из уравнения https://www.cyberforum.ru/cgi-bin/latex.cgi?r=\sqrt{(x_{1}-x){^{2}+(y_{1}-y){^{2}+(z_{1}-z){^{2}} . r, x_1, y_1, z_1 - задаю сам,т.е. они известны. Я решил попробовать методом перебора. Но результатом являются числа, которые пишу в условии цикла,т.е. 360 и потом вместо x,y,z в уравнение подставляется 360.
Может быть кто нибудь подскажет что и где нужно изменить в коде ? набросок кода ниже


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int X_1 = StrToFloat(Edit1->Text);
int Y_1 = StrToFloat(Edit2->Text);
int Z_1 = StrToFloat(Edit3->Text);
int x;
int y;
int z;
 
for (x = 0; x<360; x=x+1)
    for (y = 0; y<360; y=y+1)
        for (z = 0; z<360; z=z+1)
 
 
 
r = sqrt((pow((X_1-x),2)+ pow((Y_1-y),2) + pow((Z_1-z),2)));
Memo1->Lines->Strings[0] = FloatToStr(x);
Memo1->Lines->Strings[1] = FloatToStr(y);
Memo1->Lines->Strings[2] = FloatToStr(z);

Буду очень благодарен кто поможет))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2018, 19:42
Ответы с готовыми решениями:

Решение задачи перебором
Дана задача в общем виде: Имеются предметы ценой x, y, z. Найти все возможные наборы предметов такие, что суммы их цен была равна w. ...

Решение задачи компоновки элементов схемы полным перебором
Доброго времени суток, необходимо найти все возможные разбиение графа на подграфы. На вход количество вершин и матрица смежности графа....

Определить тип уравнения, указать метод решения, общее решение дифференциального уравнения
дано дифференциальное уравнение первого порядка: (x+y+1)dx+(x-y2+3)dy=0. Определить тип уравнения, указать метод решения, общее решение...

28
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
14.11.2018, 20:51
Цитата Сообщение от Denis68koltsov Посмотреть сообщение
Помогите с кодом
С кодом ли? Тут с логикой нелады; или с пониманием работы циклов, в том числе вложенных.
0
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 11
14.11.2018, 22:20  [ТС]
nick42, что именно нужно изменить подскажи пожалуйста?
P.S.такой "код" посоветовал один преподаватель со стажем программирования 20лет....
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
15.11.2018, 00:10
Цитата Сообщение от Denis68koltsov Посмотреть сообщение
такой "код" посоветовал один преподаватель со стажем программирования 20лет
Очень сомневаюсь, что вот именно такой... .
Во-первых: не видно, где определена переменная r. Далее, - в Memo вот так писать опасно, можно получить вылет на ошибку, если там не будет трех строк. Про преобразование целой величины, используя FloatToStr (то же касается и int .. = StrToFloat(Edit..)), скромно умолчу... - это к ошибке не приведёт. И главное: по окончании цикла у всех троих переменных - x, y, z будет одно значение: 360; это следует из условия цикла. Какой смысл выводить их в Memo и рассматривать?
Это те ошибки, которые сверху. В сам смысл задания я не вникал; это ваша задача.
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,385
Записей в блоге: 3
15.11.2018, 05:19
Denis68koltsov, а откуда следует, что цикл должен идти до 360? Это где-то задано или чем-то обосновано? Откуда это сакраментальное число?

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Denis68koltsov Посмотреть сообщение
такой "код" посоветовал один преподаватель со стажем программирования 20лет
НЕ ВЕРЮ!!!

0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
15.11.2018, 05:23
Цитата Сообщение от Denis68koltsov Посмотреть сообщение
из уравнения
Если мне память не изменяет, то это уравнение для решения задачи нахождения координат точки пересечения окружностей... Тогда это неполное условие задачи, и решается совсем не так.
0
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 11
15.11.2018, 09:16  [ТС]
D1973, ваше право верить или нет

Добавлено через 26 секунд
TrollHammer, да именно эта задача
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
15.11.2018, 10:21
Denis68koltsov, тогда там решается система минимум из двух уравнений (пересечение 2-х окружностей)
0
 Аватар для FFPowerMan
2156 / 1236 / 508
Регистрация: 11.10.2018
Сообщений: 6,249
15.11.2018, 10:30
Там еще условие нужно добавить, если это вообще сработает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int X_1 = StrToFloat(Edit1->Text);
int Y_1 = StrToFloat(Edit2->Text);
int Z_1 = StrToFloat(Edit3->Text);
int r = StrToFloat(Edit4->Text);
int x;
int y;
int z;
bool Solution = false;
 
for (x = 0; x<360; x=x+1)
    for (y = 0; y<360; y=y+1)
        for (z = 0; z<360; z=z+1)
            if(r == sqrt((pow((X_1-x),2)+ pow((Y_1-y),2) + pow((Z_1-z),2))))
            {
                Solution = true;
                goto Exit;
            }
 
Exit:
Memo1->Lines->Add("x = " + FloatToStr(x));
Memo1->Lines->Add("x = " + FloatToStr(y));
Memo1->Lines->Add("x = " + FloatToStr(z));
Переменную Solution можно убрать.
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
15.11.2018, 11:01
FFPowerMan, и что из этого получим? это не решение, нужно вывести x, y из 2-х уравнений. ТС не полностью описал задачу, это задача решения линейной засечки от двух реперов в пространстве. Решений должно быть 2, окружности пересекутся в 2-х точках.

Не по теме:

Кстати, сегодня на ютубе увидел ролик от Claster'а "Применение математики в играх", где он такую задачу и решал, только на плоскости



Добавлено через 3 минуты
Либо это задача определения, лежит ли точка с координатам (x, y, z) на окружности с заданным центром и радиусом. Тогда мне что-то подсказывает, что решать надо через полярные координаты, а 360 - это как раз угол описания окружности (полный угол)

Добавлено через 4 минуты
Даже, скорее всего, это нахождение массива координат точек на окружности через 1 градус

Добавлено через 5 минут
тогда
C++
1
2
3
4
5
6
7
8
  for(int ang = 0; ang<360; ang++)
  {
      x = r*sin(ang*M_PI/180.0);
      y = r*cos(ang*M_PI/180.0);
      z = r*tan(ang*M_PI/180.0); //точно не помню, искать лень
 
    Memo1->Lines->Add("Ang = "+IntToStr(ang)+"X = "+FloatToStr(x)+" Y = "+FloatToStr(y)+" Z = "+FloatToStr(z));
  }
Добавлено через 2 минуты
да, чуть не забыл, переменные x, y, z - тип float
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
15.11.2018, 11:03
Можно так (преподавательский стаж отсутствует):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  Memo1->Clear();
 
  double x, y, z,
         x1 = StrToFloatDef(LabeledEdit1->Text, 5),
         y1 = StrToFloatDef(LabeledEdit2->Text, 10),
         z1 = StrToFloatDef(LabeledEdit3->Text, -7),
         r  = StrToFloatDef(LabeledEdit4->Text, 3);
 
  if (r < 0)
  {
    ShowMessage("r не может быть меньше 0\n(в таком случае считаем, что r = 0)");
    LabeledEdit4->Text = r = 0;
  }
  Application->ProcessMessages();
 
  const limit_value = 100, precision = 1E-10, step = 1;
 
  for (x = -limit_value; x <= limit_value; x += step)
    for (y = -limit_value; y <= limit_value; y += step)
      for (z = -limit_value; z <= limit_value; z += step)
        if (fabs(r - sqrt((pow((x1-x),2)+ pow((y1-y),2) + pow((z1-z),2)))) <= precision)
          Memo1->Lines->Add("x = " + String(x) + "     y = " + String(y) + "     z = " + String(z));
Миниатюры
Решение уравнения перебором  
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
15.11.2018, 11:06
gunslinger, а Вас это "360" не смущает? Не зря же это число в циклах ТС
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
15.11.2018, 11:18
Никакого объяснения, почему там 360, от ТС-а нет. Поэтому логично сделать вывод, что число совершенно случайное.
Либо нужно ждать комментария автора темы.
0
 Аватар для FFPowerMan
2156 / 1236 / 508
Регистрация: 11.10.2018
Сообщений: 6,249
15.11.2018, 11:27
Цитата Сообщение от TrollHammer Посмотреть сообщение
Кстати, сегодня на ютубе увидел ролик от Claster'а "Применение математики в играх", где он такую задачу и решал, только на плоскости.
- А где у него там этот ролик? Что-то я не нашел.
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
15.11.2018, 11:35
Цитата Сообщение от Denis68koltsov Посмотреть сообщение
TrollHammer, да именно эта задача
gunslinger, это ответ автора поста на мой вопрос, поэтому я сделал такие выводы по решению задачи (как геодезист )

Добавлено через 2 минуты

Не по теме:

Одно время писал программный комплекс для решения геодезических задач (для последующей продажи), в те далекие времена профессиональных систем не было, но появился на рынке геодезического ПО Credo-Dialogue и все, как одиночка, я стал неконкурентен



Добавлено через 3 минуты
FFPowerMan, youtube com /watch?v=JC8E2i84fIY
0
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 11
15.11.2018, 12:38  [ТС]
Сорян что запутал вас.
Всё верно выше сказали-360 это угол описания окружности.
Для начала я хотел решить одно уравнение перебором. В идеале конечно же нужно решить систему из 2 или 3 аналогичных уравнений:boredom
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
15.11.2018, 12:48
Denis68koltsov Решение задачи линейной засечки в геодезии? В личку напишите, скину готовую программу

Добавлено через 3 минуты
Цитата Сообщение от Denis68koltsov Посмотреть сообщение
или 3 аналогичных уравнений
Тут еще необходимо рассчитать линейные погрешности и вычислить СКО получения координат
0
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 11
15.11.2018, 21:31  [ТС]
TrollHammer, написал
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
16.11.2018, 04:55
Denis68koltsov, Сразу не доперло, это же задача на нахождение координат точек на поверхности сферы
тогда решение такое
C++
1
2
3
4
5
6
7
8
9
for(float ang1 = 0.; ang1<2*M_PI; ang1++)  
 for(float ang2 = 0.; ang2<M_PI; ang2++)
  {
      x = X_1+R*sin(ang2)*cos(ang1);
      y = Y_1+R*sin(ang2)*sin(ang1)
      z = Z_1+R*sin(ang1);
 
    Memo1->Lines->Add("Ang = "+IntToStr(ang)+"X = "+FloatToStr(x)+" Y = "+FloatToStr(y)+" Z = "+FloatToStr(z));
  }
Добавлено через 8 минут
ошибся с приращением углов в циклах - углы же заданы не в градусах, а в радианах, тогда ang1 и ang2 нужно увеличивать на 0.017453

Добавлено через 30 секунд
и < заменить на <=

Добавлено через 3 часа 59 минут
Напорол с формулами
C++
1
2
3
4
5
6
7
8
9
for(float ang1 = (-1)*M_PI; ang1<=M_PI; ang1+=0.017453)
 for(float ang2 = (-1)*M_PI/2.0; ang2<=M_PI/2.0; ang2+=0.017453)
  {
      x = X_1+R*cos(ang2)*cos(ang1);
      y = Y_1+R*sin(ang1)*cos(ang2);
      z = Z_1+R*sin(ang2);
 
    Memo1->Lines->Add("X = "+FloatToStr(x)+" Y = "+FloatToStr(y)+" Z = "+FloatToStr(z));
  }
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,385
Записей в блоге: 3
16.11.2018, 08:09
Цитата Сообщение от TrollHammer Посмотреть сообщение
В личку напишите, скину готовую программу
 Комментарий модератора 
п. 4.6 Правил форума!
Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов.
TrollHammer, Denis68koltsov - официальное предупреждение!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2018, 08:09
Помогаю со студенческими работами здесь

Алгоритмизация решения уравнения для банковского IT-шника (или просто решение уравнения)
Добрый день. Нужна помощь (в идеале) с алгоритмизацией решения уравнения или (тоже отлично) способом численного решения уравнения для...

Найти решение уравнения, изоклинную и интегральную кривые, решение задачи Коши
Помогите пожалуйста! а) Найти решение вида: x=a,y=b,y=kx+b y'=\frac{y^2-4}{xy},\\ y'=x-y+2 б) Какая кривая является одновременно...

Найти общее решение или частное решение уравнения первого порядка
Помогите решить: 2*x*sqrt(1-y^2)=y' * (1+x^2). Я не понимаю как решить это, т.к. dx и dy получаются в знаменателе...

Найти общее решение дифференциального уравнения II порядка и частное решение.
помоги пожалуйста!!! Найти общее решение дифференциального уравнения II порядка и частное решение, удовлетворяющее указанным начальным...

Найти общее решение дифференциального уравнения I порядка и частное решение.
помогите пожалуйста!!!! Найти общее решение дифференциального уравнения I порядка и частное решение, удовлетворяющее указанным начальным...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru