Презентация ПЯВУ. Основы программирования. Лекция 14. Решение системы уравнений методом Гаусса. Вычисление числа Пи методом МонтеКарло онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему ПЯВУ. Основы программирования. Лекция 14. Решение системы уравнений методом Гаусса. Вычисление числа Пи методом МонтеКарло абсолютно бесплатно. Урок-презентация на эту тему содержит всего 24 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » ПЯВУ. Основы программирования. Лекция 14. Решение системы уравнений методом Гаусса. Вычисление числа Пи методом МонтеКарло



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    24 слайда
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    87.12 kB
  • Просмотров:
    107
  • Скачиваний:
    0
  • Автор:
    неизвестен



Слайды и текст к этой презентации:

№1 слайд
ПЯВУ. Лекция . Основы
Содержание слайда: ПЯВУ. Лекция 14. Основы программирования. А.М. Задорожный

№2 слайд
Контрольные вопросы Почему в
Содержание слайда: Контрольные вопросы Почему в C# рекомендуют использовать свойства вместо полей данных? Что такое рекурсия? В чем заключается метод Гаусса решения системы линейных уравнений? Какие варианты решения системы уравнений могут быть?

№3 слайд
План лекции Решение системы
Содержание слайда: План лекции Решение системы уравнений методом Гаусса Вариант с выбором ведущего элемента Вычисление детерминанта методом Гаусса Вычисление числа Пи методом “Монте-Карло”.

№4 слайд
Системы линейных уравнений и
Содержание слайда: Системы линейных уравнений и Матрицы a11*x1 + a12*x2 + … a1N*xN = b1 a21*x1 + a22*x2 + … a2N*xN = b2 … aN1*x1 + aN2*x2 + … aNN*xN = bN В векторном виде: A*x = b x = {x1, x2 , … xN}

№5 слайд
Метод Гаусса a x a x a N xN b
Содержание слайда: Метод Гаусса a’11*x1 + a’12*x2 + … a’1N*xN = b’1 a’22*x2 + … a’2N*xN = b’2 … a’NN*xN = b’N

№6 слайд
Представление системы
Содержание слайда: Представление системы уравнений Матрицу представим в виде двумерного массива: double [,] M = new double[N, N+1]; Число строк матрицы N. Число столбцов N + 1, т.к. включает и свободный вектор b. … Заполняем матрицу коэффициентами…

№7 слайд
Алгоритм вычитания строк
Содержание слайда: Алгоритм вычитания строк Здесь k – номер строки, которую надо вычитать … static void SubtractRow(double [,] M, int k) { double m = M[k, k]; for(int i = k+1; i < M.GetLength(0); i++) { double t = M[i, k]/m; for(int j = k; j < M.GetLength(1); j++) { M[i, j] = M[i, j] - M[k, j]*t; } } }

№8 слайд
Приведение матрицы к
Содержание слайда: Приведение матрицы к верхнетреугольному виду static void TriangleMatrix(double [,] M) { for(int i = 1; i < M.GetLength(0); i++) SubtractRow(M, i-1); }

№9 слайд
Решение Последнее уравнение
Содержание слайда: Решение Последнее уравнение содержит только 1 неизвестное – xN. После решения последнего уравнения, можно решить предпоследнее, т.к. после подстановки xN в нем останется неизвестным только xN-1 и т.д. public static double [] Solve(double [,] M) { TriangleMatrix(M); double v[] = new double[M.GetLength(0)]; int Nb = M.GetLength(1)-1; for(int n = v.Length-1; n >= 0; n--) { double sum = 0; for(int i = n+1; i < Nb; i++) sum += v[i]*M[n, i]; v[n] = (M[n, Nb]-sum)/M[n, n]; } return v; }

№10 слайд
Слабые места SubtractRow
Содержание слайда: “Слабые” места SubtractRow: double m = M[k, k]; … M[i, j] = M[i, j] - M[k, j]*t/m; Возможно, m окажется равным 0! Возможно окажется неравным 0, в результате ошибок вычислений!

№11 слайд
Улучшение метода Выбор
Содержание слайда: Улучшение метода Выбор “ведущего элемента”. Идея заключается в том, что бы каждый раз выбирать из оставшихся строк строку с набольшим элементом в текущей позиции (столбце, который зануляем). От перестановки уравнений решение системы не изменяется.

№12 слайд
Выбор ведущего элемента
Содержание слайда: Выбор ведущего элемента //Находит строку, в которой элемент n имеет наибольшее по модулю значение, // и меняет ее местами со строкой n static void SelectLeading(double [,] M, int n) { //Найдем номер строки, с наибольшим //элементом в столбце n int iMax = n; for(int i = n+1; i < M.GetLength(0); i++) if(Math.Abs(M[iMax, n]) < Math.Abs(M[i, n])) iMax = i; // Переставить строки iMax и n if(iMax != n) for(int i =n; i < M.GetLength(1); i++) { double t = M[n, i]; M[n, i] = M[iMax, i]; M[iMax, i] = t; } }

№13 слайд
Усовершенствованная
Содержание слайда: Усовершенствованная триангуляция матрицы static void TriangleMatrix(double [,] M) { for(int i = 1; i < M.GetLength(0); i++) { SelectLeading(M, i-1); SubtractRow(M, i-1); } }

№14 слайд
Решение есть не всегда static
Содержание слайда: Решение есть не всегда static bool TriangleMatrix(double [,] M) { for(int i = 1; i < M.GetLength(0); i++) { SelectLeading(M, i-1); if(Math.Abs(M[i-1, i-1]) > 0.0001) SubtractRow(M, i-1); else retrun false; } return true; }

№15 слайд
Решение public static double
Содержание слайда: Решение public static double [] Solve(double [,] M) { if(!TriangleMatrix(M)) retun null; double v[] = new double[M.GetLength(0)]; int Nb = M.GetLength(1)-1; for(int n = v.Length-1; n >= 0; n--) { double sum = 0; for(int i = n+1; i < Nb; i++) sum += v[i]*M[n, i]; v[n] = (M[n, Nb]-sum)/M[n, n]; } return v; }

№16 слайд
Решение double , M new double
Содержание слайда: Решение double[,] M = new double[4, 5] { { 2, 3, 1, 1, 1 }, { 1, 2, 1, 5, 1 }, { 1, 1, 2, 1, 1 }, { 1, 1, 4, 2, 1 } }; double[]x = Gauss.Solve(M); if(x != null) for (int i = 0; i < x.Length; i++) Console.WriteLine(x[i]); else Console.WriteLine(“Единственного решения системы нет.”);

№17 слайд
Детерминант и метод Гаусса
Содержание слайда: Детерминант и метод Гаусса Если не применять выбор ведущего элемента, то детерминант – это просто произведение диагональных элементов верхнетреугольной матрицы. Перестановка строк может приводить к изменению знака. Если меняются местами строки i и j, то знак будет меняться на противоположенный.

№18 слайд
Выбор ведущего элемента
Содержание слайда: Выбор ведущего элемента static bool SelectLeading(double [,] M, int n) { //Найдем номер строки, с наибольшим //элементом в столбце n int iMax = n; for(int i = n+1; i < M.GetLength(0); i++) if(Math.Abs(M[iMax, n]) < Math.Abs(M[i, n]) iMax = i; // Переставить строки iMax и n if(iMax != n) { for(int i =n; i < M.GetLength(1); i++) { double t = M[n, i]; M[n, i] = M[iMax, i]; M[iMax, i] = t; } return true; } return false; }

№19 слайд
Вычисляем детерминант static
Содержание слайда: Вычисляем детерминант static double Determinant(double [,] M) { double d = 1; for(int i = 1; i < M.GetLength(0); i++) { if(SelectLeading(M, i-1)) d *=-1; if(Math.Abs(M[i-1, i-1]) > 0.0001) SubtractRow(M, i-1); else retrun 0; } for(int i = 0; i < M.GetLength(0); i++) d*=M[i, i]; return d; }

№20 слайд
Контрольные вопросы Как в
Содержание слайда: Контрольные вопросы Как в решении задачи проявился характер вычислений с числами с плавающей точкой? Какие преобразования числовых типов компилятор выполняет сам? Как преобразовать числовые типы, если компилятор не позволяет неявное преобразование?

№21 слайд
Вычисление числа Пи методом
Содержание слайда: Вычисление числа Пи методом “Монте-Карло” Метод основан на применении для вычислений случайных чисел. Если моделировать попадание точек в квадрат равномерно по его площади, то доля точек попавших в круг, будет пропорциональна отношению площади круга к площади квадрата.

№22 слайд
Вычисление числа Пи Sокр Пи R
Содержание слайда: Вычисление числа Пи Sокр = Пи*R2 Удобно взять R = 1 и ограничиться 1-ой четвертью математической плоскости. Sокр = Пи Площадь квадрата при этом равна 4.

№23 слайд
Вычисление Пи Реализация int
Содержание слайда: Вычисление Пи Реализация int N=1000000; int n=0; Double x, y; Random r = new Random(); for(int i = 0; i < N; i++) { x = r.NextDouble(); y = r.NextDouble(); if(x*x + y*y < 1) n++; } Double pi = (4.0 * n) / N; Console.WriteLine(“Pi = {0:0.###}”, pi);

№24 слайд
Вопросы для повторения В чем
Содержание слайда: Вопросы для повторения В чем особенность статических методов (методов класса) по сравнению с методами объектов? Какие преимущества ООП дает на примере класса гистограммы? На какой идее был основан алгоритм определения принадлежности точки полигону? Как можно вычислить площадь полигона?

Скачать все slide презентации ПЯВУ. Основы программирования. Лекция 14. Решение системы уравнений методом Гаусса. Вычисление числа Пи методом МонтеКарло одним архивом:
Похожие презентации