Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Консультации по информатике


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Megaloman
Статус: Мастер-Эксперт
Рейтинг: 374
∙ повысить рейтинг »
Gluck
Статус: 9-й класс
Рейтинг: 103
∙ повысить рейтинг »
CradleA
Статус: Мастер-Эксперт
Рейтинг: 76
∙ повысить рейтинг »

Информатика

Номер выпуска:388
Дата выхода:18.01.2022, 16:45
Администратор рассылки:Коцюрбенко Алексей Владимирович (Старший модератор)
Подписчиков / экспертов:6 / 32
Вопросов / ответов:3 / 5

Консультация # 136147: Уважаемые эксперты. Убедительно прошу помочь мне решить эти задачи: 1. Имеется четыре A,B,C,D произвольных числа. ЭВМ должна ответить на вопрос. Правда ли что среди чисел есть и положительные и отрицательные. Ответ ЭВМ должна вывести в виде текста - слов "Правда" или "Неправда" 2. Составить программу вычесления и выдач...
Консультация # 37513: Помогите пожалуйста решить такую задачу: Как определить объем и площадь граней многогранника в трехмерном пространстве, если известны координаты его вершин. Заранее СПАСИБО. ...
Консультация # 178272: Здравствуйте, уважаемые эксперты! Мне необходимо написать программу в qbasic, интегрирование ОДУ методом Рунге-Кутты, по данным алгоритмам. http://rfpro.ru/upload/2294 http://rfpro.ru/upload/2295 Индивидуально задание: дифференциальное уравнение y’=y (y=y(x)), интервал [0,1], начальные условия x0 = 0, y0 = 1, шаг интегрирования h0 = 0,1...

Консультация # 136147:

Уважаемые эксперты. Убедительно прошу помочь мне решить эти задачи:
1. Имеется четыре A,B,C,D произвольных числа. ЭВМ должна ответить на вопрос. Правда ли что среди чисел есть и положительные и отрицательные. Ответ ЭВМ должна вывести в виде текста - слов "Правда" или "Неправда"
2. Составить программу вычесления и выдачи на печать суммы (или произведения) N элементов бесконечного числового ряда
y=(-512)256(-128)
3. Составить программу вычисления числового ряда для известного числа членов ряда N. Перед программированием следует выявить и написать необходимые аналитические соотношения, описывающие все имеющиеся зависимости y=(1+2-1/2)(3+22/3)(5+2-3/4)(7+24/5)

Дата отправки: 10.05.2008, 02:27
Вопрос задал: Александр Бетин
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Даниил Цветков:

Здравствуйте, Александр Бетин!
Решение первой задачи в приложении.
Удачи!

Приложение:

Консультировал: Даниил Цветков
Дата отправки: 10.05.2008, 15:07
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 37513:

Помогите пожалуйста решить такую задачу:
Как определить объем и площадь граней многогранника в трехмерном пространстве, если известны координаты его вершин.
Заранее СПАСИБО.

Дата отправки: 14.03.2006, 18:22
Вопрос задал: Koval
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Ayl:

Здравствуйте, Koval!

Ну с площадью-то все просто. Во-первых, тебе нужно выбрать все вершины, лежащие в одной плоскости. Сделать это просто, используя свойство, что три вектора лежать в одной плоскости тогда и только тогда, когда их смешанное произведение равно 0.
Т.е. по координатам вершин определяешь все возможные вектора. Далее выбираешь любые 2 вектора, идущие из одной вершины. Они будут определять плоскость. Далее проверяешь оставшиеся вектора на принадлежность этой плоскости. Получаешь все вершины, лежащие в данной плоскости. Повторяешь эти операции для всех остальных вершин.
Теперь, ты имеешь координаты вершин многоугольника. Требуется определить его площадь. Но для однозначного определения многоугольника требуется еще знать порядок вершин. Если эта информация тебе не задана, то задача не имеет решения. Допустим, что исходный многогранник является выпуклым. Тогда и каждая грань представляет собой выпуклый многоугольник. Координаты вершин однозначно определяют выпуклый многоугольник.
Для построения правильного следования вершин многоугольника нужно выбрать любую вершину и найти такую вторую вершину, чтобы все оставшиеся вершины находились в одной полуплоскости относительно прямой, проходящей через эти 2 вершины. Таких точек будет 2, одна при обходе многоугольника по часовой стрелке, вторая - против. Далее, приняв найденную вершину за начало нового отрезка, выбираешь из оставшихся вершин по тому же критерию. И продолжаешь до тех пор, пока все вершины не закончатся.
Теперь, имея список вершин многоугольника, можно определить его площадь. Для этого выбираешь любую вершину и разбиваешь многоугольник на треугольники отрезками, выходящими из этой вершины во все остальные. Площадь многоугольника есть сумма площадей этих треугольников. А площадь треугольника есть половина векторного произведения векторов, построенных на сторонах треугольника, выходящих из одной вершины.

А с объемом что-то ничего хорошего в голову не приходит. Даже для выпуклого многогранника.

Консультировал: Ayl
Дата отправки: 14.03.2006, 20:08
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Полховский Александр Владимиро:

Здравствуйте, Koval!
Данный ответ будет содержать несколько пояснительных чертежей, который находятся на моём сайте.
Итак, начнём. Для примера я взял куб (чтоб не сильно много, и чтоб показывало все возможные ситуации).

Вот чертёж нашего куба. Именно его должен видеть пользователь при вводе данных для восьми-вершинной фигуры.

Вот наглядные примеры обхода точек и анализа соседей:


Пример


Немного об идее: она заключается в том, что для каждой точки мы имеем информацию о точках-соседях. Проходя кадую точку, мы по-порядку выявляем все грани, в которых лежит эта точка, и выискивая все остальные точки, лежащие в найденных гранях. Заодно по ходу считаем площядь.

При это требуется чёткий ввод всех данных для точек, эквивалентных польз овательскому варианту. Будет несколько не удобно, так как во многих случаях названия точек не будут совпадать, но это терпимо.

Что касается определения площади, то её мы определяем из площади треугольников, которые "сходятся" в одну общую вершину. Примерно так.


Так. Пока писал, десять раз поменял алгоритм, поэтому с рисунками погорячился. Их всего 3. Для лучшего понимания процесса напишу весь алгоритм действий от начала и до конца в подробностях. К сожалению, без иллюстраций. Комментарии буду выделять другим цветом.


==========================================================

В начале всего процесса у нас имеется следующая информация: координаты всех точек и связи всех вершин между собой (это мы сами задали, использовав чертёж). Выглядит информация о связях так:

A:BDF
B:ACG
C:BDH
D:ACEE:DFH
F:AEG
G:BFH
H:CEG

Каким образом это хранить и как с этим работать - Ваше решение. Главное суть уловить. Итак, начнём.



Дико извиняюсь. Разбор полётов занял более 10000 символов, поэтому продолжение читайте здесь


=====================================================

Как определять принадлежность точки данной плоскости предыдущий эксперт Вам объяснил вроде. Площадь тоже. Осталось только методы подобрать. И нашатырь возьмите, если преподавателю собираетесь это показывать.

Что касается объёма... вчера меня озарило. Объём можно определить тем же способом. Только там мы брали плоскости граней, образованный тремя точками (обходимой точкой и 2 её соседями). А здесь надо рассматривать объёмы треугольных пирамид, образованные уже четырьмя точками (обходимой точки и 3 её соседями) (если сами не разберётесь, могу приме р написать). Да, эта задача на порядок сложнее. Определение объёма по векторам - вещь тяжёлая. Но это уже проблема вторая. Главное, что метом найден.

Вот, собственно, конец. А кто слушал - молодец.

Кто рассказывал тоже :)

Удачи.

Консультировал: Полховский Александр Владимиро
Дата отправки: 18.03.2006, 02:08
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 178272:

Здравствуйте, уважаемые эксперты!
Мне необходимо написать программу в qbasic, интегрирование ОДУ методом Рунге-Кутты, по данным алгоритмам.
http://rfpro.ru/upload/2294
http://rfpro.ru/upload/2295
Индивидуально задание: дифференциальное уравнение y’=y (y=y(x)), интервал [0,1], начальные условия x0 = 0, y0 = 1, шаг интегрирования h0 = 0,1.
Вот что у меня получилось:

Код
DECLARE FUNCTION r! (x() AS SINGLE, y() AS SINGLE, h AS SINGLE, m AS SINGLE)
DECLARE FUNCTION f! (x AS SINGLE, y AS SINGLE)
DIM n AS INTEGER
DIM x0 AS SINGLE, y0 AS SINGLE, h AS SINGLE, m AS SINGLE, b AS SINGLE
CLS
INPUT "Nachalnoe uslovie x0:"; x0
INPUT "Nachalnoe uslovie y0:"; y0
INPUT "Pogreshnost:"; E
INPUT "Shag pechati:"; h0
INPUT "Konec otrezka integrirovaniya [x0;b]:"; b
PRINT
n = FIX((b - x0) / h0) + 1
PRINT "Nachalnoe uslovie x0:"; x0
PRINT "Nachalnoe uslovie y0:"; y0
PRINT "Shag pechati:"; h0
FOR i = 1 TO n
h = h0
m = 1
y = r(x(), y(), h, m)
DO UNTIL ABS(y - y1) < E
y1 = y
h = h / 2
x = x0
y = y0
m = 2 * m
y = r(x, y, h, m)
LOOP
x0 = x0 + h0
y0 = y
PRINT "x0 ="; x0,"y0 ="; y0, "h0 ="; h0, "m ="; m
NEXT i
END

FUNCTION f (x AS SINGLE, y AS SINGLE)
f = y(x)
END FUNCTION

FUNCTION r! (x() AS SINGLE, y() AS SINGLE, h AS SINGLE, m AS SINGLE)
FOR j = 1 TO m
k1 = f(x(j), y(j))
k2 = f(x(j) + h / 2, y(j) + h * k1 / 2)
k3 = f(x(j) + h / 2, y(j) + h * k2 / 2)
k4 = f(x(j) + h, y(j) + h * k3)
y(j + 1) = y(j) + h / 6 * (k1 + 2 * k2 + 2 * k3 + k4)
x = x + h
NEXT j
r = y(j + 1)
END FUNCTION

Программа выдает ошибку, связанную с переменной X. Видимо я что-то не поняла с процедурами-функциями. Помогите, пожалуйста, исправить программу.
В результате должны получиться значения x и y(x) из приведенной таблицы.
http://rfpro.ru/upload/2296
Заранее спасибо!

Дата отправки: 07.05.2010, 20:23
Вопрос задал: Ushastik1985
Всего ответов: 2
Страница онлайн-консультации »


Консультирует lamed (Академик):

Здравствуйте, Ushastik1985. Ответ в приложении. QBasic
Внесены некоторые исправления.
1. Исправлена передача параметров. Надо считать x[i+1] и x[i] итерациями, а не элементами массива.
2. Исправлена функция f=y.
3. Исправлен вызов функции y = r(x0, y0, h, m) в первом цикле.
Удачи!

Приложение:

Консультировал: lamed (Академик)
Дата отправки: 07.05.2010, 23:01 Спасибо за полный и основательный ответ.
-----
Дата оценки: 07.05.2010, 23:42

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Лиджи-Гаряев Владимир:

Здравствуйте, Ushastik1985.

В предыдущем ответе, x выбегает из отрезка [0;1]
Предлагаю свой вариант исправлений.

Код
DECLARE FUNCTION r! (x AS SINGLE, y AS SINGLE, h AS SINGLE, m AS SINGLE)
DECLARE FUNCTION f! (x AS SINGLE, y AS SINGLE)
CLS
INPUT "Nachalnoe uslovie x0:"; x0
INPUT "Nachalnoe uslovie y0:"; y0
INPUT "Pogreshnost:"; E
INPUT "Shag pechati:"; h0
INPUT "Konec otrezka integrirovaniya [x0;b]:"; b
PRINT
n = FIX((b - x0) / h0) + 1
PRINT "Nachalnoe uslovie x0:"; x0
PRINT "Nachalnoe uslovie y0:"; y0
PRINT "Shag pechati:"; h0
y1 = y0
FOR i = 1 TO n
h = h0
m = 1
y = r(x, y, h, m)
DO UNTIL ABS(y - y1) < E
y1 = y
h = h / 2
x = x0
y = y0
m = 2 * m
y = r(x, y, h, m)
LOOP
x0 = x0 + h0
y0 = y
PRINT "x ="; x0, "y ="; y0, "h ="; h0, "m ="; m
NEXT i
END

FUNCTION f (x, y)
f = y
END FUNCTION

FUNCTION r! (x, y, h, m)
FOR j = 1 TO m
k1 = f(x, y)
k2 = f(x + h / 2, y + h * k1 / 2)
k3 = f(x + h / 2, y + h * k2 / 2)
k4 = f(x + h, y + h * k3)
y = y + h * (k1 + 2 * k2 + 2 * k3 + k4) / 6
x = x + h
NEXT j
r = y
END FUNCTION

Консультировал: Лиджи-Гаряев Владимир
Дата отправки: 07.05.2010, 23:28 нет комментария
-----
Дата оценки: 07.05.2010, 23:43

Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное