C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Создание программы
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) то не только для вас. smile.gif

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

Мне бы тоько освоить элементарные операции по графике, дальше я уже раскручусь.


Вы пытаетесь поставить телегу впереди лошади ohmy.gif

Представляю, куда завезёт Вас такое транспортное средство...
biggrin.gif biggrin.gif biggrin.gif
Grigoriy
Отправлено: 10.02.2006, 19:02


Мастер участка

Группа: Участник
Сообщений: 381



Нужно учесть, что у данного уравнения могут быть комплексные корни.
То есть комплексная часть у корня тоже может иметь значение отличное от нуля.
Так что тогда, и комплексные составляющие изменяются перетаскиванием ползунков ?
Diablo
Отправлено: 10.02.2006, 23:47


Ученик-кочегар

Группа: Участник
Сообщений: 5



Doga,
biggrin.gif а что делать... вот и приходится уподобляться ужу на сковородке...

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) будет пространственная кривая (кривая в трехмерном пространстве).
А тот график, что вы хотите построить  — это всего лишь проекция этой трехмерной кривой.

Вернуться в Вопросы программирования в C++Builder