Diablo |
Отправлено: 09.02.2006, 19:57 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Уважаемые, помогите советом, как написать программу. Суть такова: вводится некая функция типа A*x^4+B*x^3+C*x^2..., по ней строится график. Программы вычисляет корни этого уравнения, и они появляются на экране функции в виде перетаскиваемых мышкой объектов. Перетаскиваем эти объекты — меняется и график, и аргументы А, В, С... перед иксом.
Подскажите хотя бы как строить график? Язык я знаю поверхостно, а задание дали сложное для меня. Заранее благодарю. |
|
Grigoriy |
Отправлено: 10.02.2006, 02:30 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
В самом начале работы программы вводятся корни степенного уравнения или его коэффициенты ?
|
|
AVC |
Отправлено: 10.02.2006, 09:28 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
... , а задание дали сложное для меня.
|
Если решать его на пустом месте (с 0) то не только для вас.
QUOTE |
Уважаемые, помогите советом, как написать программу
|
Выбрать инструмент написания. Судя по тому что вы здесь это, возможно, будет Builder.
Освоить его, хотя бы в первом приближении и разобраться в программной модели (не знаю как это правильно сформировать).
Поискать готовые решения, позволяющие разбирать и вычислять формулы.
Если формула всегда одного вида — можно повозиться самому.
Поискать готовые решения для построения графика.
Определиться с интерфейсом.
Собрать все это вместе.
А начать стоит с того, что твердо сказать "я делаю это на ... и средствами ....(?Builder?)" |
|
Aptem |
Отправлено: 10.02.2006, 16:26 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Простейший метод вывода точек на график. Берем компонент TChart добавляем в него одну Series и затем:
CODE |
for ( int i = 0; i < 100; i++ )
{
Series1 -> AddXY ( i, sin( i ), "" );
}
|
И у вас получится синусоида.
|
|
Diablo |
Отправлено: 10.02.2006, 16:48 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Grigoriy,
Само уравнение такова, что представить его можно лишь вводом коэффициентов.
AVC,
Разумеется на Builder 6. У меня вся проблема с недостаточным знанием принципов построения программ в C++ вообще. Математическую модель я уже придумал, осталось разобраться, каким образом вывести график на экран или привязать функцию к готовым объектам для диаграмм. Я так понимаю, из готовых объектов есть только TChart и TChartfx. А что такое PerfomanceGraph из "ПРИМЕРЫ"? Мне бы тоько освоить элементарные операции по графике, дальше я уже раскручусь. Меня поставили в сжатые сроки — времени на доскональное изучение С нет.
Отредактировано Diablo — 10/02/2006, 16:51 |
|
Doga |
Отправлено: 10.02.2006, 18:58 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
QUOTE |
Мне бы тоько освоить элементарные операции по графике, дальше я уже раскручусь.
|
Вы пытаетесь поставить телегу впереди лошади
Представляю, куда завезёт Вас такое транспортное средство...
|
|
Grigoriy |
Отправлено: 10.02.2006, 19:02 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
Нужно учесть, что у данного уравнения могут быть комплексные корни.
То есть комплексная часть у корня тоже может иметь значение отличное от нуля.
Так что тогда, и комплексные составляющие изменяются перетаскиванием ползунков ?
|
|
Diablo |
Отправлено: 10.02.2006, 23:47 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Doga,
а что делать... вот и приходится уподобляться ужу на сковородке...
Grigoriy,
В том то и дело. График собственно и выглядит как действительная и мнимая оси. У меня есть аналог такой программы... только без исходника... если интересно, могу скинуть. В ней всё нормально, только арифметическая часть очень уж кривая и не соответствует заданию. |
|
Grigoriy |
Отправлено: 11.02.2006, 03:04 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
И так.
Давайте во первых "нормально" зададим аналитическим выражением функцию, а то я теряюсь в догадках, смотря на выражение
A*x^4+B*x^3+C*x^2...
Если это степенная функция, то аналитическое выражение для неё
Y(x) = A*x^4+B*x^3+C*x^2+D*x+E;
где A, B, C, D, E — комплексные коэффициенты,
x — комплексный аргумент,
Y(x) — комплексное значение.
1. Задать область определения функции — диапазон значений x.
2. Найти по области определения область значений функции.
Далее, нужно растолковать, что имеется в виду под
QUOTE |
...Программы вычисляет корни этого уравнения...
|
Задаем уравнение аналитически.
Задайте это уравнение, пожалуйста.
Из вашего сообщения не совсем понятно, а можно только догадываться, какое это уравнение должно быть.
Скорее всего оно степенное 4 степени ?
QUOTE |
...График собственно и выглядит как действительная и мнимая оси...
|
Слышен звон и не знаю где он.
Это система координат так выглядит.
А график тогда описывает множество комплексных значений какой-то комплексной переменной.
Опять же, теряюсь в догадках, что это за комплексная переменная...
|
|
Diablo |
Отправлено: 11.02.2006, 15:44 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
ОК, объясню всё по-человечески. Задача такова. Для электрической схемы составляется уравнение вида F(P)=(A*P^4+B*P^3+C*P^2+D*P^1+E)/(F*P^2+G*P^1+H), причём степень числителя всегда на 2 больше степени знаменателя, где A, В… — коэффициенты, соотв. значению элементов в цепи. Р потом меняем на (jw), приводим подобные, умножаем знаменмтель на сопряжённое -> избавляемся от комплексной составляющей, затем приводятся подобные в числителе и получается уравнение вида F(jw)= (действительная часть+мниамая часть)/…, например. И по числителю строится годограф, показывающий устойчива, ли система. Суть в том, чтобы изменяя сам годограф, получить те значения элементов цепи, которые удовлетворяли годографу. А годограф можно изменять только изменяя значения нули комплексного уравнения числителя и полюса знаменателя. Т. е. программа выполняет 2 задачи по уравнению: прямую и обратную. |
|
Diablo |
Отправлено: 28.02.2006, 17:09 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Такой вопрос. Есть комплексная функция вида F=A(w)+jB(w). Необходимо построить гравик в комплексной плоскости. Я пошёл в обход комплексных чисел. У меня два выражения A(w) и B(w). Пишу
AddXY(A,B...)
Получается точка. И так далее. Но график выходит не такой, как должен получиться в комплексной плоскости. Хотя, насколько я понимаю, y=3+j4 — это точка с координатами по R — 3 и по J — 4. Так почему не получается при переводе на декартовую СК? |
|
Grigoriy |
Отправлено: 28.02.2006, 17:23 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
QUOTE (Diablo @ 28/02/2006, 17:09) | Такой вопрос. Есть комплексная функция вида F=A(w)+jB(w). Необходимо построить гравик в комплексной плоскости. Я пошёл в обход комплексных чисел. У меня два выражения A(w) и B(w). Пишу
AddXY(A,B...)
Получается точка. И так далее. Но график выходит не такой, как должен получиться в комплексной плоскости. Хотя, насколько я понимаю, y=3+j4 — это точка с координатами по R — 3 и по J — 4. Так почему не получается при переводе на декартовую СК? |
Для комплексной функции от действительной переменной множество точек (A(w), B(w), w) будет пространственная кривая (кривая в трехмерном пространстве).
А тот график, что вы хотите построить — это всего лишь проекция этой трехмерной кривой.
|
|