Программа вычисления определенного интеграла методом прямоугольников с визуализацией решения
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?остоит из двух форм. Одна- главная, на ней размещены основные компоненты для ввода данных и вывода результатов, Вторая служит для вывода справки, на ней содержится только текстовая информация не изменяемая пользователем.
.2 Выбор стандартных визуальных и не визуальных компонентов
При создании программы были использованы следующие компоненты панели Toolbox интерфейса Visual C++: colorDialog и pictureBox- для создания графических изображений; comboBox, textBox, numericUpDown, label- для ввода и вывода данных; button и radioButton- для управления и выбора функций; а также panel и groupBox.
.3 Описание основных функций
: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)- основная функция программы, при ее выполнении производится расчет интеграла исходя из введенных данных, выполняется визуализация решения и вывод результатов. Данная функция обращается к процедурам разработанным при создании программы:funkcia (double &x1)- служит для ввода исследуемой функциональной зависимости, возвращает значение введенной функции от входного x1, блок- схема приведена рис. 3.1;check(double &x1, double &x2)- служит для проверки введенных пределов интегрирования;checktoch(double &tochnost)- для проверки введенной точности;LEVPR, double PRAVPR, double SREDPR(double &buf,double &x2,int &n,double &delX, double &delY)- эти функции реализуют методы левых, правых и средних прямоугольников соответственно, возвращают значение интеграла. Блок- схемы данных функций индентичны рис. 3.2.
Еще одна функция: private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)- служит для создания второй формы.
Рис. 3.1
Рис. 3.2
4. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ПРОГРАММЫ
Тест 1. Соответствие результатов выдаваемых программой результатам, полученным расчетным путем.
Результат работы программы на рис. 4.1.
Рис. 4.1
При пределах интегрирования -3 и 4 и точности вычисления 0.01 программа выдает значение интеграла равное 50.87 (расчет методом средних прямоугольников). Посчитаем интеграл по формуле:
как видим, результаты совпадают.
Тест 2. Программа не должна зависеть от конкретной функциональной зависимости, поэтому предложим программе визуализировать нахождение интеграла допустим от логарифмической функции. Результат работы программы на рис. 4.2.
Рис. 4.2
Результат работы программы вполне удовлетворительный.
программа разработка интерфейс архитектура
Тест 3. Работа программы на маленьком отрезке интегрирования.
Результат работы программы на рис. 4.3. Отрезок на котором выполнялось интегрирование составлял всего 0,00531, но программа отлично справилась с поставленной перед ней задачей, наилучшим образом отмасштабировала график, а также вывела значени меток по координатным осям.
Рис. 4.3
Тест 4. Реакция программы на случай когда отрезок интегрирования не соответствует области определения функции.
Предоставим программе посчитать интеграл логарифмической функции в пределах от -3 до 2, результат работы программы на рис. 4.4.
Рис. 4.4
Программа требует изменить пределы интегрирования, это вполне адекватная реакция на данную задачу.
Тест 5. Реакция программы на невведенный метод решения, перепутанные местами верхний и нижний пределы интегрирования и на некорректно введенные пределы (рисунки 4.5, 4.6, 4.7 соответственно).
Рис. 4.5
Рис 4.6
Рис. 4.7
На все случаи программа реагирует соответствующей ошибкой.
Тест 6. Оценка скорости выполнения вычислений.
Вычисление интеграла от квадратичной функции в пределах от -100 до 100 с точностью 0,05 заняло менее 5 секунд, этот факт говорит о хорошей вычислительной скорости программы
ЗАКЛЮЧЕНИЕ
Программа вычисления определенного интеграла методом прямоугольников с визуализацией решения представляет собой готовый программный продукт, пригодный для использования. Данная программа должна помочь школьникам в усвоении учебного курса. Возможности усовершенствования разработки довольно обширны. Например, можно создать возможность пользователю самому прописывать или хотя бы выбирать из списка исследуемую функцию.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1.Либерти,Дж. Освой самостоятельно C++ за 21 день / Дж. Либерти; пер. с англ. - М.: Вильямс, 2000. - 816 с.
2.Подбельский В. Язык С++: Учебное пособие для ВУЗов / В.В. Подбельский - М.: Финансы и статистика, 2002. - 560 с.
.VisualC++2010-.:,2011.224.">Ник Рендольф Visual C++ 2010 - М.: ЗАО Издательство БИНОМ, 2011. 224 с.
ПРИЛОЖЕНИЕ
#pragma endregionxx,yy,prexx,preyy;funkcia (double &x1) {yk;(x1==0) x1=0.00000001;//чтоб лишний раз через ноль перескочил=x1*x1;=-yk;((Convert::ToString(yk)=="NaN")){ textBox1->Text="Измените";//исключения проверяю->Text="Измените"; yk=0;}yk;
}check(double &x1, double &x2) {
//конвертируем текст в первом поле в число {= Convert::ToDouble(textBox1->Text);
}(...) {->Focus();
}
//конвертируем текст во втором поле в число {= Convert::ToDouble(textBox2->Text);
}(...) {->Focus();
}true;
}checktoch(double &tochnost) { //проверка ввода точности{tochnost = Convert::ToDouble(textBox3->Text);}(...) {textBox3->Focus(); MessageBox::Show("Значение погрешности введено некорректно");}true;
}LEVPR(double &buf,double &x2,int &n,double &delX, double &delY){// метод левых прямоугольников (считает интригал)y,S,x1,post;postX1,postY,xx,yy;(x1=buf;x1<x2;x1=x1+((x2-buf)/n))
{yy=Convert::ToInt64(funkcia(x1)*delY);=x1+((x2-buf)/n);=Convert::ToInt64((x1+((x2-buf)/n))*delX);=Convert::ToInt64(funkcia(post)*delY);=funkcia(x1); =x1+((x2-buf)/n);(abs(yy)0)||(yy<0&&postY<0))&am