Алгоритм и программная реализация среднеквадратичного приближения в двумерном варианте полиномами первой и второй степени.

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Программирование
  • 46 46 страниц
  • 8 + 8 источников
  • Добавлена 19.05.2024
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
Введение 3
1.1 Задача аппроксимации данных 5
1.2 Среднеквадратичное приближение 6
1.3. Среднеквадратичное приближение полиномом первой и второй степени в двумерном варианте 9
1.4 Определение функциональных требований к приложению 13
2 Конструкторский раздел 14
2.1 Постановка задачи среднеквадратичного приближения в двумерном варианте полиномами первой и второй степени 14
2.2 Алгоритм среднеквадратичного приближения в двумерном варианте полиномами первой и второй степени 14
2.3 Выбор языка программирования 17
2.4 Организация данных и проектирование интерфейсов обмена данными в программной системе 23
3 Технологический раздел 25
3.1 Определение структуры и состава программной среды 25
3.2 Реализация разработанного алгоритма 27
4 Результаты 33
Заключение 36
Список использованных источников 37
Приложение 1 Листинг программы 38
Фрагмент для ознакомления

Список использованных источниковБахвалов Н. С. Численные методы / Н. С. Бахвалов, Н. П. Жидков, Г. М. Кобельков. –7-е изд. – М.: БИНОМ. Лаборатория знаний, 2011. – 636 с.Введение в Windows Forms. [Электронный ресурс]. – Режим доступа: https://metanit.com/sharp/windowsforms/1.3.php(дата обращения – 14 апреля 2024 г.)Документация по C#[Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/csharp/(дата обращения – 14 апреля 2024 г.)Практика программирования на С# для Windows и Web в Microsoft Visual Studio. [Электронный ресурс]. – Режим доступа:http://wladm.narod.ru/C_Sharp/index.html(дата обращения – 14 апреля 2024 г.)Казанский А.А. Программирование на VisualC# 2013: учеб.пособие для СПО / А.А. Казанский.- М.: Издательство Юрайт, 2019. – 191 с.ПирумовУ.Г.Численные методы: учебник и практикум для академического бакалавриата/ У. Г. Пирумов [и др.]; под редакцией У. Г. Пирумова. – 5-е изд., перераб. и доп. – М.: Издательство Юрайт, 2019. – 421с.Различия между C# и другими языками программирования: яблоки, апельсины и немного C-Sharp. [Электронный ресурс]. – Режим доступа:https://habr.com/ru/companies/otus/articles/723460/(дата обращения – 14 апреля 2024 г.)Язык программирования С#: история, специфика, место на рынке. [Электронный ресурс]. – Режим доступа:https://gb.ru/posts/yazyk-programmirovaniya-c-sharp-istoriya-specifika-mesto-na-rynke(дата обращения – 14 апреля 2024 г.).Приложение 1Листинг программыusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Globalization;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace Approximate3DApp{publicpartialclassMainForm : Form {publicdouble[] x;publicdouble[] y;publicdouble[] z;publicdouble[] xy;publicdouble[] xx;publicdouble[] yy;publicdouble[] c;publicdouble[] fi;publicint n, m;publicMainForm() {InitializeComponent(); }privatevoidвыходToolStripMenuItem1_Click(object sender, EventArgs e) {this.Close(); }privatevoidвыходToolStripMenuItem_Click(object sender, EventArgs e) {this.Close(); }privatevoidзагрузитьToolStripMenuItem_Click(object sender, EventArgs e) {// Задаемдесятичнуюточку IFormatProvider formatter = new NumberFormatInfo { NumberDecimalSeparator = "."};int i = 0;try {//если массивы не пусты, очищаем массивы перед вводом новогоif (x.Length > 0) Array.Clear(x, 0, x.Length);if (y.Length > 0) Array.Clear(y, 0, y.Length);if (z.Length > 0)Array.Clear(z, 0, z.Length);//еслифайлсуществуетивыбранif (openFileDialog1.ShowDialog() == DialogResult.Cancel)return;// получаемвыбранныйфайлstring filename = openFileDialog1.FileName;// читаемфайлпострочноusing (StreamReader sr = new StreamReader(filename, Encoding.Default)){//считываем строку c количеством точекstring numbers = sr.ReadLine();n = Convert.ToInt32(numbers); nUpDownN.Value = n;Array.Resize(ref x, n);Array.Resize(ref y, n);Array.Resize(ref z, n);//пока не дошли до конца файлаwhile (sr.Peek() >= 0) {//считываемстрокуnumbers = sr.ReadLine();//разбиваемеёначислаstring[] number = numbers.Split();//приводим число к формату с точкой (даже если введена запятая) и парсимx[i] = double.Parse(number[0].Replace(",", "."), formatter);y[i] = double.Parse(number[1].Replace(",", "."), formatter);z[i] = double.Parse(number[2].Replace(",", "."), formatter); i += 1; } } OutputInTable(x, y, z, n, true);}catch (Exception ex) {// Обработка исключения даст пользователю информацию,// что пошло не так. MessageBox.Show(ex.Message);} }privatevoid Gauss(double[,] a, double[] b, int n, refdouble[] x) {//очищаеммассивкоэффициентов//Array.Resize(ref x, n);Array.Clear(x, 0, n);//задаем расширенную матрицуdouble[,] aa = newdouble[n, b.Length + 1];for (int i = 0; i < n; i++) {for (int j = 0; j < n + 1; j++) {if (j <= n - 1)aa[i, j] = a[i, j];elseaa[i, j] = b[i]; } }//прямойходГауссаfor (int i = 0; i < n - 1; i++) {double tmp = aa[i, i];for (int j = 0; j < n + 1; j++) {aa[i, j] = aa[i, j] / tmp; }for (int k = i + 1; k < n; k++) {tmp = aa[k, i];for (int l = 0; l < n + 1; l++) {aa[k, l] = aa[k, l] - aa[i, l] * tmp; } } }//обратныйходметодаГауссаx[n - 1] = aa[n - 1, n] / aa[n - 1, n - 1];for (int i = n - 2; i >= 0; i--) {double tmp = 0;for (int j = i + 1; j < n; j++) {tmp = tmp + aa[i, j] * x[j]; }x[i] = (aa[i, n] - tmp) / aa[i, i]; } }privatevoid ApproximatePolynom(double[] x, double[] y, double[] z, int k, refdouble[] c) {double[,] a = newdouble[3*k, 3*k];double[] b = newdouble[3*k];if (k == 1) {double sx = 0;double sy = 0;double sxy = 0;double sxx = 0;double syy = 0;double sz = 0;double sxz = 0;double syz = 0;for (int i=0;i 0) {// то сохраняем содержимое массивов в файл.using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName)) {sw.Write(n.ToString() + "\n");for (int i = 0; i < n; i++) { sw.Write(x[i].ToString() + " " + y[i].ToString() + " " + z[i].ToString() + "\n"); } } } }privatevoidсохранитьРезультатыToolStripMenuItem_Click(object sender, EventArgs e) {if (x.Length <= 1 || y.Length <= 1 || fi.Length <= 1){ MessageBox.Show("Нет данных для сохранения!");return; }// указываем расширение TXT для файла.saveFileDialog1.DefaultExt = "*.txt"; saveFileDialog1.Filter = "txt Files|*.txt";// еслиимяфайлавыбраноif (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&saveFileDialog1.FileName.Length > 0) {// то сохраняем содержимое массивов в файл.using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName)) {sw.Write(n.ToString() + "\n");for (int i = 0; i < n; i++) { sw.Write(x[i].ToString() + " " + y[i].ToString() + " " + fi[i].ToString() + "\n");} } } MessageBox.Show("Выберите файл для сохранения коэффициентов полинома!");//Создаем SaveFileDialog, чтобы запросить путь и имя файла для сохранения коэффициентов полинома SaveFileDialog saveFile1 = new SaveFileDialog();// указываем расширение TXT для файла.saveFile1.DefaultExt = "*.txt"; saveFile1.Filter = "txt Files|*.txt";// еслиимяфайлавыбранif (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK && saveFile1.FileName.Length > 0) {// сохраняемкоэффициентывфайлusing (StreamWriter sw = new StreamWriter(saveFile1.FileName)) {for (int i = 0; i < c.Length; i++) { sw.Write(c[i].ToString() + "\n"); } } } }privatevoid OutputInTable(double[] a, double[] b, double[] c, int k, bool iflag){if (iflag) {dGVInput.Rows.Clear();for (int i = 0; i < k; i++) {dGVInput.Rows.Add(); dGVInput.Rows[i].Cells[0].Value = a[i].ToString();dGVInput.Rows[i].Cells[1].Value = b[i].ToString();dGVInput.Rows[i].Cells[2].Value = c[i].ToString(); } }else {dGVOutput.Rows.Clear();for (int i = 0; i < k; i++) {dGVOutput.Rows.Add(); dGVOutput.Rows[i].Cells[0].Value = a[i].ToString();dGVOutput.Rows[i].Cells[1].Value = b[i].ToString();dGVOutput.Rows[i].Cells[2].Value = c[i].ToString();} } } }}

1. Бахвалов Н. С. Численные методы / Н. С. Бахвалов, Н. П. Жидков, Г. М. Кобельков. – 7-е изд. – М.: БИНОМ. Лаборатория знаний, 2011. – 636 с.
2. Введение в Windows Forms. [Электронный ресурс]. – Режим доступа: https://metanit.com/sharp/windowsforms/1.3.php (дата обращения – 14 апреля 2024 г.)
3. Документация по C# [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/csharp/ (дата обращения – 14 апреля 2024 г.)
4. Практика программирования на С# для Windows и Web в Microsoft Visual Studio. [Электронный ресурс]. – Режим доступа: http://wladm.narod.ru/C_Sharp/index.html (дата обращения – 14 апреля 2024 г.)
5. Казанский А.А. Программирование на Visual C# 2013: учеб. пособие для СПО / А.А. Казанский.- М.: Издательство Юрайт, 2019. – 191 с.
6. Пирумов У. Г. Численные методы: учебник и практикум для академического бакалавриата / У. Г. Пирумов [и др.]; под редакцией У. Г. Пирумова. – 5-е изд., перераб. и доп. – М.: Издательство Юрайт, 2019. – 421 с.
7. Различия между C# и другими языками программирования: яблоки, апельсины и немного C-Sharp. [Электронный ресурс]. – Режим доступа: https://habr.com/ru/companies/otus/articles/723460/ (дата обращения – 14 апреля 2024 г.)
8. Язык программирования С#: история, специфика, место на рынке. [Электронный ресурс]. – Режим доступа: https://gb.ru/posts/yazyk-programmirovaniya-c-sharp-istoriya-specifika-mesto-na-rynke (дата обращения – 14 апреля 2024 г.).