| Добрый день, нужда привела меня к вам, сразу оговорюсь я не программист и не математик, потому прошу прощения за не очень умные вопросы и глупые ошибки.  По воле случая приходится осваивать программу 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, но все мои попытки с помощью справки сделать, что-то рабочее не увенчались успехом(хотелось бы оживить решение ур-ия теплопроводности).
 
 Заранее спасибо большое при большое.
 
 |