Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Примеры реализации отдельных программ и их фрагментов




Варианты заданий для курсовой работы

Методические указания

Этапы выполнения курсовой работы

Задание на курсовую работу

Цель курсовой работы

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

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

В ходе выполнения курсовой работы рекомендуется придерживаться следующей последовательности этапов:

1. Получение задания (1 неделя).

2. Разработка алгоритма реализации численного метода (1 неделя).

3. Реализация алгоритма на языке С++ (2 недели).

4. Отладка и исследование разработанного алгоритма (2 недели).

5. Оформление отчета по курсовой работе (1 неделя).

6. Сдача курсовой работы на проверку (1 неделя).

7. Защита курсовой работы (1 неделя).

 

При реализации алгоритма должны быть разработаны блоки ввода исходных данных и вывода результатов удобные для работы с основной программой. Дополнительных требований к этим модулям не предусматривается.

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

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

Отчет должен содержать следующие разделы:

· Титульный лист.

· Постановка задачи и исходные данные.

· Математическое описание численного метода.

· Программная реализация.

· Тестирование на контрольном примере.

· Выводы.

Оформление отчета по курсовой работе должно быть выполнено в соответствии со стандартом МГУПИ на оформление курсовых работ, курсовых и дипломных проектов.

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

 

 

1. Разработать программу для численного решения системы линейных алгебраических уравнений (СЛАУ) методом Гаусса.

2. Разработать программу для численного решения СЛАУ методом Гаусса с выбором ведущего элемента среди строк.

3. Разработать программу для численного решения СЛАУ методом Гаусса, где ведущий элемент отыскивается среди строк и столбцов.

4. Разработать программу для численного решения СЛАУ методом Жордана - Гаусса с выбором ведущего элемента.

5. Разработать программу для численного обращения матрицы, используя метод Жордана-Гаусса.

6. Разработать программу для численного решения СЛАУ методом прогонки.

7. Разработать программу для численного решения СЛАУ методом Якоби.

8. Разработать программу для численного решения СЛАУ методом Зейделя.

9. Разработать программу для численного решения СЛАУ методом верхней релаксации.

10. Разработать программу для численного решения СЛАУ методом Гаусса с организацией хранения матрицы в виде одномерного массива.

11. Разработать программу для численного решения СЛАУ методом Зейделя с организацией хранения сильно разреженной матрицы большой размерности.

12. Разработать программу для численного решения СЛАУ методом прогонки с организацией хранения матрицы в виде одномерного массива.

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

14. Разработать программу для интерполяции значений функции методом Ньютона. В качестве тестового примера использовать функцию Рунге.

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

16. Разработать программу для численного интегрирования методом прямоугольников с автоматическим выбором шага интегрирования.

17. Разработать программу для численного интегрирования методом трапеций с автоматическим выбором шага интегрирования.

18. Разработать программу для численного интегрирования методом парабол с автоматическим выбором шага интегрирования.

19. Разработать программу численного интегрирования методом парабол для вычисления следующего интеграла:

Вычислите значение интеграла для .

20. Разработать программу численного интегрирования методом парабол для вычисления следующего интеграла:

для х=0, 0.1, 0.2, …, 1.9, 2.0.

21. Разработать программу для численного решения нелинейного уравнения методом половинного деления.

22. Разработать программу для численного решения нелинейного уравнения методом Ньютона.

23. Разработать программу для численного решения нелинейного уравнения методом хорд.

24. Разработать программу для численного решения нелинейного уравнения методом простой итерации.

25. Разработать программу для численного решения обыкновенного дифференциального уравнения (ОДУ) методом Эйлера.

Используя разработанную программу, получить семейство решений для уравнения

для , с начальными условиями , , , ,

Сделать выводы относительно устойчивости уравнения. Найти область устойчивого и неустойчивого поведения уравнения

26. Разработать программу для численного решения ОДУ с помощью уточненного метода Эйлера.

Используя разработанную программу, получить решение для уравнения

 

с начальными условиями , на интервале (0,2) с шагом h=0,1. Исследовать зависимость ошибки в т. x=1 от шага h. На основе выполненного исследования разработать алгоритм с автоматическим выбором шага.

Сделать выводы относительно устойчивости уравнения. Найти область устойчивого и неустойчивого поведения уравнения

27. Разработать программу для численного решения ОДУ с помощью модифицированного метода Эйлера.

Используя разработанную программу решить уравнение

 

с начальными условиями , при , на интервале (0,1).

Сделать выводы.

28. Разработать программу для численного решения ОДУ методом Эйлера.

Используя разработанную программу решить уравнение

 

с начальными условиями , на интервале (0.5;1) с переменным шагом. Стратегия выбора шага: задаем начальный шаг h (например 0,05) и погрешность вычислений (). Если шаг от x до x+h неудачный, то шаг делится пополам и т.д.

29. Разработать программу для численного решения системы ОДУ, используя уточненный метод Эйлера. В качестве исходного уравнения использовать уравнение Бесселя, преобразовав его в систему двух уравнений первого порядка:

с начальными условиями , .

30. Разработать программу для численного решения системы ОДУ, используя модифицированный метод Эйлера. В качестве исходного уравнения использовать уравнение Бесселя, преобразовав его в систему двух уравнений первого порядка:

с начальными условиями , .

 


Ниже приведен исходный код программной реализации на языке С++ для решения СЛАУ методом Гаусса с выбором ведущего элемента.

#include <algorithm>

#include <cmath>

#include <cstdlib>

 

int main(int argc, char* argv[])

{

// Решение СЛАУ методом Гаусса с выбором главного элемента по столбцам.

 

// Задание исходных данных.

// Размерность системы

const int n = 2;

// Матрица системы

double A[n][n] = {{1, 1}, {2, -1}};

// Вектор правой части

double b[n] = {1, 2};

// Решение

double x[n];

 

using namespace std;

 

/* Приведение матрицы A к верхней треугольной матрице с единицами на главной

диагонали */

 

for (int i = 0; i < n; i++) {

// Номер строки, содержащей главный элемент

int maxElementRow = i;

// Поиск главного элемента

for (int k = i+1; k < n; k++) {

if (abs(A[k][i]) > abs(A[maxElementRow][i]))

maxElementRow = i;

}

 

// Перестановка строк с номерами i, maxElementRow

if (maxElementRow!= i) {

for (int j = i; j < n; j++)

swap(A[i][j], A[maxElementRow][j]);

}

 

double l = A[i][i];

for (int j = i; j < n; j++)

A[i][j] /= l;

b[i] /= l;

 

for (int k = i+1; k < n; k++) {

double l = A[k][i];

for (int j = i; j < n; j++)

A[k][j] -= A[i][j] * l;

b[k] -= b[i] * l;

}

}

 

// Обратный ход. Вычисление решения

for (int i = n-1; i >= 0; i--) {

x[i] = b[i];

for (int j = n-1; j > i; j--)

x[i] -= A[i][j] * x[j];

}

 

return 0;

}

Далее представлен фрагмент программы для численного интегрирования методом парабол с автоматическим выбором шага интегрирования. Фрагмент вычисления интеграла реализован в виде функции integral(), для задания подинтегральной функции использован указатель на подинтегральную функцию.

#include <algorithm>

#include <cmath>

#include <cstdlib>

 

using namespace std;

 

/* Функция нахождения интеграла

Параметры: function - указатель на подынтегральную функцию;

lowerLimit, upperLimit - нижний и верхний пределы соответственно;

eps - точность */

double integral(double(*function)(double), double lowerLimit,

double upperLimit, double eps) {

const int MAX_ITERATIONS = 1000;

 

double I1, I2, FL, FR, F1, F2, h;

// FL - значение подынтегральной функции на левом конце отрезка

// FR - значение подынтегральной функции на правом конце отрезка

// F1 - сумма значений подынтегральной функции Fi с нечетными i (кроме значений функции

// на концах отрезка)

// F2 - сумма значений подынтегральной функции Fi с четными i (кроме значений функции

// на концах отрезка)

 

unsigned int i, k = 1, n = 4;

// k - номер текущей итерации

// n - число разбиений

 

FL = function(lowerLimit);

FR = function(upperLimit);

F1 = 0;

F2 = 0;

h = (upperLimit - lowerLimit) / n;

for (i = 0; i < n / 2; i++)

F1 += function(lowerLimit + (2*i+1)*h);

for (i = 1; i < n / 2; i++)

F2 += function(lowerLimit + (2*i)*h);

I2 = (FL + 4*F1 + 2*F2 + FR) * ((upperLimit - lowerLimit) / (3*n));

 

do {

if (k > MAX_ITERATIONS) {

/* Выброс исключения при невозможности достичь заданной точности

при числе итераций, не превышающем MAX_ITERATIONS */

throw -1;

}

k++;

n *= 2;

F2 = F1 + F2;

h /= 2;

F1 = 0;

for (i = 0; i < n / 2; i++)

F1 += function(lowerLimit + (2*i+1)*h);

I1 = I2;

I2 = ((FL + 4*F1 + 2*F2 + FR) * (upperLimit - lowerLimit)) / (3*n);

} while (abs(I2 - I1) > eps);

 

return I2;

}


Список литературы

1) Вержбицкий В.М. Основы численных методов: Учебник для вузов. 2-е изд. Перераб. – М.: Высшая школа, 2005. – 840 с.

2) Каханер Д., Моулер К., Неш С. Численные методы и программное обеспечение. – М.: Мир, 2001 – 575c.

3) Страуструп Б. Язык программирования С++. Специальное издание. Пер. с англ. – М.: ООО «Бином - Пресс», 2007 г. – 1104 с.:ил.

4) Самарский А.А., Гулин А.В. Численные методы: Учебное пособие для вузов. – М.: Наука, 1989. – 432 с.

5) Шилдт Г. Самоучитель С++. Пер. с англ. – 3-е изд. – СПб.: БХВ – Петербург, 2005 – 688 с.

 


 

Учебное издание

 

А.Е. Александров

 

 

Вычислительная математика

Учебно-методическое пособие по курсовому проектированию

 

______________________________________________________________________________________________

 

Подписано в печать

Формат 60x84 1/16

Объем п.л. Тираж 100 экз. Заказ №

______________________________________________________________________________________________

 

 

ГОУ ВПО “Московский государственный университет

приборостроения и информатики”

107996, Москва, ул. Стромынка, 20




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 787; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.086 сек.