Создан заказ №2481089
15 марта 2018
В полуленте Ω={(x t) x ∈ [a b] t> 0} задано уравнение теплопроводности ut=c2uxx+f(x
Как заказчик описал требования к работе:
Задание 1 с рисунком А. Написать программу на Паскале с отчетом.
Фрагмент выполненной работы:
В полуленте Ω={(x,t) : x ∈ [a,b], t>0} задано уравнение теплопроводности
ut=c2uxx+f(x,t) (1)
с начальным условием
ux,0=φx, x∈[a,b] (2)
И краевыми условиями
ua,t=ε1t, t>0,
ub,t=ε2t, t>0. (3)
Аппроксимировать задачу (1)-(3) с помощью разностной схемы, по шаблону изображенному на рисунке 1, воспользовавшись методом неопределенных коэффициентов.
Рис.1 Шаблон явной схемы.
Найти порядок аппроксимации.
Найти необходимое условие устойчивости разностного оператора по начальным данным.
Найти приближенное решение для всех t≤T.
Решение:
Разложим решение в ряд Тейлора около узла (xi,tj), предполагая существование непрерывных четвертых производных по x и вторых по t:
uij+1=ui+τutxi,tj+12τ2uttxi,θj, (4)
ui∓1j=ui∓huxxi,tj+12h2uxxxi,tj∓16h3uxxxxi,tj+124h4uxxxxεi∓1,tj,
где tj<θj<tj+1, xi-1<εi-1<xi<εi+1<xi+1.
Для уравнение (1) на шаблоне рис.1 можем записать следующую схему с неопределенными коэффициентами
αui-1j+βuij+γui+1j+δuij+1=0 (5)
Определяем невязку
ψi=uti-c2uxxi-αui-1j-βuij- δuij+1 (6)
Подставим (4) в (6), тогда
ψ=ut-c2uxx-α+β+γ+δui-δτutxi,tj+12τ2uttxi,θj+α-γhuxxi,tj+16h3uxxxxi,tj-a+γ12h2uxxxi,tj+124h4uxxxxεi∓1,tj+…
Большинство членов обнуляются при
α+β+γ+δ=0, 1+τσ=0, (α-γ)=0, с2+12h2α+γ=0
т.е при
α=γ=-c2h2;
δ=-1τ;
β=2c2h-1t;
По результатам была написана программа в среде разработки Дельфи 7, для вычисления температур в каждом узле сетки результат работы программы представлен на рисунке 2.
Рис.2 Результат работы программы
На рисунке в качестве примера граничные и начальные условия заданы в виде констант, но программа имеет функционал вычисления с любыми заданными пользователем функциями.
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids, TeeProcs, TeEngine, Chart, Math, Series, Calculator;
type
TForm1 = class(TForm)
grp1: TGroupBox;
img1: TImage;
grp2: TGroupBox;
lbl1: TLabel;
edt1: TEdit;
grp3: TGroupBox;
lbl2: TLabel;
lbl3: TLabel;
edt2: TEdit;
edt3: TEdit;
lbl4: TLabel;
edt4: TEdit;
lbl5: TLabel;
edt5: TEdit;
lbl6: TLabel;
edt6: TEdit;
lbl7: TLabel;
edt7: TEdit;
btn1: TButton;
cht1: TChart;
cht2: TChart;
strngrd1: TStringGrid;
lbl8: TLabel;
edt8: TEdit;
lbl9: TLabel;
edt9: TEdit;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Calc:TCalculator;
implementation
{$R *.dfm}
function f(x:double; t:double; exp:string):Double;
begin
Calc.Clear;
Calc.ItemValue['x'] := FloatToStr(x);
Calc.ItemValue['t'] := FloatToStr(t);
f:= Calc.AsDouble(exp);
end;
function eps1(t:double; exp:string):Double;
begin
Calc.Clear;
Calc.ItemValue['t'] := FloatToStr(t);
eps1:=Calc.AsDouble(exp);
end;
function eps2(t:double; exp:string):Double;
begin
Calc.Clear;
Calc.ItemValue['t'] := FloatToStr(t);
eps2:=Calc.AsDouble(exp);
end;
function fi(x:double; exp:string):Double;
begin
Calc.Clear;
Calc.ItemValue['x'] := FloatToStr(x);
fi:=Calc.AsDouble(exp);
end;
procedure TForm1.btn1Click(Sender: TObject);
var
a,b,T,tao,h,c:Double;
alfa,beta,gama,sigma:Double;
n,m,i,j, grCount1, grCount2, st1,st2,g :integer;
Series:TFastLineSeries;
u:array of array of Double;
begin
//cjplftv gfhcth vfn dshf;tybq
Calc := TCalculator.Create(nil);
//Блокируем кнопку
btn1.Enabled:=False;
//очищаем таблицу
strngrd1.ColCount:=1;
strngrd1.RowCount:=1;
//очищаем графики
while(cht1.SeriesCount>0) do
cht1.SeriesList[cht1.SeriesCount-1].Free;
while(cht2.SeriesCount>0) do
cht2.SeriesList[cht2.SeriesCount-1].Free;
//Считываем исходные данные
a:=StrToFloat(edt4.Text);
b:=StrToFloat(edt5.Text);
c:=StrToFloat(edt6.Text);
T:=StrToFloat(edt7.Text);
n:=StrToInt(edt8.Text);
//вычисляем шаги
h:=(b-a)/n;
tao:=Power(h,2)/(2*Power(c,2));
m:=Trunc(T/tao)+1;
tao:=T/m;
strngrd1.ColCount:=n+2;
strngrd1.RowCount:=m+2;
SetLength(...Посмотреть предложения по расчету стоимости
Заказчик
заплатил
заплатил
20 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
16 марта 2018
Заказ завершен, заказчик получил финальный файл с работой
5
В полуленте Ω={(x t) x ∈ [a b] t> 0} задано уравнение теплопроводности
ut=c2uxx+f(x.jpg
2018-03-19 02:30
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Всё отлично! Автор большой молодец! Советую обращаться к нему! Быстро сделал. Претензий нету!