Решение Дифференциального уравнения в среде MATLAB

Автор работы: Пользователь скрыл имя, 15 Марта 2012 в 17:47, курсовая работа

Описание

MATLAB как язык программирования был разработан Кливом Моулером (англ. Cleve Moler) в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык

Работа состоит из  1 файл

Kursov.doc

— 124.50 Кб (Скачать документ)

s{4}='h=ones(1,2*nb); r=zeros(1,2*nb);'; % задали массивы условий Дирихле

s{5}='xb=[p(1,e(1,:)),p(1,e(2,:))];'; % столбец координат x

s{6}='yb=[p(2,e(1,:)),p(2,e(2,:))];'; % столбец координат y

zcf=subs(zc,{x,y},{sym('xb'),sym('yb')}); % формула для подстановки

s{7}=['r=' vectorize(zcf) ';'];

disp('Текст файла граничных условий boundmem.m:')

fprintf('%s\n',s{:})

fid = fopen ( 'C:\Iglin\Matlab\boundmem.m', 'w' );

fprintf(fid,'%s\n',s{:});

fclose(fid); % закрываем файл

Текст файла граничных условий boundmem.m:

function [q,g,h,r]=boundmem(p,e,u,time)

nb=size(e,2);

q=zeros(1,nb); g=zeros(1,nb);

h=ones(1,2*nb); r=zeros(1,2*nb);

xb=[p(1,e(1,:)),p(1,e(2,:))];

yb=[p(2,e(1,:)),p(2,e(2,:))];

r=1./10.*xb+1./50.*yb.^2;

Следующий этап – задание функций, входящих в дифференциальное уравнение. Каждая из функций c, a, f может быть задана в следующих видах:

                    В виде константы.

                    В виде вектор-строки значений функции в центрах масс треугольников. Если для матрицы c задаются 2 строки, то подразумевается, что c – диагональная, и задаются c11 и c22. Если для матрицы c задаются 4 строки, то подразумевается, что это элементы матрицы c в порядке c11, c21, c12, c22.

                    В виде текстового выражения, составленного по правилам MATLAB, по которому можно вычислить соответствующую функцию в центрах масс треугольников. Эта функция может зависеть от переменных x, y, sd, u, ux, uy, t. Смысл этих переменных: t – время (скаляр), остальные переменные – векторы-строки, представляющие значения в центрах масс треугольников: x, y – координаты центров масс, sd – номер подобласти, u, ux, uy – решение и его частные производные.

                    В виде последовательности выражений, рассмотренных в предыдущем пункте. Эти выражения должны быть отделены друг от друга знаками !. Они воспринимаются как различные задания функции в различных подобластях. Этих выражений должно быть столько, сколько есть различных подобластей, т.е. max(t(4,:)), где t – массив, возвращаемый командой initmesh.

                    В виде имени определённой пользователем функции MATLAB (то есть *.m-файла), который представляет функцию, завиящую от аргументов (p,t,u,time), где p,t – данные по сетке разбиения, u – решение, time – время.

Найдём C, a. Учтём, что коэффициенты при  2u/ x y и  2u/ y x одинаковые. Вычислим правую часть уравнения Эйлера (4.7) сначала аналитически, а потом в центрах тяжести конечных элементов.

a=eval(subs(EuL,{z,D2zx2,D2zxy,D2zy2},{1,0,0,0}))

c11=-eval(subs(EuL,{z,D2zx2,D2zxy,D2zy2},{0,1,0,0}));

c12=-eval(subs(EuL,{z,D2zx2,D2zxy,D2zy2},{0,0,1,0}))/2;

c22=-eval(subs(EuL,{z,D2zx2,D2zxy,D2zy2},{0,0,0,1}));

c=[c11;c12;c12;c22]

fp = subs(EuR,{x,y},{p(1,:),p(2,:)}); % f в узлах

f = (fp(t(1,:))+fp(t(2,:))+fp(t(3,:)))/3; % f в ц.т. конечных элементов

a =0

c =2, 0, 0, -4

Решаем уравнение. Рисуем график решения. Показываем конечноэлементную сетку. Надписываем оси. Выравниваем масштабы по осям Ox и Oy. Выбираем палитру. Показываем сетку и контур.

u = assempde('boundmem',p,e,t,c,a,f); % решили

pdeplot(p,e,t,'xydata',u,'zdata',u,'mesh','on','colorbar','off'); % рисуем

title ('\bfExample 4') % заголовок

xlabel('x')

ylabel('y')

zlabel('z(x,y)')

v = axis; % границы осей

da = daspect; % масштаб осей

da(1:2) = min(da(1:2)); % min из двух

daspect(da) % выравняли масштаб осей

axis(v); % оставили границы

colormap(gray) % выбрали палитру

grid on % показали сетку

box on % показали внешний контур

Рис. 2. Решение примера

Ответ. Дифференциальное уравнение Эйлера-Остроградского после сокращения на –2 имеет вид

.

 

 

 

 

 

 

Заключение.

В заключении подведём итоги данной курсовой работы:

1.      Была рассмотрена программа MATLAB.

2.      Разобран пример решения дифференциального уравнения.

3.      Приведены результаты решения в виде скриншотов а так же текста программы.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Литература

1)   А.А. Дубанов Решение систем дифференциальных  уравнений.

2)   Ю.Н. Прошин, И.М. Еремин. Вычислительная  физика (Практический курс) Казань: Казанский  государственный университет, 2009. – 180 с. 

3)   С. П. Кузнецов, Динамический хаос. М:  ФИЗМАТЛИТ, 2006 г. - 356 с.

4)   А.Ю. Лоскутов, А.С. Михайлов, Основы теории  сложных систем. – М.–Ижевск: Институт  компьютерных исследований, 2007. – 620 с.

5)   Марчук Г.И. Математические модели в иммунологии // Вычислительные методы и эксперименты. 3-е изд., перераб. и доп. — М.: Наука, 1991.

6)   L. N. Trefethen (2000). Spectral Methods in MATLAB. Philadelphia: SIAM.

7)   Дьяконов В. П., Круглов В. В. MATLAB. Анализ, идентификация и моделирование систем. Специальный справочник. — СПб.: «Питер», 2002. — С. 448.

8)  Дьяконов В. П. MATLAB 7.*/R2006/2007. Самоучитель. — Москва.: «ДМК-Пресс», 2008. — С. 768.

9)  D. Arnold & J. C. Polking (1999). Ordinary Differential Equations Using

MATLAB, 2nd ed. Englewood Cliffs, NJ: Prentice-Hall.

 

16

 



Информация о работе Решение Дифференциального уравнения в среде MATLAB