Автор работы: Пользователь скрыл имя, 15 Марта 2012 в 17:47, курсовая работа
MATLAB как язык программирования был разработан Кливом Моулером (англ. Cleve Moler) в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык
s{4}='h=ones(1,2*nb); r=zeros(1,2*nb);'; % задали массивы условий Дирихле
s{5}='xb=[p(1,e(1,:)),p(1,e(2,
s{6}='yb=[p(2,e(1,:)),p(2,e(2,
zcf=subs(zc,{x,y},{sym('xb'),
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,
c11=-eval(subs(EuL,{z,D2zx2,
c12=-eval(subs(EuL,{z,D2zx2,
c22=-eval(subs(EuL,{z,D2zx2,
c=[c11;c12;c12;c22]
fp = subs(EuR,{x,y},{p(1,:),p(2,:)}
f = (fp(t(1,:))+fp(t(2,:))+fp(t(3,
a =0
c =2, 0, 0, -4
Решаем уравнение. Рисуем график решения. Показываем конечноэлементную сетку. Надписываем оси. Выравниваем масштабы по осям Ox и Oy. Выбираем палитру. Показываем сетку и контур.
u = assempde('boundmem',p,e,t,c,a,
pdeplot(p,e,t,'xydata',u,'
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