Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите, нужна программа на Дельфи 
:(
    Опции темы
Ира
Дата 9.4.2003, 11:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите, нужна программа на Дельфи. Дана функция от двух переменных, даны две точки. Необходимо найти длину дуги между данными точками на кривой.
  Вверх
78125
Дата 9.4.2003, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Путем разбиения на дуги. Иного выхода не вижу.
--------------------
купим подпись
PM MAIL   Вверх
neutrino
Дата 9.4.2003, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



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

Цитата

function f(x: double): double;        //function
function fd(x: double): double;      //derivative

S:=0;
for x:=a to b do begin
  S:=S+1/cos(arctan(fd(x)));
end;



--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Ира
Дата 10.4.2003, 16:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Это все очень хорошо, но как это будет выглядеть для функции, например, f(x,y)=x*x+5*y*y-8
  Вверх
neutrino
Дата 10.4.2003, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Мдааа... Я ступил...

.... надо найти кривую пересечения плоскости с функцией... хмм.... Плоскость ведь можно построить довольно лекго...
(так... рассуждения...)


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Ира
Дата 10.4.2003, 16:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











На самом деле, нужно разбить кривую на мелкие отрезки, потом заменить длину кривой на этом отрезке длиной отрезка. Длина всей дуги будет равна сумме длин маленьких отрезочков. Но как получить точки на кривой, вот в чем проблема.
  Вверх
man2002ua
Дата 10.4.2003, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Это не кривая, а поверхность smile.gif


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
neutrino
Дата 10.4.2003, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Модератору: тему надо переносить в "технологии и алгоритмы".

Ира, для решения Вашей задачи возможно необходимо взять криволинейный интеграл по длине дуги? Или это не имеет отношения?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
man2002ua
Дата 12.4.2003, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Ира, можно точки эти узнать?


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
neutrino
Дата 13.4.2003, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Значит так, если есть функция и координаты точек, то:
I.
1) ищем уравнение пересечения плоскости перпендикулярной плоскости xOy, в которой лежит отрезок AB с уравнением z(x,y).
2) теперь у нас есть уравнение кривой на плоскости и всего-лишь нужно воспользоваться формулой для нахождения дуги (там интеграл от a до b, [sqrt(1+y'(x)^2) dx])

II.
1) воспользоваться формулой для нахождения криволинейного интеграла по длине дуги;
2) по скольку мы будем знать площадь, длину основания |a-b|, и высоты в двух концах z(a), z(b), то найти длину кривой заключенной между концами не составит труда smile.gif

Если Вам еще что-нибудь непонятно, спрашивайте.

P.S. В общем советую просто посмотреть в учебник по математике.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
man2002ua
Дата 14.4.2003, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



neutrino, похоже, что ты сильно все запутал своими плоскостями.

Проще надо быть - если есть точки x1, y1 и x2, y2, то надо попытаться определить две функции:
x = x(t) и y = y(t), где A <= t <= B.

Тогда длина кривой между точками:


S = Интеграл от A до B ( Корень( x'(t)^2 + y'(t)^2 ) )dt



--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
Fantasist
Дата 14.4.2003, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Все повторяется... Ровно год назад (или два? или полтора?) какая-то другая девушка поднимала точно такую же задачу, и тоже для примера была данна линия эллипса. Помниться, такой базар развели...

Цитата
На самом деле, нужно разбить кривую на мелкие отрезки, потом заменить длину кривой на этом отрезке длиной отрезка. Длина всей дуги будет равна сумме длин маленьких отрезочков. Но как получить точки на кривой, вот в чем проблема.


Совершенно верно. Получить ее можно решением квадратного уровнения. Береш х=0, подставляешь и решаешь относительно y. Если решение существует в области рациональных чисел, значит одна точка есть. Прибавляешь прирощение к x и вычисляешь следующий у - вот тебе и отрезок. И т. д. Вообще, легко оценить область допустимых значений х, явно, что для этого выражение оно будет удовлетворять условию:

8/5-(х*х)/5 >= 0 отсюда |x|<= sqrt(8);

Ну вот и бери значения от [-sqrt(8), +sqrt(8)];





--------------------
Волны гасят ветер...
PM MAIL   Вверх
Ира
Дата 18.4.2003, 17:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как быть в том случае, когда одному х, соответствует не один у. Какое из двух значений выбрать?
  Вверх
man2002ua
Дата 18.4.2003, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Ира, повторюсь, чтобы получилась кривая надо знать:
x = x(t) и y = y(t), где A <= t <= B.


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
Ира
Дата 21.4.2003, 12:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











По условию дано, что кривая задана в общем виде, то есть f(x,y)=0. Так ее вводит пользователь. Нельзя выразить х через у. Как быть в этом случае?
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.