Лабораторная работа №6
.docxЛабораторная работа №6
«Программирование алгоритмов итеративных циклических структур»
Содержание
1 Условие задачи 3
2 Формализация и уточнение задания 3
3 Ход работы 4
3.1 Разработка блок-схем 4
3.2 Код программы 5
3.3 Тестирование 6
Список использованных источников 7
1 Условие задачи
Вычислить ln(x) с точностью e=0,0001, воспользовавшись разложением в ряд(1): (1)
Сравнить результат со значением, полученным с помощью соответствующей библиотечной функции при x=1,5.
Для выполнения задачи необходимо:
• Дополнить существующую dll библиотеку функцией func1(double &y, double&z, int n, double x, double a, double k, ListBox^ t), которая будет вычислять значение ln(x) c точностью у=0,0001 при помощи разложения в ряд и также выводить библиотечное значение функции ln(x)
•Разработать событийную функцию, которая вызывает функцию ввода input(TextBox^t), функцию расчета функцией func1(double &y, double&z, int n, double x, double a, double k, ListBox^ t), функцию вывода output(c, TextBox^t) из dll библиотеки.
2 Формализация и уточнение задания
Вычисление с заданной точностью e означает, что суммирование членов ряда надо продолжать до тех пор, пока очередной вычисленный член не станет меньше по абсолютной величине числа e. Формула для n-го члена приведена в задании.
Таким образом рекуррентная формула для данного ряда:
•n-номер итерации;
•z-библиотечное значение ln(x);
•x-значение относительно которого происходят вычисления;
•y-значение функции ln(x);
•a-предыдущее значение y;
•k-погрешность с которой будут производиться вычисления;
Будем считать, что заданная точность e обеспечена, если значение модуля разности предыдущего и текущего значения ln(x) меньше заданного значения e, то есть для нашего случая |y-a|<e.
3 Ход работы
3.1 Разработка блок-схем
Блок-схема функции func1 представлена на рисунке 1.
Рисунок 1-Блок-схема функции func1, вычисляющей значение ln(x).
Блок-схема событийной функции представлена на рисунке 2.
Рисунок 2-Блок-схема событийной функции.
3.2 Код программы
Dll
void Class1::func1(double &y, double&z, int n, double x, double a, double k, ListBox^ t) {
t->Items->Clear();
a = 1;
z = log(x);
while (fabs(y-a) > k) {
a = y;
n = n + 1;
y = y+(pow(-1, (n+1)) * (pow((x - 1), n) / n));
String^ fs = String::Format("{0,6:F0}{1,15:F7}", n, y);
t->Items->Add(fs);
}}
Событийная
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
double x, y, a, z, v;
int n;
x = DLL5::Class1::input(textBox1);
v = DLL5::Class1::input(textBox2);
DLL5::Class1::func1(y, z, n, x, a, v, listBox1);
DLL5::Class1::output(y, textBox3);
DLL5::Class1::output(z, textBox4);
}
3.3 Тестирование
Результаты правильности работы данного проекта представлены на рисунке 3.
Рисунок 3-Результат работы программы
Список использованных источников
1) ГОСТ 7.32.2017 Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления. – М.: Стандартинформ, 2017, - 27 с.