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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите написать функцию 
V
    Опции темы
DoZENT
Дата 9.7.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Помогите пожалуйста! Необходимо определить уравнение параболы по трем точкам. Может есть готовая процедура?


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
Throne
Дата 9.7.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я считаю, что такое лучше спрашивать у твоего преподавателя математики.
если у тебя есть математическое решение этой задачи, то программу написать не сложно.
--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
DoZENT
Дата 9.7.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Throne @  9.7.2007,  20:32 Найти цитируемый пост)
если у тебя есть математическое решение этой задачи, то программу написать не сложно.

Все дело в том, что нет этого решения((


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
Throne
Дата 9.7.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



три точки даются в виде F(x1)=n1, F(x2)=n2, F(x2)=n2, где x1,2,3 - произвольные или идущие строго по порядку?
--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
DoZENT
Дата 9.7.2007, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Throne, координаты точкек задаются произвольно (использую random и рисую их в PaintBox).

Это сообщение отредактировал(а) DoZENT - 9.7.2007, 22:06


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
SPrograMMer
Дата 9.7.2007, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


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

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



Ну давай вспоминать чего тама за уравнение этой самой параболы...прально... квадратное уравнение с тремя коэффициентами... вот... у тебя три точки с координатами x и y... подсталяй их три раза вместо x и y  в уравнение и вычисляй неизвестные тебе коэффициенты... всего-то система из трех ЛИНЕЙНЫХ уравнений с тремя неизвестными...  smile  smile 

осталось токо сотворить решение этой самой системы... ну тут уж дело так сказать... плёвое... рисуем се на бумажке такую систему в общем виде и решаем  smile 


--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
Throne
Дата 9.7.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(DoZENT @ 9.7.2007,  22:05)
Throne, координаты точкек задаются произвольно (использую random и рисую их в PaintBox).

не ты не понял что я спрашиваю. у нас данные задачи какие? 
при х1=(число) у1=(число)
при х2=(число) у2=(число)
при х3=(число) у3=(число)
Так?
или просто:
у2=(число)
у2=(число)
у2=(число)

--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
DoZENT
Дата 9.7.2007, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



SPrograMMer, да, плевое... Мозги уже совсем не варят, а проект сдавать завтра (можно сказать почти сегодня). 

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

Procedure Parabola(A, B, C : TPoint; Var KoefA, KoefB, KoefC : integer);
Var M : Array[1..2, 1..3] Of Extended;
    D, Da, Db : Extended;
Begin
 M[1, 1] := Sqr(A.X) - Sqr(B.X);
 M[1, 2] := A.X - B.X;
 M[1, 3] := A.Y - B.Y;

 M[2, 1] := Sqr(B.X) - Sqr(C.X);
 M[2, 2] := B.X - C.X;
 M[2, 3] := B.Y - C.Y;
 
 D := M[1, 1] * M[2, 2] - M[1, 2] * M[2, 1];

 If D <> 0 Then
  Begin
   Da := M[1, 3] * M[2, 2] - M[2, 3] * M[1, 2];
   Db := M[1, 1] * M[2, 3] - M[1, 2] * M[1, 3];
   KoefA := trunc (Da / D);
   KoefB := trunc (Db / D);
   KoefC := A.Y - KoefA * Sqr(A.X) - KoefB * A.X;
  End
  Else
  Begin
   KoefA := 0; KoefB := 0; KoefC := 0;
  End;
End;

но оно почему-то не работает(( (делаю так):

Код


  TPointsPosition = record

    Point1 : TPoint;
    Point2 : TPoint;
    Point3 : TPoint;

  end;

...

procedure DrawParabola (PP : TPointsPosition);
var
a,b,c : integer;
i,k : integer;
x : extended;
y : integer;
j : integer;
part : integer;
x1,y1 : integer;
begin

  Part := 14;

  // Уравнение параболы y = ax2 + bx + c

  with MainForm do
  begin


    //Parabola (PP.Point1, PP.Point2, PP.Point3, a,b,c);

 
    if a = 0 then
    begin
      Memo.Lines.Add ('При текущем расположении точек парабола не существует');
      Exit;
    end;
    
    Memo.Lines.Add ('Коэффициенты параболы:');
    Memo.Lines.Add ('A: ' + IntToStr (A));
    Memo.Lines.Add ('B: ' + IntToStr (B));
    Memo.Lines.Add ('C: ' + IntToStr (C));



     Box.Canvas.MoveTo(1, -25);

      J := -14;
      for i := -25 to 25 do
      begin

        //y := a* (i*i) + b*i + c;


        Memo.Lines.Add (IntToStr (GetNormalXCoordinate (J)) + ':  ' + IntToStr (y));

        J := J + Part;
        Canvas.LineTo (J, (-1)*y + Box.Height);
        //Memo.Lines.Add ('J= ' + IntToStr (J) + ':  ' + IntToStr ((-1)*y + Box.Height) + ' (' + IntToStr (y) + ')');

      end;


  end;

end;

Коэффициент A почему-то всегда оказывается равен нулю((



--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
Throne
Дата 9.7.2007, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ща напишу решение. ток поем. и кино досмотрю. короче к часу увидишь.
--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
DoZENT
Дата 9.7.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Throne, спасибо тебе огромное заранее, с меню много-много плюсов smile 


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
DoZENT
Дата 10.7.2007, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Throne, ну спасибо((( smile

Это сообщение отредактировал(а) DoZENT - 10.7.2007, 01:14


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
Nite
Дата 10.7.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



DoZENT, все просто.

У тебя есть три точки (x1,y1) (x2,y2) (x3,y3)
Также есть парабола y=a*x^2+b*x+c
Получаешь систему из трех линейных уравнений
a*x1^2+b*x1+c=y1
a*x2^2+b*x2+c=y2
a*х3^2+b*х3+c=y3

Решаешь ее относительно неизвестных a, b и c. Можно через матрицы, можно методом Гаусса. Или ты это тоже не умеешь?
PM MAIL   Вверх
Throne
Дата 10.7.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

a*x1^2+b*x1+c=y1
a*x2^2+b*x2+c=y2
a*х3^2+b*х3+c=y3


Сначала находим D:
D = x1^2 * x2 + x2^2 * x3 + x3^2 * x1 - ( x3^2 * x2 + x2^2 * x1 + x1^2 * x3)

Затем находим Da, Db и Dc:
Da = y1 * x2 + y2 * x3 + y3 * x1 - (y3 *x2 + y2 * x1 + y1 * x3)

Db = x1^2 * y2 + x^2 * y3 + x3^2 * y1 - ( x3^2 * y2 + x2^2 * y1 + x1^2 * y3)

Dc = x1^2 * x2 * y3 + x2^2 * x3 * y1+ x3^2 * x1 * y2 - ( x3^2 * x2 * y1 + x2^2 * x1 * y3 + x1^2 * x3 * y2)

Ну и в конце находим соответственно a, b и c:
a=Da/D
b=Db/D
c=Dc/D

--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
DoZENT
Дата 10.7.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Nite, то что ты написал я знал, мне нужно было вычисление коэффициентов a,b,c из этого уравнения.

В любом случае всем большое спасибо, все сдал на 5 smile 

Это сообщение отредактировал(а) DoZENT - 10.7.2007, 21:54


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

2. Публиковать ссылки на варез

3. Оффтопить

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

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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




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


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

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