Добавил:
Я и кто? Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №6

.docx
Скачиваний:
0
Добавлен:
02.02.2023
Размер:
78.42 Кб
Скачать

Лабораторная работа №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 с.