Решение краевой задачи на графе методом Ритца
Дипломная работа - Математика и статистика
Другие дипломы по предмету Математика и статистика
: integer): real;k of
: Tt:=1;
: Tt:=1;
: Tt:=1;;;
2) Плотность сил
f(k: integer): real;k of
: f:=-4/3;
2: f:=7/6;
: f:=2/27;
end;
end;
Длины струн (задаются с клавиатуры):
Пример работы программы:
Рис.4.1. Пример работы программы при параметрах
l1=1, l2=2, l3=3, n1=n2=n3=4, koef=1000,
изображена струна 1
Рис. 4.2. Пример работы программы при параметрах
l1=1, l2=2, l3=3, n1=n2=n3=8, koef=1000
изображена струна 2
Рис. 4.3. Пример работы программы при параметрах
l1=1, l2=2, l3=3, n1=n2=n3=16, koef=1000
изображена струна 3
Таблица 4.1. Таблица погрешностей
Число точек разбиенияАбсолютная погрешность4, 4, 45.20883837858082E-00028, 8, 8 2.96830985896908E-000216, 16, 161.57447173090176E-000232, 32, 328.09155296842234E-000364, 64, 644.66689785402547E-0003
Заключение
Данная работа посвящена поиску приближенного решения краевой задачи на графе методом Ритца. Была исследована математическая модель системы из трех струн, выведен вид оператора, обоснована возможность применения метода Ритца, разработана его реализация на подпространствах сплайнов на графе, а так же алгоритм решения поставленной дифференциальной задачи. Результатом работы послужила программа, написанная на языке программирования Delphi 7.0. Программа включает в себя несколько процедур для ввода и вывода информации, необходимой для работы программы, подсчет определенных интегралов методом трапеций, составление и решение системы линейных алгебраических уравнений методом Гаусса, модифицированного для матриц со специальным портретом (разреженных). Результатом работы программы является хорошее приближение даже при небольших разбиениях, программа быстро работает, ее можно легко модифицировать для решения других задач на графе.
Список литературы
1. Шилов Г.Е. Математический анализ/ Г.Е. Шилов. - М.: Гос. изд-во физ.-мат. литературы, 1961. - 436 с.
2. Гайдай В.А. Моделирование и исследование сложных систем, параметризованных геометрическим графом: дис. канд. физ.-мат. наук: 05.13.18/ В.А. Гайдай. - Воронеж, 2009. - 79 с.
3. Алексеев В.М. Оптимальное управление/ В.М. Алексеев, В.М. Тихомиров, С.В. Фомин. - М.: Наука, 1979. - 432 с.
. Ректорис К. Вариационные методы в математической физике и технике/ К. Ректорис. - М.: Мир, 1985. - 590 с.
. Завьялов Ю.С. Методы сплайн-функций/ Ю.С. Завьялов, Б.И. Квасов, В.Л. Мирошниченко. - М.: Наука, 1980. - 352 с.
. Уилсон Р. Введение в теорию графов/ Р. Уилсон. - М.: Мир, 1977. - 208 с.
. Михлин С.Г. Вариационные методы в математической физике/ С.Г. Михлин. - М.: Наука, 1970. - 512 с.
. Островский А.М. Решение уравнений и систем уравнений/ А.М. Островский. - М.: Изд-во ин. лит-ры, 1963. - 220 с.
. Самарский А.А. Методы решения сеточных уравнений/ А.А. Самарский, Е.С. Николаев. - М.: Наука, 1978. - 592 с.
. Березин И.С. Методы вычислений/ И.С. Березин, Н.П. Жидков. - М.: Гос. изд-во физ.-мат. литературы, 1959. - 620 с.
. Самарский А.А. Численные методы/ А.А. Самарский, А.В. Гулин. - М.: Наука, 1989. - 432 с.
. Алексеев В.М. Сборник задач по оптимизации/ В.М. Алексеев, Э.М. Галлеев, В.М. Тихомиров. - М.: Физматлит, 2007. - 255 с.
Приложение
ЛистингUnit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, Series, TeEngine, ExtCtrls, TeeProcs, Chart;= class(TForm): TLabel;: TLabel;: TLabel;: TLabel;: TButton;: TButton;: TButton;: TButton;: TEdit;: TEdit;: TEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TPageControl;: TTabSheet;: TTabSheet;: TTabSheet;: TChart;: TLineSeries;: TLineSeries;: TChart;: TChart;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLabel;: TEdit;: TLabel;Button4Click(Sender: TObject);Button1Click(Sender: TObject);Button3Click(Sender: TObject);Button2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm1;: array [1..3] of real;: array [1..3] of integer;: array [1..3] of real;: array [-1..101] of real;: array [-1..101] of real;: array [-1..101] of real;: array [-1..303] of real;: integer;: array [1..1000,1..1000] of real;_ch, cf: array[1..1000] of real; // cf - коэффициенты разложения в методе Ритца, razb_z, matrix, pravch, prav_ch_int: textfile;
{$R *.dfm}TForm1.Button4Click(Sender: TObject);;;TForm1.Button1Click(Sender: TObject);: integer;[1]:=strtofloat(edit1.Text);[2]:=strtofloat(edit2.Text);[3]:=strtofloat(edit3.Text);[1]:=strtoint(edit4.Text);[2]:=strtoint(edit5.Text);[3]:=strtoint(edit6.Text);:=strtoint(edit7.Text);i:=1 to 3 do h[i]:=l[i]/n[i];(razb,razb.txt);(razb);(razb_z,razb_z.txt);(razb_z);i:=0 to n[1] do[i]:=h[1]*i;[i]:=x1[i];(razb,x1[i]);(razb_z,z[i]);;(razb,);(razb_z,);[-1]:=x1[0]-h[1];i:=0 to n[2] do[i]:=h[2]*i;(razb,x2[i]);;(razb,);[-1]:=x2[0]-h[2];i:=0 to n[3] do[i]:=h[3]*i;(razb,x3[i]);;[-1]:=x3[0]-h[3];i:=1 to n[2] do[i+n[1]]:=x2[i];(razb_z,z[i+n[1]]);;(razb_z,);i:=1 to n[3] do[i+n[1]+n[2]]:=x3[i];(razb_z,z[i+n[1]+n[2]]);;(razb_z,);(razb);(razb_z);;u_toch(x: real; k: integer): real;k of
: u_toch:=1/3-x+(2*x*x)/3;
: u_toch:=1/3+x-(7*x*x)/12;
: u_toch:=1/3-(x*x)/27;;;Tt(x: real; k: integer): real;k of
: Tt:=1;
: Tt:=1;
: Tt:=1;;;f(k: integer): real;k of
: f:=-4/3;
: f:=7/6;
: f:=2/27;;;splain(t: real; k, i: integer): real; // i- номер струны k- номер узлаi of
:((t> x1[k-1]) and (t x1[k]) and (t<= x1[k+1]))then splain:=(-t+x1[k+1])/(x1[k+1]-x1[k])splain:=0;
:((t> x2[k-1]) and (t x2[k]) and (t<= x2[k+1]))then splain:=(-t+x2[k+1])/(x2[k+1]-x2[k])splain:=0;
:((t> x3[k-1]) and (t x3[k]) and (t<= x3[k+1]))then splain:=(-t+x3[k+1])/(x3[k+1]-x3[k])splain:=0;;;Asplain(t: real; k, i: integer): real;i of
:((t> x1[k-1]) and (t x1[k]) and (t<= x1[k+1]))then Asplain:=-1/h[1]Asplain:=0;
:((t> x2[k-1]) and (t x2[k]) and (t<= x2[k+1]))then Asplain:=-1/h[2]Asplain:=0;
:((t> x3[k-1]) and (t x3[k]) and (t<= x3[k+1]))then Asplain:=-1/h[3]
else Asplain:=0;;;
// скалярное произведение. k - номер струны
function skal_pr(p, r, k: integer): real;, j: integer;: array [1..3] of real;_pr_1: real;_pr_2, skal_pr_3: real;i:=1 to 3 do hh[i]:=h[i]/koef;_pr_1:=0;k of
: begin(p=0) and (r=0) then_pr_1:=(Tt*Asplain(0,0,1)*Asplain(0,0,1)+*Asplain(x1[1],0,1)*Asplain(x1[1],0,1))/2;j:=1 to koef do_pr_1:=skal_pr_1 + Tt*Asplain(j*hh[1],0,1)*Asplain(j*hh[1],0,1);_pr_1:=skal_pr_1*hh[1];_pr_2:=(Tt*Asplain(hh[2],0,2)*Asplain(hh[2],0,2)+*Asplain(x2[1],0,2)*Asplain(x2[1],0,2))/2;j:=2 to koef do_pr_2:=skal_pr_2 + Tt*Asplain(j*hh[2],0,2)*Asplain(j*hh[2],0,2);_pr_2:=skal_pr_2*hh[2];_pr_3:=(Tt*Asplain(hh[3],0,3)*Asplain(hh[3],0,3)+*Asplain(x3[1],0,3)*Asplain(x3[1],0,3))/2;j:=2 to koef do_pr_3:=skal_pr_3 + Tt*Asplain(j*hh[3],0,3)*Asplain(j*hh[3],0,3);_pr_3:=skal_pr_3*hh[3];_pr_1:=skal_pr_1+skal_pr_2+skal_pr_3;;;
: begin_pr_1:=( Tt*Asplain(0,p,k)*Asplain(0,r,k) +*Asplain(x1[n[1]],p,k)*Asplain(x1[n[1]],r,k) )/2;j:=1 to koef*n[1]-1 do_pr_1:=skal_pr_1 + Tt*Asplain(j*hh[1],p,k)*Asplain(j*hh[1],r,k);_pr_1:=skal_pr_1*hh[1];;
: begin_pr_1:=( Tt*Asplain(0,p,k)*Asplain(0,r,k) +*Asplain(x2[n[2]],p,k)*Asplain(x2