crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Алгоритм построения графика функции...
Гость_Гость_Serg_yl_*_*
сообщение 8.3.2011, 19:44
Сообщение #1





Гости








    


Вечер добрый! :-)

Стоит задача.
Разработать программу для вычисления определенного интеграла методом средних прямоугольников для функции типа: y=a*cos(b*x)+x^d. Коэффициенты a, b, c, d и границы интервала интегрирования считываются из файла. В диалоге необходимо изобразить график функции, графики прямых, ограничивающих область интегрирования, оси координат.

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

1. Построим график функции y=a*cos(b*x)+x^d.
1.1 Присвоим значения коэф. и границы интегрирования:
 n=0; //граница A
        k=10; //Граница B      
        a=1;
        b=5;
        c=0.5; //Точность вычисления или коэф. дифференцирования
        d=3;

1.2 Получим общее кол. точек графика (итераций) с помощью метода средних прямоугольников.
iter=(qRound (qAbs(k-n)/c))

1.3 Найдем координаты всех точек для построения графика ограниченного [0, 10].
double xxx1[iter], yyy1[iter];
for (j=0; j<=iter; j++)
        {
            if (j=0)
            {
                xxx1[j]=n;
            }
            if (j!=0)
            {
            xxx1[j]=xxx1[j-1]+c; //Получаем след. значение координаты x, прибавляя к привед. зн. коэф. дифференцирования
            }
            //Находим координату y путем подставления полученного зн. x  в функцию y=a*cos(b*x)+x^d
            yyy1[j]=a*cos(b*xxx1[j])+pow(xxx1[j],d);
}

Таким образом мы получаем 2 массива (xxx1 - коорд. X и yyy1 - коорд. Y ) типа double.
1.4 Строим наш график.
cosFunCurve = new QwtPlotCurve("Test");
        cosFunCurve->setPen(QPen(Qt::blue));
        cosFunCurve->setData(xxx1,yyy1,iter);
        cosFunCurve->attach(funPlot);
        funPlot->replot();

И тут начинается интересное... Программа запускается без ошибок, но график не строиться, а сама программа зависает (не отвечает). Приходится завершать только через диспетчер задач.

2. С нахождением определённого интеграла вроде все более менее понятно, хотя немного погодя тоже напишу.

Прошу вашей помощи!

Огромное спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 9.3.2011, 7:52
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(Serg_yl @ 8.3.2011, 23:36) *
Еще один вопрос, а как можно сделать автоподгонку шкалы осей x и y?


рассчитать значения, выбрать максимумы, сделать припуски и отмасштабировать. Всего-то и делов ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.1.2025, 9:16