Вечер добрый! :-)
Стоит задача.
Разработать программу для вычисления определенного интеграла методом средних прямоугольников для функции типа: 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;
iter=(qRound (qAbs(k-n)/c))
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);
}
cosFunCurve = new QwtPlotCurve("Test");
cosFunCurve->setPen(QPen(Qt::blue));
cosFunCurve->setData(xxx1,yyy1,iter);
cosFunCurve->attach(funPlot);
funPlot->replot();
if (j=0) нужно записывать if (j==0)
ты всё время ставишь этим выражением J в 0, и цикл вечно крутится
хотя компилятор вроде должен ловить такие ошибки, как if (j=0)
стоит написать так:
yyy1[0]=a*cos(b*n)+pow(n,d);
for (int j=1; j<=iter; j++)
{
xxx1[j]=xxx1[j-1]+c;
yyy1[j]=a*cos(b*xxx1[j])+pow(xxx1[j],d);
}
и к слову:
если у тебя такая логическая связка:
if(x==0) ...
if(x!=0) ...
то её следует оформлять так:
if(x==0) ...
else ...
abc - хоть как то заработало... Спасибо!
Теперь остается сделать проверку.
Еще один вопрос, а как можно сделать автоподгонку шкалы осей x и y?
"1.4 Строим наш график.
cosFunCurve = new QwtPlotCurve("Test");
cosFunCurve->setPen(QPen(Qt::blue));
cosFunCurve->setData(xxx1,yyy1,iter);
cosFunCurve->attach(funPlot);
funPlot->replot();"
скажите,пожалуйста какие библиотеки надо подключать чтобы это юзать
и как полученный график отобразить в виджет(какой виджет)
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)