Автор работы: Пользователь скрыл имя, 21 Июня 2012 в 20:40, курсовая работа
Численное решение прикладных задач всегда интересовало математиков. Крупнейшие представители прошлого сочетали в своих исследованиях изучение явлений природы, получение их математического описания, как иногда говорят, математической модели явления, и его исследование. Анализ усложненных моделей потребовал создание специальных, как правило, численных или асимптотических методов решения задач. Названия некоторых из таких методов – методы Ньютона, Эйлера, Лобачевского, Гаусса, Чебышева, Эрмита, Крылова – свидетельствуют о том, что их разработкой занимались крупнейшие ученые своего времени.
Настоящее время характерно резким расширением приложений математики, во многим связанным с созданием и развитием средств вычислительной техники. В результате появления ЭВМ (электронно-вычислительных машин, или как часто говорят, компьютеров) с программным управлением менее чем за 50 лет скорость выполнения арифметических операций возросла от 0.1 операции в секунду при ручном расчете до 1012 операций на современных серийных ЭВМ, т.е. примерно в 1013 раз.
В настоящее время разработка методов и алгоритмов решения задачи Коши для обыкновенных дифференциальных уравнений продвинута настолько, что зачастую исследователь, имеющий дело с этой задачей, не занимается выбором метода ее решении, а просто обращается к стандартной программе.
В случае с уравнений с частными производными число принципиально различных постановок задач существенно больше. В курсе уравнений с частными производными обычно рассматривается незначительная часть таких постановок, главным образом связанных с постоянными коэффициентами. При этом существует очень малое количество задач, решаемых в явном виде. Многообразие постановок в теории уравнений с частными производными связано с многообразием окружающего нас мира.
Среди всех типов уравнений математической физики эллиптические уравнения с точки зрения вычислителей стоят особняком. С одной стороны, имеется хорошо развитая теория решения эллиптических уравнений и систем. Достаточно легко доказываются теоремы об устойчивости разностных схем для эллиптических уравнений. Цель работы: разработать сеточный метод, позволяющих решать задачу Дирихле методом разностных схем на примере уравнения Лапласа. В качестве среды разработки был выбран пакет matlab 6.5.
Аннотация 3
Введение 4
Раздел 1. Математическое описание алгоритмов и операций 6
Раздел 2. Библиотека функций 11
Раздел 3. Тестирование 12
Вывод 16
Заключение 17
Список использованной литературы 18
Приложения 19
Для метода Гаусса не приходится учитывать количество итераций.
1. Установлено что явная схема имеет существенный недостаток: накладываются ограничения на шаги и по сетке. Чего лишены неявные схемы.
2. Итерационные методы идеально подходят для сеточной схемы «крест», метод верхней релаксации оказался самым быстросходящимся.
3. Для метода Гаусса приходится хранить огромную матрицы в памяти ЭВМ, что при достаточно больших N будет накладно.
Заключение
В ходе работы была изучена разностная схема «крест» для нахождения численного решения уравнения Лапласа (эллиптическое уравнение), задача Дирихле.
Также были усвоены и закреплены навыки:
1. Использования указателей в среде matlab.
2. Программирования в среде matlab.
3. Разработки численных методов для уравнений эллиптического типа.
Были созданы четыре метода реализующих разностную схему «крест» и один метод для «метода установления».
1. Самарский А.А. Введение в численные методы. Учебное пособие для вузов. 3-е изд., стер. –СПб.: Издательство «Лань», 2005. – 288 с.: ил. – (Учебники для вузов. Специальная литература).
2. Бахвалов Н.С., Жидков Н. П., Кобельков Г. М. Численные методы – 3-е изд, доп., и перераб. – М.: БИНОМ. Лаборатория знаний, 2004. – 636 с., илл.
3. Агошков В.И., Дубровский П.Б., Шутяев В.П. Методы решения задач математической физики / Под ред. Г. И. Марчука: Учеб. пособие. – М: ФИЗМАТЛИТ, 2002.-320с.
4. Мэтьюз Джон Г., Финкс Куртис Д Численные методы использования MATLAB,3-е издание. /Пер с англ. – М. Издательский до «Вильямс», 2001 – 720с.
5. Турчак Л. И., Плотников П. В. Основы численных методов: Учеб. пособие. – 2-е изд., перераб. И доп. – М.: ФИЗМАТЛИТ, 2005. -304 с.
6. http://www.intuit.ru/
7. http://www.intuit.ru/
ElipYa.m |
function ElipYa(X,N,fi,E) %сеточный метод итерационный, процесс Якоби % X - Сторона прямоугольника % Y - Сторона прямоугольника % N - Количество узлов по х % K - Количество узлов по y % fi - функция граничного условия % E - точность h=X/N; %Равномерная сетка по пространственным переменным x=[0:h:h*N]; % Разбиваем сетку по переменной х y=[0:h:h*N]; % Разбиваем сетку по переменной у U=zeros(N+1,N+1); % матрица значений сеточной функции F=zeros(N+1,N+1); % матрица значений сеточной функции f(x,y) % "дискретизация начальных условий" и начальное заполнение матрицы значений сеточной функции U(1,:)=feval(fi,x(1),y); % Первая строка матрицы U(N+1,:)=feval(fi,x(N+1),y); % Последняя строка матрицы U(:,1)=feval(fi,y(1),x'); % Первый столбец матрицы U(:,N+1)=feval(fi,y(N+1),x'); % Последний столбец матрицы U(2:N,2:N)=rand(N-1,N-1); % Для решения нам необходимо начальное приближение. Осуществляем случайное начальное приближение! %Собственно вычисление... Применяется метод Якоби M=E+0.01; d=0; iter=0; while (M>E) % Пока не достигнем требуемой точности U0=U; for i=2:N % произведем расчеты Xb=U(i,:); for j=2:N v=0.25*(U0(i+1,j)+U0(i-1,j)+ U(i,j)=v; end; d=norm(U(i,:)-Xb); if(M>d) % Если условия выполняется, то найдено новое значение остигнутой точности! M=d; end; end; iter=iter+1; end; figure; display('Всего потребовалось итераций: '); display(iter); surf(x,y,U); % Вывод поверхности! |
Elip1.m |
function [x,y,U]=Elip1(X,N,fi,E) %сеточный метод, итерационный процесс Гаусса-Зейделя % X - Сторона прямоугольника % Y - Сторона прямоугольника % N - Количество узлов по х % K - Количество узлов по y % fxy - функция правой части % fi - функция граничного условия % E - точность h=X/N; %Равномерная сетка по пространственным переменным x=[0:h:h*N]; % Разбиваем сетку по переменной х y=[0:h:h*N]; % Разбиваем сетку по переменной у U=zeros(N+1,N+1); % матрица значений сеточной функции F=zeros(N+1,N+1); % матрица значений сеточной функции f(x,y) % "дискретизация начальных условий" и начальное заполнение матрицы значений сеточной функции U(1,:)=feval(fi,x(1),y); % Первая строка матрицы U(N+1,:)=feval(fi,x(N+1),y); % Последняя строка матрицы U(:,1)=feval(fi,y(1),x'); % Первый столбец матрицы U(:,N+1)=feval(fi,y(N+1),x'); % Последний столбец матрицы U(2:N,2:N)=rand(N-1,N-1); % Для решения нам необходимо начальное приближение. Осуществляем случайное начальное приближение! %Собственно вычисление... Применяется метод Гаусса-Зейделя M=E+0.01; d=0; iter=0; while (M>E) % Пока не достигнем требуемой точности for i=2:N % произведем расчеты Xb=U(i,:); for j=2:N v=0.25*(U(i+1,j)+U(i-1,j)+U(i, U(i,j)=v; end; d=norm(U(i,:)-Xb); if(M>d) % Если условия выполняется, то найдено новое значение остигнутой точности! M=d; end; end; iter=iter+1; end; %После завершения расчетов построим поверхность и вернем значения сетки и сеточной функции, опредеоенной на ней!. figure; display('Всего потребовалось итераций: '); display(iter); surf(x,y,U); % Вывод поверхности! |
ElipR.m |
function [x,y,U]=ElipR(X,N,fi,t,E) %сеточный метод, итерационный процесс верхней релаксации % X - Сторона прямоугольника % Y - Сторона прямоугольника % N - Количество узлов по х % K - Количество узлов по y % fi - функция граничного условия % E - точность h=X/N; %Равномерная сетка по пространственным переменным x=[0:h:h*N]; % Разбиваем сетку по переменной х y=[0:h:h*N]; % Разбиваем сетку по переменной у U=zeros(N+1,N+1); % матрица значений сеточной функции F=zeros(N+1,N+1); % матрица значений сеточной функции f(x,y) % "дискретизация начальных условий" и начальное заполнение матрицы значений сеточной функции U(1,:)=feval(fi,x(1),y); % Первая строка матрицы U(N+1,:)=feval(fi,x(N+1),y); % Последняя строка матрицы U(:,1)=feval(fi,y(1),x'); % Первый столбец матрицы U(:,N+1)=feval(fi,y(N+1),x'); % Последний столбец матрицы U(2:N,2:N)=rand(N-1,N-1); % Для решения нам необходимо начальное приближение. Осуществляем случайное начальное приближение! %Собственно вычисление... Применяется метод верхней релаксации M=E+0.01; d=0; iter=0; while (M>E) % Пока не достигнем требуемой точности for i=2:N % произведем расчеты Xb=U(i,:); for j=2:N v=(t/4)*(U(i+1,j)+U(i,j+1))-t* U(i,j)=v; end; d=norm(U(i,:)-Xb); if(M>d) % Если условия выполняется, то найдено новое значение остигнутой точности! M=d; end; end; iter=iter+1; end; figure; display('Всего потребовалось итераций: '); display(iter); surf(x,y,U); % Вывод поверхности! |
ElipGauss.m |
function [x,y,U]=ElipGauss(X,N,fi) % X - Сторона прямоугольника % N - Количество узлов по х % K - Количество узлов по y % fi - функция граничного условия % E - точность h=X/N; %Равномерная сетка по пространственным переменным x=[0:h:h*N]; % Разбиваем сетку по переменной х y=[0:h:h*N]; % Разбиваем сетку по переменной у U=zeros(N+1,N+1); % матрица значений сеточной функции F=zeros(N+1,N+1); % матрица значений сеточной функции f(x,y) Aii=-4*eye(N-1)+diag(ones(1,N- Aij=eye(N-1,N-1); % нижняя и верхняя диагонали A=zeros((N-1)*(N-1),(N-1)*(N- B=zeros((N-1)*(N-1),1); % правые части pos11=0; pos12=0; pos21=0; pos22=0; % "дискретизация начальных условий" и начальное заполнение матрицы значений сеточной функции U(1,:)=feval(fi,x(1),y); % Первая строка матрицы U(N+1,:)=feval(fi,x(N+1),y); % Последняя строка матрицы U(:,1)=feval(fi,y(1),x'); % Первый столбец матрицы U(:,N+1)=feval(fi,y(N+1),x'); % Последний столбец матрицы %U(2:N,2:N)=rand(N-1,N-1); % Для решения нам необходимо начальное приближение. Осуществляем случайное начальное приближение! for i=1:N-1 % Заполнение блочной матрицы - основной матрицы системы if(i==1) pos11=1; pos12=N-1; else pos11=pos12+1; pos12=pos12+N-1; end; for j=1:N-1 if(j==1) pos21=1; pos22=N-1; else pos21=pos22+1; pos22=pos22+N-1; end; if(i==j) A(pos11:pos12,pos21:pos22)= else if(i==j-1 | i==j+1) A(pos11:pos12,pos21:pos22)= end; end; end; %Произвести заполнение B if(pos11==1 & pos12==N-1) B(pos11:pos12,1)=-U(1,2:N)'; B(pos11,1)=B(pos11,1)-U(2,1); B(pos12,1)=B(pos12,1)-U(2,N+1) else if (pos11==(N-1)*(N-1)-(N-2) & pos12==(N-1)*(N-1)) B(pos11:pos12,1)=-U(N+1,2:N)'; B(pos11,1)=B(pos11,1)-U(N,1); B(pos12,1)=B(pos12,1)-U(N,N+1) else B(pos11,1)=B(pos11,1)-U(i+1,1) B(pos12,1)=B(pos12,1)-U(i+1,N+ end; end; end;
%Собственно вычисление... Применяется метод Гаусса с исключением нулевых %элементов d=0; iter=0; X=A\B; for i=2:N if(i==2) pos11=1; pos12=N-1; else pos11=pos12+1; pos12=pos12+N-1; end; U(i,2:N)=X(pos11:pos12,1)' end; figure; surf(x,y,U); |
ElipT1.m |
function [x,y,U]=ElipT1(X,N,tau,fi,E) % X - Сторона квадрата % N - Количество узлов % tau - шаг по времени % fi - функция граничного условия % E - точность %Равномерная сетка по пространственным переменным h=X/N; x=[0:h:h*N]; % Разбиваем сетку по переменной х y=[0:h:h*N]; % Разбиваем сетку по переменной у U=zeros(N+1,N+1); % матрица значений сеточной функции U0=zeros(N+1, N+1); % матрица, содержащая предыдущий слой решения по времени F=zeros(N+1,N+1); % матрица значений сеточной функции f(x,y) % "дискретизация начальных условий" и начальное заполнение матрицы значений сеточной функции U(1,:)=feval(fi,x(1),y); % Первая строка матрицы U(N+1,:)=feval(fi,x(N+1),y); % Последняя строка матрицы U(:,1)=feval(fi,y(1),x'); % Первый столбец матрицы U(:,N+1)=feval(fi,y(N+1),x'); % Последний столбец матрицы % Заполнение матрицы U начальными значениями функции psi(x,y) - % произвольная функция для начального слоя for i=2:N for j=2:N U(i,j)=rand(1,1);% задаем некое случайное начальное приближение end; end; M=E+0.1; sigma=tau/h^2; iter=0; while(M>E & iter<=500) % процесс стремится к заданной точности U0=U; % запоминаем предыдущее приближение for i=2:N for j=2:N U(i,j)=sigma*(U0(i+1,j)+U0(i- end; d=norm(U(i,:)-U0(i,:)); if(M>d) M=d; end; end; iter=iter+1; end; figure; display('Всего потребовалось итераций: '); display(iter); surf(x,y,U); % Вывод поверхности! |
22
[1] Агошков В.И., Дубровский П.Б., Шутяев В.П. Методы решения задач математической физики
[2] Турчак Л. И., Плотников П. В. Основы численных методов
[3] Бахвалов Н.С., Жидков Н. П., Кобельков Г. М. Численные методы
[4] Бахвалов Н.С., Жидков Н. П., Кобельков Г. М. Численные методы
[5] Самарский А.А. Введение в численные методы
Информация о работе Решение эллиптических уравнений разностными методами