2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 двухмерное уравнение теплопроводности в scilab
Сообщение23.02.2011, 13:27 
Добрый день, нужда привела меня к вам, сразу оговорюсь я не программист и не математик, потому прошу прощения за не очень умные вопросы и глупые ошибки. По воле случая приходится осваивать программу scilab (до этого с математическими программами не встречался) и столкнулся с проблемой. Одномерное решение ур-ия теплопроводности можно найти где угодно, а вот с двух мерным беда, только аналитически есть решения, но входе моих манипуляций с текстом решение ничего не решается.
Вот мой текст программы решения который я взял из книги для одномерной задачи и попытался переделать под двухмерную.
//Начальное условие (фи начальная загрязнённость)
//Условие при t=0
function y=fi(x,y)
y=1
endfunction
//Условие при x=0
function y=myu(y,t)
y=5
endfunction
//Условие при y=0
function y=nyu(x,t)
y=5
endfunction

function [u,x,y,t]=parabol(Nx,Ny,K,Lx,Ly,T,a)
//Функция решения параболического уравнения методом сеток с
//помощью явной разностной схемы.
//Nx - количество участков, на которые разбивается интервал по х (0,Lx);
//Ny - количество участков, на которые разбивается интервал по х (0,Ly);
//K – количество
// участков, на которые разбивается интервал по t (0,T);
// a - параметр дифференциального уравнения теплопроводности,
// Функция возвращает матрицу решений u и вектора x, t
// Вычисляем шаг по х
hx=Lx/Nx;
// Вычисляем шаг по y
hy=Ly/Ny;
// Вычисляем шаг по t
delta=T/K;
// Формируем массив x и первый столбец матрицы решений U
// из начального условия
for i=1:Nx+1
x(i)=(i-1)*hx;
u(i,1)=fi(x(i));
end
// Формируем массив y и первый столбец матрицы решений U
// из начального условия
for j=1:Ny+1
y(j)=(j-1)*hy;
u(j,1)=fi(y(j));
end
//Формируем массив t, первую и последнюю строку матрицы решений
// U из граничных условий
for k=1:K+1
t(k)=(k-1)*delta;
u(1,k)=myu(t(k));
u(Nx+1,k)=nyu(t(k));
end

gam=a^2*delta/(hx+hy)^2;
// Формируем матрицу решений u с помощью явной разностной схемы
for k=1:K
for i=2:Nx
u(i,j+1,k)=gam*u(i-1,j,k)+(1-2*gam)*u(i,j,k)+gam*u(i+1,j,k)+delta;
end
end
endfunction
//N -количество интервалов, на которые разбивается отрезок (0, L);
//K - количество интервалов, на которые разбивается отрезок (0, T);
//L - длина стержня,
//T - интервал времени,
//a - параметрдифференциального уравнения. Функция возвращает три параметра: решение - сеточная
//функция u, определенная на сетке h , массивы x и t.
//function [u,x,y,t]=parabol(Nx,Ny,K,Lx,Ly,T,a)
[U,X,Y,T]=parabol(20,20,1,2,2,1,0.1);
surf(X,Y,U');

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

И на последок, ещё один вопрос как анимировать график в примерах есть функция realtime, но все мои попытки с помощью справки сделать, что-то рабочее не увенчались успехом(хотелось бы оживить решение ур-ия теплопроводности).

Заранее спасибо большое при большое.

 
 
 
 Re: двухмерное уравнение теплопроводности в scilab
Сообщение23.02.2011, 21:36 
Есть пример решенный в матлабе хочется такое же в сайлабе сделать http://ru.wikipedia.org/wiki/%D0%A4%D0% ... at_eqn.gif

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group