Вечер добрый! :-)
Стоит задача.
Разработать программу для вычисления определенного интеграла методом средних прямоугольников для функции типа: 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. С нахождением определённого интеграла вроде все более менее понятно, хотя немного погодя тоже напишу.
Прошу вашей помощи!
Огромное спасибо!