|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.05.2020, 14:16 | #1 |
Новичок
Джуниор
Регистрация: 24.05.2020
Сообщений: 5
|
Не могу придумать цикл
Здравствуйте. Меня что-то заклинило, не могу составить простой цикл.
Дано: Предположим дано уравнение вида a+b=x, где a - какое-то постоянное число, b - перебираются значения в каком-то диапазоне с некоторым шагом, x - корень. Задача: Нужно перебирать значения b до тех пор, пока не будут получены подряд два значения x с разными знаками. Помогите, пожалуйста. |
24.05.2020, 15:35 | #2 | ||
Старожил
Регистрация: 23.10.2010
Сообщений: 2,306
|
Цитата:
Если b = -a и шаг h, то a + b + h/2 - положительное, а a + b - h/2 - отрицательное. И так, у нас есть некоторое a. Выбираем h, например, 0.000002. Тогда b = - a - h/2 и: x0 = a + b - отрицательное, а x1 = a + b + h - положительное. Цитата:
Язык, начальные значения, условие преобразования, условие завершения.
Как-то так, ...
|
||
24.05.2020, 16:23 | #3 | |
Новичок
Джуниор
Регистрация: 24.05.2020
Сообщений: 5
|
Не правильно выразился, x - это решение выражения a+b
Цитата:
1) мы посчитали один раз a+b, получили значение x. 2) b у нас как-то изменился (не важно как) 3) мы опять посчитали a+b, получили другое значение x 4) b опять изменился И так до тех пор, пока два подряд значения x не будут с разными знаками. Я туплю и не понимаю, как сделать цикл. Чтобы сравнивать текущее значение х с предыдущим. |
|
24.05.2020, 17:51 | #4 | ||
Старожил
Регистрация: 23.10.2010
Сообщений: 2,306
|
Цитата:
a = 5 b = 0 шаг h = 1 т.е. bi = bi-1+h Цитата:
Для любых, а не конкретных значений и типа "неважно как" вы получите Ну в общем сами понимаете. Есть задача: есть исходные данные, есть условие, могут быть дополнительные правила ... В принципе: Код:
Или Код:
Как-то так, ...
|
||
24.05.2020, 19:07 | #5 |
Новичок
Джуниор
Регистрация: 24.05.2020
Сообщений: 5
|
Вот более конкретный пример.
Дано: 27*(86-46*cos(a))=x, где a - меняется от 0 до pi с шагом pi/6 Задача: Нужно перебирать значения a до тех пор, пока не будут получены подряд два значения x с разными знаками. Я не понимаю как составить цикл так, чтобы на каждой итерации фиксировать значение x, сохранять его до прохождения следующей итерации, фиксировать новое значение и сравнивать его с предыдущим. И так до выполнения условия задачи. Код:
|
24.05.2020, 19:45 | #6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,546
|
1.Более привычно глазу, когда независимая и зависимая переменные обозначаются традиционно:
Код:
а - Вычисляем значение на границе интервала, запоминаем. б - Прибавляем шаг, вычисляем значение. в - Если знак другой - задача решена. Если нет г - Если дошли до конца интервала, а оно - никак - решения нет, иначе запоминаем значение -- и на п. б Шаг великоват pi/6, проскочить можем. Чай не на арифмометре Феликс считаем, компутеру эта задачка - на пару микросекунд. 3. Со сравнениями действ. чисел на равенство очень осторожно надо быть, можем улететь хр.з.к. Надо бы Код:
Косинус всегда <=1, умножить на 46 всегда <=46. Интересно - откуда тут минус проклюнется ? Последний раз редактировалось digitalis; 24.05.2020 в 20:02. |
24.05.2020, 20:09 | #7 |
Новичок
Джуниор
Регистрация: 24.05.2020
Сообщений: 5
|
digitalis, вы правы, задача дурацкая. Я попытался для примера её привести, чтобы реальное уравнение не переписывать. Оно большое очень, из нескольких этапов вычисляется. И да, вы опять правы, это первая часть задачи. Вторая часть уточнение задачи методом бисекции. Мне нужно просто алгоритм понять.
|
24.05.2020, 20:18 | #8 |
Новичок
Джуниор
Регистрация: 24.05.2020
Сообщений: 5
|
digitalis, т.е. если использовать мой дурацкий пример, то получится как-то так?
Код:
Последний раз редактировалось Denny777; 25.05.2020 в 00:02. |
24.05.2020, 21:23 | #9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,289
|
Чтобы 2 раза не пересчитывать на каждом шаге:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
24.05.2020, 21:31 | #10 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,306
|
Можно так.
Описать переменную-флаг и инициализировать её значением False. Код:
Код:
Как-то так, ...
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Головоломка Птички. Не могу придумать авторешение | Armageddets | Общие вопросы Delphi | 2 | 11.05.2018 13:24 |
не могу придумать условие запроса | Dvoishnik | SQL, базы данных | 3 | 22.04.2016 15:31 |
Не могу придумать доработку. | Rik55rus | Помощь студентам | 1 | 06.10.2012 21:13 |
не могу придумать форрмулу!!! | ta4ilka | Microsoft Office Excel | 3 | 11.04.2010 18:02 |