Реализация на языке программирования Си решения системы линейных уравнений методом Гаусса - Курсовая работа

бесплатно 0
4.5 168
Сущность и особенности языка программирования Си. Основные этапы алгоритма решения системы линейных алгебраических уравнений методом Гаусса, реализация программы для их расчета. Инструкции пользователя и программиста. Тестирование функции решения.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Для реализации задания курсовой работы требуются умение решать системы методом Гаусса, знания основы программирования на зыке Си в частности «динамическая память», «структуры», «массивы», «работа с файлами».C) - стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе (ОС) UNIX. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. Авторы языка хотели, чтобы программы на нем легко компилировались с помощью однопроходного компилятора, после компиляции каждой элементарной составляющей программы соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже откомпилированному тексту.Состоит в постепенном понижении порядка системы и исключении неизвестных. На первом этапе осуществляется так называемый прямой ход, когда путем элементарных преобразований над строками систему приводят к ступенчатой или треугольной форме, либо устанавливают, что система несовместна. А именно, среди элементов первого столбца матрицы выбирают ненулевой, перемещают его на крайнее верхнее положение перестановкой строк и вычитают получавшуюся после перестановки первую строку из остальных строк, домножив ее на величину, равную отношению первого элемента каждой из этих строк к первому элементу первой строки, обнуляя тем самым столбец под ним. После того, как указанные преобразования были совершены, первую строку и первый столбец мысленно вычеркивают и продолжают пока не останется матрица нулевого размера.Программа выводит запрос на ввод количество строк в системе, количество столбцов в программе будет всегда на одну больше количества строк. В программе иметься ограничение на количество вводимых строк, нельзя вести больше пятнадцати и меньше одной, если вводиться неверное число или вводиться буква либо любой другой символ, то запрос повторяется снова. После ввода количества строк появляется следующий запрос, в котором нужно выбрать как заполнить массив. Если же будет выбран 3 вариант, массив заполнится из файла, нажатие другой кнопки приводит к повтору запроса. При выборе второго варианта предлагается ввести первое число а[0][0](первый ноль означает номер строки, второй столбца), число должно быть в диапазоне от минус девяноста девяти до девяноста девяти, иначе запрос повториться.struct SLU - глобальная структура которая хранить в себе всю систему **a, а также ее размер r. void vivod_matrici(struct SLU *S) функция выводит матрицу на экран, в качестве параметра ей передается структуру для вывода ее. void vihod(SLU *S) функция выхода из программы, вызывается когда нужно завершить программу. В качестве параметра ей передается структуру в которой освобождается память выделенная для системы **a, закрывает все открытые файлы, чистит экран, выходит. int metod_gaussa(struct SLU *S, int v) функция решает систему методом гаусса. В качестве параметра ей передается структуру и переменная, если значение переменой равно 1 то функция будет выводить подробно подсчеты вычислений. Функция возвращает значение mnogo, net, single. c=(float *) malloc(S->r * sizeof(float)); выделяем память под массив *c, в него будут скопированы получившиеся в результате подсчета неизвестные с целью дальнейших перестановок таких же как и со столбцами. b=(int *) malloc(S->r * sizeof(int)); выделяем память под массив *b, его заполняем индексами которые будут переставляться также как и столбцы, с целью того что бы в дальнейшим переставить результаты вычислений также как и столбцы. Проверяем на данном этапе имеет ли система решение или множество решений, если не имеет или имеет множество решений то освобождается память массивов free(b); free(c); и функция возвращает значение net или mnogo.T.a = (float **) malloc(T.r * sizeof(float*)); T.a[i] = (float *) malloc((T.r 1) * sizeof(float)); {float B[3][4]={{1,1,1,3}, {0,1,0,1}, {0,0,0,1}}; {float B[3][4]={{1,1,1,3}, {0,1,0,1}, {0,0,1,0}};Выполнив данную курсовую работу, я повторил основные базовые темы языка программирования Си такие как «динамическая память», «структуры», «массивы», «работа с файлами». Поскольку представление значений определенного типа имеет фиксированное число битов, эти значения могут принадлежать только определенному диапазону. Если присваивается значение, находящееся вне диапазона допустимых значений для данного типа, происходит ошибка переполнения. В значениях с плавающей точкой, кроме того, что в них также имеет место переполнение, возможна потеря разрядов значимости, определяющих степень точности значения. Предположим, например, что мы присваиваем переменной типа float значение 1.234567890.{float **a; c=(float *) malloc(S->r * sizeof(float)); //massiv dlia kopii polu4ivshihsia rezultatov b=(int *) malloc(S->r * sizeof(int)); //

План
Содержание

Задание на проектирование

Введение

1. Обзор предметной области

2. Теоретическая часть

3. Инструкция пользователя

4. Инструкция программиста

5. Тестирование

Заключение

Библиографический список

Приложение

Введение
Курсовое проектирование является основной формой самостоятельной работы студента и способствует приобретению студентов навыков теоретически грамотного и логически последовательного изложения рассматриваемой проблемы.

Целью данной курсовой работы является реализация на языке программирования Си решения системы линейных уравнений методом Гаусса. Для реализации задания курсовой работы требуются умение решать системы методом Гаусса, знания основы программирования на зыке Си в частности «динамическая память», «структуры», «массивы», «работа с файлами».

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

Вывод
программирование линейный уравнение гаусс

Выполнив данную курсовую работу, я повторил основные базовые темы языка программирования Си такие как «динамическая память», «структуры», «массивы», «работа с файлами». Приобрел определенны навыки в работе с методом Гаусса и его особенностями. Данную программу можно использоваться для решения больших систем методом Гаусса за очень маленький промежуток времени.

В некоторых случаях результаты вычислений были с погрешностью изза того что в компьютере числа представляются посредством комбинаций 0 и 1 (двоичных цифр). Поскольку представление значений определенного типа имеет фиксированное число битов, эти значения могут принадлежать только определенному диапазону. Если присваивается значение, находящееся вне диапазона допустимых значений для данного типа, происходит ошибка переполнения. В значениях с плавающей точкой, кроме того, что в них также имеет место переполнение, возможна потеря разрядов значимости, определяющих степень точности значения. Например, значения типа float допускают 6-7 значащих цифр. Предположим, например, что мы присваиваем переменной типа float значение 1.234567890. Поскольку тип float обеспечивает только 7 значащих цифр, точными будут только первые 7 цифр (1.234567). С другой стороны, значения типа double обеспечивают от 14 до 15 значащих цифр. В результате значение 1.234567890 может быть точно сохранено как значение типа double. При работе со значениями в формате с плавающей точкой следует помнить о том, что эти значения представляются с использованием фиксированного числа битов. Если так, то компьютер не в состоянии всегда представлять значения точно - в некоторых случаях представление значения с плавающей точкой содержит погрешность. Например, компьютер может представить значение 0.4 как 0.3999999 или значение 0.1 как 0.099999 и т.д.

Список литературы
1. Kris Jamsa (Крис Джамса). 1001 совет по С/С . Настольная книга программиста М.: Март, БИНОМ, Универсал, 1997. - 784 с

2. Kris Jamsa (Крис Джамса). Учимся программировать на языке C : Пер. с англ. - М.: Мир, 1999. - 320 с., ил.

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?