Информатика - Численные методы

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Численные методы
  • 38 38 страниц
  • 10 + 10 источников
  • Добавлена 25.06.2020
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Постановка задачи 5
Введение 6
Описание метода решения задачи и используемых алгоритмов 7
Описание методики тестирования программы 12
Руководство пользователя по работе с программой 13
Блок-схема программы 22
Распечатка текста программы 24
Заключение 37
Список использованных источников 38
Фрагмент для ознакомления

isnan(Function(xn, numEq))) if (abs(Function(xn, numEq)) <= 10000) f2->Add(xn, Function(xn, numEq)); if ((ind != indMax) && (!isnan(xn)) && (isfinite(xn))) {resBox->Text = Convert::ToString(round(maxVal * xn) / maxVal); chart1->Series[1]->Points->DataBindXY(f2->Keys, f2->Values); } elseresBox->Text = "Error"; } void AnalyticalCalculation() { int numEq = CheckRadioButton(); double xMin = Convert::ToDouble(xMinBox->Text->Replace('.', ',')); double xMax = Convert::ToDouble(xMaxBox->Text->Replace('.', ',')); double a = Convert::ToDouble(aValueBox->Text->Replace('.', ',')); double b = Convert::ToDouble(bValueBox->Text->Replace('.', ',')); double c = Convert::ToDouble(cValueBox->Text->Replace('.', ',')); double fi, ares, ares2; bool state = false; double *x = new double[3]; double pi = acos(-1); if (numEq == 1) { double p = b / a; double q = c / a; double eps = powf(10.0, -10.0); double Q = -p / 3; double R = q / 2; double S = Q * Q * Q - R * R; if (S > eps) { fi = acos(R / sqrt(Q * Q * Q)) / 3;x[0] = -2 * sqrt(Q) * cos(fi);x[1] = -2 * sqrt(Q) * cos(fi + 2 * pi / 3);x[2] = -2 * sqrt(Q) * cos(fi - 2 * pi / 3); for (int i = 0; i < 3; i++) { if ((x[i] >= xMin) && (x[i] <= xMax)) {ares = x[i]; state = true; } } } else if (S < -eps) { if (Q > 0) { fi = acosh(abs(R) / sqrt(Q * Q * Q)) / 3;x[0] = -2 * sign(R) * sqrt(Q) * cosh(fi); } else if (Q < 0) { fi = asinh(abs(R) / sqrt(abs(Q * Q * Q))) / 3;x[0] = -2 * sign(R) * sqrt(abs(Q)) * sinh(fi); } else if (Q == 0)x[0] = -sign(q) * powf(abs(q), 1.0 / 3.0);ares = x[0]; state = true; } else if(abs(S) <= eps) {x[0] = -2 * powf(R, 1.0 / 3.0);x[1] = powf(R, 1.0 / 3.0); for (int i = 0; i < 2; i++) { if ((x[i] >= xMin) && (x[i] <= xMax)) {ares = x[i]; state = true; } } } if (state) { if (resBox->Text != "Error") { double xn = Convert::ToDouble(resBox->Text->Replace('.', ','));absErrBox->Text = Convert::ToString(round(maxVal * abs(ares - xn)) / maxVal); if (ares != 0)relErrBox->Text = Convert::ToString(Convert::ToInt32(100 * abs(ares - xn) / abs(ares))); elserelErrBox->Text = Convert::ToString(Convert::ToInt32(100 * abs(ares - xn) / 1.0)); }aresBox->Text = Convert::ToString(round(maxVal * ares) / maxVal); } elsearesBox->Text = "Error"; } else if (numEq == 2) { if (abs(c / a) > 1) {aresBox->Text = "Error";absErrBox->Text = "";relErrBox->Text = ""; } else {ares = -b + acos(-c / a); ares2 = -b - acos(-c / a); int xxx = round((xMin + 0.5 * (xMax - xMin))/ (2 * pi));ares = ares + 2 * pi * xxx; ares2 = ares2 + 2 * pi * xxx; if (!((ares >= xMin) && (ares <= xMax)))ares = ares2; aresBox->Text = Convert::ToString(round(maxVal * ares) / maxVal); } if (resBox->Text != "Error") { double xn = Convert::ToDouble(resBox->Text->Replace('.', ','));absErrBox->Text = Convert::ToString(round(maxVal * abs(ares - xn)) / maxVal); if (ares != 0)relErrBox->Text = Convert::ToString(Convert::ToInt32(100 * abs(ares - xn) / abs(ares))); elserelErrBox->Text = Convert::ToString(Convert::ToInt32(100 * abs(ares - xn) / 1.0)); } else {absErrBox->Text = "";relErrBox->Text = ""; } } else {ares = -b + exp(-c / a); ares2 = -b - exp(-c / a); if (!((ares >= xMin) && (ares <= xMax)))ares = ares2;aresBox->Text = Convert::ToString(round(maxVal * ares) / maxVal); if (resBox->Text != "Error") { double xn = Convert::ToDouble(resBox->Text->Replace('.', ','));absErrBox->Text = Convert::ToString(round(maxVal * abs(ares - xn)) / maxVal); if (ares != 0)relErrBox->Text = Convert::ToString(Convert::ToInt32(100 * abs(ares - xn) / abs(ares))); elserelErrBox->Text = Convert::ToString(Convert::ToInt32(100 * abs(ares - xn) / 1.0)); } else {absErrBox->Text = "";relErrBox->Text = ""; } } } int sign(double x) { if (x > 0) return 1; else if (x < 0) return -1; else return 0; }private: System::Void checkBox1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {ReadData();}};}ЗаключениеВ ходе выполнения курсовой работы была написана программа с графическим пользовательским интерфейсом позволяющая решать три нелинейных уравнения заданных в общем виде. В качестве решателя использовался метод итерации. Программа написана на языке высокого уровня C++ с использованием WindowsForms.Был составлен подробный алгоритм решения поставленной задачи.Реализована возможность ввода пользовательских данных как в помощью окон на главной форме, так и с помощью текстового файла в автоматическом режиме.Для удобства работы с расчетами в программе реализована возможность построения графика, для отделения корней. В дополнение программа вычисляет не только приближенное значения корня, но и точное значение, а также, относительную и абсолютную погрешности вычислений.Список использованных источниковМатематический энциклопедический словарь. — М.: «Сов.энциклопедия», 1988. — С. 847.Hazewinkel, Michiel, ed. (2001), Newton method, Encyclopedia of Mathematics, Springer, ISBN 978-1-55608-010-4Van der Waerden. Geometry and Algebra of Ancient Civilizations. — Zurich, 1983. — С. chapter 4. — ISBN 0-387-12159-5.Бронштейн И. Н., Семендяев К. А. Справочник по математике. — М.: Наука, 1964. — 608 с.Воднев В. Т., Наумович А. Ф., Наумович Н. Ф. Основные математические формулы. Справочник. — Минск: Вышэйшая школа, 1988. — 269 с.Бьёрн Страуструп. Язык программирования С++. Краткий курс. — 2019. — 320 с. — ISBN 978-5-907144-12-5.Стивен Прата. Язык программирования C++ (C++11). Лекции и упражнения = C++ Primer Plus, 6th Edition (Developer’s Library). — 6-е изд. — М.: Вильямс, 2012. — 1248 с. — ISBN 978-5-8459-1778-2.АйворХортон. Visual C++ 2010: полныйкурс = Ivor Horton’s Beginning Visual C++ 2010. — М.: Диалектика, 2010. — С. 1216. — ISBN 978-5-8459-1698-3.Герберт Шилдт. Теория и практика C++ = Shildt'sExpert C++. — СПб.: BHV — Санкт-Петербург, 1996. — ISBN 0-07-882209-2, 5-7791-0029-2.Herbert Schildt. C++ The Complete Reference Third Edition. — Osborne McGraw-Hill, 1998. — ISBN 978-0-07-882476-0.

1. Математический энциклопедический словарь. — М.: «Сов. энциклопедия», 1988. — С. 847.
2. Hazewinkel, Michiel, ed. (2001), Newton method, Encyclopedia of Mathematics, Springer, ISBN 978-1-55608-010-4
3. Van der Waerden. Geometry and Algebra of Ancient Civilizations. — Zurich, 1983. — С. chapter 4. — ISBN 0-387-12159-5.
4. Бронштейн И. Н., Семендяев К. А. Справочник по математике. — М.: Наука, 1964. — 608 с.
5. Воднев В. Т., Наумович А. Ф., Наумович Н. Ф. Основные математические формулы. Справочник. — Минск: Вышэйшая школа, 1988. — 269 с.
6. Бьёрн Страуструп. Язык программирования С++. Краткий курс. — 2019. — 320 с. — ISBN 978-5-907144-12-5.
7. Стивен Прата. Язык программирования C++ (C++11). Лекции и упражнения = C++ Primer Plus, 6th Edition (Developer’s Library). — 6-е изд. — М.: Вильямс, 2012. — 1248 с. — ISBN 978-5-8459-1778-2.
8. Айвор Хортон. Visual C++ 2010: полный курс = Ivor Horton’s Beginning Visual C++ 2010. — М.: Диалектика, 2010. — С. 1216. — ISBN 978-5-8459-1698-3.
9. Герберт Шилдт. Теория и практика C++ = Shildt's Expert C++. — СПб.: BHV — Санкт-Петербург, 1996. — ISBN 0-07-882209-2, 5-7791-0029-2.
10. Herbert Schildt. C++ The Complete Reference Third Edition. — Osborne McGraw-Hill, 1998. — ISBN 978-0-07-882476-0.

Вопрос-ответ:

Что такое численные методы?

Численные методы – это алгоритмические процедуры, применяемые для решения математических задач, когда аналитическое решение не является возможным или неэффективным. Они основаны на приближенных вычислениях и используют численные алгоритмы.

Какова постановка задачи в численных методах?

Постановка задачи в численных методах состоит в переводе математической задачи в пригодную для решения численными методами форму. Это включает выбор подходящего численного метода, задание начальных условий и задачи на границах, а также формулировку критериев точности решения.

Какие методы решения задач используются в численных методах?

В численных методах используются различные методы решения задач в зависимости от самой задачи. Например, для решения нелинейных уравнений применяются методы простой итерации, метод Ньютона и др. Для решения систем линейных уравнений используются методы Гаусса, Жордана, прогонки и др.

Как происходит тестирование программы в численных методах?

Тестирование программы в численных методах включает проверку ее работы на различных тестовых наборах данных, которые содержат известные значения исходных данных и ожидаемые результаты. Программа выполняет расчеты и сравнивает полученные результаты с ожидаемыми, таким образом проверяя правильность реализации численных методов.

Как использовать программу для решения задачи?

Для использования программы для решения задачи необходимо следовать простым шагам. Сначала запустите программу. Затем введите необходимые данные, такие как начальные условия и параметры задачи. После этого нажмите кнопку "Расчет" или аналогичную, чтобы программа начала выполнение вычислений. В конце вы получите результаты решения задачи.

Что такое численные методы в информатике?

Численные методы в информатике - это методы, которые позволяют решать математические задачи с использованием численных вычислений вместо аналитических методов. Они основаны на алгоритмах, которые позволяют приближенно находить решение задачи.

Как поставить задачу при использовании численных методов?

При постановке задачи при использовании численных методов необходимо явно задать математическую модель, определить неизвестные величины, а также задать критерий оптимальности или способ представления результата.

Какие алгоритмы часто используются в численных методах?

В численных методах часто используются алгоритмы, такие как метод простых итераций, метод Ньютона, метод половинного деления, метод Гаусса и другие. Эти алгоритмы позволяют приближенно находить решения для различных задач.

Как осуществляется тестирование программы, использующей численные методы?

Тестирование программы, использующей численные методы, осуществляется путем проверки ее работы на известных тестовых примерах. Входные данные для программы выбираются таким образом, чтобы покрыть различные случаи использования. Затем результаты работы программы сравниваются с ожидаемыми значениями для проверки корректности решения.

Как работать с программой, использующей численные методы?

Для работы с программой, использующей численные методы, необходимо сначала установить ее на компьютер. Затем следует запустить программу и следовать инструкциям, предоставленным в руководстве пользователя. Вводятся необходимые данные, после чего программа проводит вычисления и выводит результат на экран или сохраняет его в файл, в зависимости от настроек.