Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
03.02.2016
Размер:
192.73 Кб
Скачать

ЗАДАНИЕ №2 Лабораторный практикум

(Выполняется в системе MATLAB)

 

Задание №2. Решить одномерное стационарное уравнение теплопроводности  методом Галеркина

 

                                                     (1)

 

При граничных условиях:

 

                               (2)

 

Выберем базис вида

 

.                                                    (3)

 

Решение будем искать в виде

 

.                                                             (4)

 

Здесь  выбирается такими, чтобы  удовлетворяло заданным граничным условиям (2).

Составим проекционные уравнения:

 

 

Используем формулу интегрирования по частям:

 

 

.

 

После очевидных преобразований имеем

 

.         (5)

 

Далее, поступаем в зависимости от граничных условий.

 

1. Задача Дирихле:

 

Первый член в (5) равен нулю , и система (5) примет вид:

 

 

Или для выбранных функций:

 

 

2. Задача со свободным левым концом:

 

 

В этом случае

 

Первый член (5) преобразуем следующим образом:

 

 

После чего уравнение (5) с учетом граничного условия на левом конце перепишем в виде:

 

 

Или для выбранных функций:

 

 

3. Задача со свободным правым концом:

 

 

В этом случае

 

Первый член (5) преобразуем следующим образом:

 

 

После чего уравнение (5) с учетом граничного условия на левом конце перепишем в виде:

 

 

Или для выбранных функций:

 

Полученная система линейных алгебраических уравнений имеет симметричную, положительно определенную матрицу, ее коэффициенты и решение находятся стандартными методами из MATLAB.

 

Требуется составить и написать программу решения своего варианта.

 

Вывести графики решений для нескольких значений N=3, 5, 10.

 

 

Пример прграммы:

 

ЗАДАЧА ДИРИХЛЕ

 

function V2_16_1(be0,be1,N,M);

%решение по методу Галеркина

%g(x) и f(x)  M-file function; q0=q1=0; al0=al1=1;

for i=1:N

F1 = @(x)f(x).*sin(i*pi*x)-g(x).*(be1-be0).*cos(i*pi*x);

d(i) = quad(F1,0,1);

for k=1:N

F2 = @(x)g(x).*cos(i*pi*x).*cos(k*pi*x)*i*k*pi^2;

G(i,k)=quad(F2,0,1);

end;

end

d

G

a=d/G;

a

for i=1:M+1

   xt(i)=(i-1)/M;

   y(i)=be0+(be1-be0)*xt(i);

 for k=1:N

   y(i)=y(i)+a(k)*sin(k*pi*xt(i));

 end;

 end;

 hold off

 plot(xt,y);

 xt

 y

return

 

 

ЗАДАЧА СО СВОБОДНЫМ ЛЕВЫМ КОНЦОМ

 

function V2_16_2(al0,be0,be1,N,M);

%решение по методу Галеркина свободный левый конец

%g(x) f(x) ut2(x,al,be0,be1) M-file function; q0=1 q1=0; al1=1.

for i=1:N

F1 = @(x)f(x).*sin(0.5*i*pi*(1-x))-g(x).*be1.*0.5*i*pi*cos(0.5*i*pi*(1-x));

d(i) = quad(F1,0,1)+g(0)*be0*sin(0.5*i*pi);

for k=1:N

F2 = @(x)g(x).*cos(0.5*i*pi*(1-x)).*cos(0.5*k*pi*(1-x))*i*k*pi^2*0.25;

G(i,k)=al0*g(0)*sin(0.5*k*pi)*sin(0.5*i*pi)-quad(F2,0,1);

end;

end

d

G

a=d/G;

a

for i=1:M+1

   xt(i)=(i-1)/M;

   xi=xt(i);

   yt(i)=ut2(xi,al0,be0,be1);

   y(i)=be1*xi;

 for k=1:N

   y(i)=y(i)+a(k)*sin(0.5*k*pi*(1-xi));

 end;

 end;

 hold off

 plot(xt,y,'b');

 hold on

 plot(xt,yt,'r--');

 xt

 y

return

 

 

ЗАДАЧА СО СВОБОДНЫМ ПРАВЫМ КОНЦОМ

 

function V2_16_3(al1,be0,be1,N,M);

%решение по методу Галеркина свободный правый конец

%g(x) f(x) ut3(x,al,be0,be1)  M-file functions; q0=0 q1=1; al0=1.

for i=1:N

F1 = @(x)f(x).*sin(0.5*i*pi*x)-g(x).*be0.*0.5*i*pi*cos(0.5*i*pi*x);

d(i) = quad(F1,0,1)-g(1).*be1*sin(0.5*i*pi);

for k=1:N

F2 = @(x)g(x).*cos(0.5*i*pi*x).*cos(0.5*k*pi*x)*i*k*pi^2*0.25;

G(i,k)=-al1*g(1).*sin(0.5*k*pi)*sin(0.5*i*pi)-quad(F2,0,1);

end;

end

d

G

a=d/G;

a

for i=1:M+1

   xt(i)=(i-1)/M;

   xi=xt(i);

   yt(i)=ut3(xi,al1,be0,be1);

   y(i)=be0*(1-xi);

 for k=1:N

   y(i)=y(i)+a(k)*sin(0.5*k*pi*xi);

 end;

 end;

 hold off

 plot(xt,y,'b');

 hold on

 plot(xt,yt,'r--');

 xt

 y

return

 

 

Пример m-file functions для f(x), g(x), и соответствующего точного решения ut3(x)

 

function z=f(x);

z=1; %1-x.^2;

return

function z=g(x);

z=1;%1+x.^2;

return

function z=ut3(x,al,be0,be1);%свободный правый конец

c=be0;% f(x)=g(x)=1

b=(be1-al*(be0+0.5)-1)/(al+1);

z=x^2/2+b*x+c;

return

 

 

Индивидуальные ЗАДАНИЯ