Вы находитесь на странице: 1из 10

Министерство науки и высшего образования Российской Федерации

Федеральное государственное автономное образовательное учреждение


высшего образования
«Южно-Уральский государственный университет»
(национальный исследовательский университет)
Высшая школа электроники и компьютерных наук
Кафедра «Конструирование и технология электронных средств»
Дисциплина «Численные методы в САПР радиоэлектронных средств»

ОТЧЕТ
по лабораторной работе №2

ОДНОМЕРНЫЕ КРАЕВЫЕ ЗАДАЧИ

СОСТАВИЛ
студент группы КЭ-124
___________/ В.Е. Баранов
«04» октября 2020 г.

ПРОВЕРИЛ
_____________/ В.А. Бухарин
«___»_______________2020 г.

Челябинск 2020
Цель работы:
Решение одномерных краевых задач.
Задачи:
1. Решить одномерную краевую задачу методом наименьших квадратов.
Ортогональные и неортогональные функции, определенные на всей
рассматриваемой области.
2. Решить одномерную краевую задачу методом Галеркина. Ортогональные и
неортогональные функции, определенные на всей рассматриваемой области.
3. Используя линейную конечно-элементную аппроксимацию, решить
краевую задачу проекционным методом Галеркина.

Лист
2
Условия задачи:

d 2u(x )
u(x ) e 1 x 1, x 0,1 ;
dx 2
u(x ) x 0
0, u(x ) x 1
0.

Краевая задача имеет точное аналитическое решение:

u(x ) 1 e 1 x ex .

Ход работы
1. Решим задачу методом наименьших квадратов с помощью Программы 1
(Приложение А).
a) С помощью ортогональных функций:

Рисунок 1 – Решение краевой задачи с помощью МНК ортогональными


функциями

б) С помощью неортогональных функций:

Рисунок 2 – Решение краевой задачи с помощью МНК неортогональными


функциями Лист
3
2. Решим задачу методом Галеркина с помощью Программы 2 (Приложение
Б).
a) С помощью ортогональных функций:

Рисунок 3 – Решение краевой задачи с помощью метода Галеркина


ортогональными функциями

б) С помощью неортогональных функций:

Рисунок 4 – Решение краевой задачи с помощью метода Галеркина


неортогональными функциями

Лист
4
3. Решим задачу методом конечных элементов с помощью Программы 3
(Приложение В).

Рисунок 5 – Решение краевой задачи с помощью метода конечных элементов

Вывод:
В ходе лабораторной работы было получено решение краевой задачи
методами:
1) метод наименьших квадратов;
2) метод Галеркина;
3) метод конечных элементов.
Результаты приведены на рисунках 1-5. Самого графически точного решения
данной задачи позволяет добиться метод решения Галеркина, неортогональными
функциями.

Лист
5
ПРИЛОЖЕНИЕ А
Программа 1 – Решение краевой задачи МНК
restart;
eq1:=diff(u(x),x,x)-u(x)-(-(exp(1)-1)*x-1);
f:=a[1]*(1-x)*x+a[2]*(1-x)*x^2;
e:=subs(u(x)=a[1]*sin(1*Pi*x)+a[2]* sin(2*Pi*x);
eps:=value(e);
eq2:=int(eps*eps, x=0..1);
eq3:=diff(eq2,a[1]);
eq4:=diff(eq2,a[2]);
s:=solve({eq3,eq4},{a[1],a[2]});
assign(s):
f:=a[1]*(1-x)*x+a[2]*(1-x)*x^2;
with(plots):
p1:=plot((x*exp(1)*exp(x)-x*exp(x)+exp(x)-
exp(x)^2)/exp(x),x=0..1,style=line,color=blue,thickness=2):
p2:=plot(f,x=0..1,style=line,color=green,thickness=2):
display([p1,p2],axes=BOXED);

Лист
6
ПРИЛОЖЕНИЕ Б
Программа 2 – Решение краевой задачи методом Галеркина
restart;
eg:=diff(u(x),x,x)-u(x)+1+(exp(1)-1)*x;
Omega:=Sum(a[i]*basf(i,x),`i`=1..N);
basf:=proc(n,x);
(1-x)*x^n; end;
int(basf(1,x)*basf(2,x),x=0..1);
n:=2;
omega_n:=subs(N=n,value(Omega));
eg_a:=subs(u(x)=omega_n,eg);
sol_gal:=proc(eg_a,n,omega_n)local eg_coef,var_coef,solc_a,i;
eg_coef:={}; var_coef:={};
for i from 1 to n do
eg_coef:=eg_coef union
{int(eval(eg_a)*basf(i,x),
x=0..1)};
var_coef:=var_coef union {a[i]};
od;
#print(eval(eg_coef));
#print(eval(var_coef));
solc_a:=solve(eg_coef,var_coef);
#print(solc_a);
subs(solc_a,omega_n); end:
omega_a:=sol_gal(eg_a,n,omega_n);
u:=1+(exp(1)-1)*x-exp(x);
with(plots):
p1:=plot(u,x=0..1,style=line,color=blue,thickness=2):
p2:=plot(omega_a,x=0..1,style=line,color=green,thickness=2):
display([p1,p2],axes=BOXED);

Лист
7
ПРИЛОЖЕНИЕ В
Программа 3 – Решение краевой задачи методом конечных элементов
restart;
eg:=diff(u(x),x,x)-u(x)+1+(exp(1)-1)*x;
u:=1+(exp(1)-1)*x-exp(x);
x1 := 0;
y1 := solve(y = 1+(exp(1)-1)*x1-exp(x1), y);
x2 := 0.2;
y2 := solve(y = 1+(exp(1)-1)*x2-exp(x2), y);
x3 := 0.4;
y3 := solve(y = 1+(exp(1)-1)*x3-exp(x3), y);
x4 := 0.6;
y4 := solve(y = 1+(exp(1)-1)*x4-exp(x4), y);
x5 := 0.8;
y5 := solve(y = 1+(exp(1)-1)*x5-exp(x5), y);
x6 := 1;
y6 := solve(y = 1+(exp(1)-1)*x6-exp(x6), y);
g1 := (x-x1)*(y2-y1)/(x2-x1)+y1;
g2 := (x-x2)*(y3-y2)/(x3-x2)+y2;
g3 := (x-x3)*(y4-y3)/(x4-x3)+y3;
g4 := (x-x4)*(y5-y4)/(x5-x4)+y4;
g5 := (x-x5)*(y6-y5)/(x6-x5)+y5;
Omega:=Sum(basf(i,x),`i`=1..N);
basf:=proc(n,x);
g1; end;
n:=1;
omega_n:=subs(N=n,value(Omega));
eg_a:=subs(u(x)=omega_n,eg);
sol_gal:=proc(eg_a,n,omega_n)local eg_coef,var_coef,solc_a,i;
eg_coef:={}; var_coef:={};
for i from 1 to n do
eg_coef:=eg_coef union
{int(eval(eg_a)*basf(i,x),
x=0..1)};
var_coef:=var_coef union {a[i]};
od;
#print(eval(eg_coef));
#print(eval(var_coef));
solc_a:=solve(eg_coef,var_coef);
#print(solc_a);
subs(solc_a,omega_n); end:
omega_a1:=sol_gal(eg_a,n,omega_n);
u:=1+(exp(1)-1)*x-exp(x);
with(plots):
p1:=plot(u,x=0..1,style=line,color=blue,thickness=2):
p2:=plot(omega_a1,x=0..0.2,style=line,color=green,thickness=2):
display([p1,p2],axes=BOXED);
basf:=proc(n,x);
g2; end;
Omega:=Sum(basf(i,x),`i`=1..N);
n:=1;
omega_n:=subs(N=n,value(Omega));
eg_a:=subs(u(x)=omega_n,eg);
sol_gal:=proc(eg_a,n,omega_n)local eg_coef,var_coef,solc_a,i;
eg_coef:={}; var_coef:={};
for i from 1 to n do
eg_coef:=eg_coef union
Лист
8
{int(eval(eg_a)*basf(i,x),
x=0..1)};
var_coef:=var_coef union {a[i]};
od;
#print(eval(eg_coef));
#print(eval(var_coef));
solc_a:=solve(eg_coef,var_coef);
#print(solc_a);
subs(solc_a,omega_n); end:
omega_a2:=sol_gal(eg_a,n,omega_n);
u:=1+(exp(1)-1)*x-exp(x);
with(plots):
p1:=plot(u,x=0..1,style=line,color=blue,thickness=2):
p2:=plot(omega_a2,x=0.2..0.4,style=line,color=green,thickness=2):
display([p1,p2],axes=BOXED);
basf:=proc(n,x);
g3; end;
Omega:=Sum(basf(i,x),`i`=1..N);
n:=1;
omega_n:=subs(N=n,value(Omega));
eg_a:=subs(u(x)=omega_n,eg);
sol_gal:=proc(eg_a,n,omega_n)local eg_coef,var_coef,solc_a,i;
eg_coef:={}; var_coef:={};
for i from 1 to n do
eg_coef:=eg_coef union
{int(eval(eg_a)*basf(i,x),
x=0..1)};
var_coef:=var_coef union {a[i]};
od;
#print(eval(eg_coef));
#print(eval(var_coef));
solc_a:=solve(eg_coef,var_coef);
#print(solc_a);
subs(solc_a,omega_n); end:
omega_a3:=sol_gal(eg_a,n,omega_n);

u:=1+(exp(1)-1)*x-exp(x);
with(plots):
p1:=plot(u,x=0..1,style=line,color=blue,thickness=2):
p2:=plot(omega_a3,x=0.4..0.6,style=line,color=green,thickness=2):
display([p1,p2],axes=BOXED);
basf:=proc(n,x);
g4; end;
Omega:=Sum(basf(i,x),`i`=1..N);
n:=1;
omega_n:=subs(N=n,value(Omega));
eg_a:=subs(u(x)=omega_n,eg);
sol_gal:=proc(eg_a,n,omega_n)local eg_coef,var_coef,solc_a,i;
eg_coef:={}; var_coef:={};
for i from 1 to n do
eg_coef:=eg_coef union
{int(eval(eg_a)*basf(i,x),
x=0..1)};
var_coef:=var_coef union {a[i]};
od;
#print(eval(eg_coef));
#print(eval(var_coef));
solc_a:=solve(eg_coef,var_coef);
#print(solc_a); Лист
9
subs(solc_a,omega_n); end:
omega_a4:=sol_gal(eg_a,n,omega_n);
u:=1+(exp(1)-1)*x-exp(x);
with(plots):
p1:=plot(u,x=0..1,style=line,color=blue,thickness=2):
p2:=plot(omega_a4,x=0.6..0.8,style=line,color=green,thickness=2):
display([p1,p2],axes=BOXED);
basf:=proc(n,x);
g5; end;
Omega:=Sum(basf(i,x),`i`=1..N);
n:=1;
omega_n:=subs(N=n,value(Omega));
eg_a:=subs(u(x)=omega_n,eg);
sol_gal:=proc(eg_a,n,omega_n)local eg_coef,var_coef,solc_a,i;
eg_coef:={}; var_coef:={};
for i from 1 to n do
eg_coef:=eg_coef union
{int(eval(eg_a)*basf(i,x),
x=0..1)};
var_coef:=var_coef union {a[i]};
od;
#print(eval(eg_coef));
#print(eval(var_coef));
solc_a:=solve(eg_coef,var_coef);
#print(solc_a);
subs(solc_a,omega_n); end:
omega_a5:=sol_gal(eg_a,n,omega_n);
u:=1+(exp(1)-1)*x-exp(x);
with(plots):
p1:=plot(u,x=0..1,style=line,color=blue,thickness=2):
p2:=plot(omega_a5,x=0.8..1,style=line,color=green,thickness=2):
display([p1,p2],axes=BOXED);
with(plots):
p1:=plot(u,x=0..1,style=line,color=blue,thickness=2):
p2:=plot(omega_a1,x=0..0.2,style=line,color=green,thickness=2):
p3 := plot(omega_a2, x = .2 .. .4, style = line, color = green,
thickness = 2);
p4 := plot(omega_a3, x = .4 .. .6, style = line, color = green,
thickness = 2);
p5 := plot(omega_a4, x = .6 .. .8, style = line, color = green,
thickness = 2);
p6 := plot(omega_a5, x = .8 .. 1, style = line, color = green, thickness
= 2);
display([p1,p2,p3,p4,p5,p6],axes=BOXED);

Лист
10