Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Результаты численного эксперимента.

Модифицированный метод Эйлера.

 

Рис2

 

 

Запишем уравнение прямой выходящей из точки с наклоном, равным наклону интегральной кривой в середине отрезка точки (на рис.2). этой прямой соответствует прямая, проходящая через точки и ):

 

Для точки получаем

 

откуда немедленно следует разностное соотношение:

(*)

Значение , относящееся к середине отрезка , приближенно можно вычислить по методу Эйлера (**)

Исключая из (*) промежуточные значения (подстановкой выражения (**)), можно записать этот метод в виде следующей разностной схемы:

 

(***)

Система уравнений (***) представляет собой явную одношаговую разностную схему, аппроксимирующую исходную задачу (1) со вторым порядком точности

Результаты численного эксперимента.

Введем N=4 и посмотрим, как ведут себя графики решений ОДУ y(t) и z(t). Использование модифицировынного метода Эйлера позволяет получить лучшую точность решения (меньшую погрешность), чем у явногеявного методов эйлера, несмотря на то что они имеют один и тот же порядок точности.

при N=4

 

 

.

 

 

при N=25

 

при N=1000

 

 

Вывод: С использованием Модифицированного методоа Эйлера найдено приближенное решение задачи Коши для системы обыкновенных дифференциальных уравнений.. Рассмотрение различных случаев привело к выводу, что использование Модифицированного метода Эйлера позволяет получить лучшую точность решения (меньшую погрешность), чем у явногои неявного метода, так как они имеют один и тот же порядок точности. При увеличении N погрешность вычислений становится меньше. Тем самым при больших значениях данного параметра график функции, построенный с помощью Модифицированного методоа Эйлера будут приближаться к графику самого решения.

Листинг программы на языке Delphi:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Buttons, Functions;

type

TForm1 = class(TForm)

;

grp1: TGroupBox; edt_ modified_metod_y: TEdit; lbl1: TLabel; edt_ modified _metod_z: TEdit;

lbl2: TLabel; edt_ modified _meyod_y0: TEdit; lbl3: TLabel; edt_ modified _metod_z0: TEdit;

lbl4: TLabel; grp2: TGroupBox; cht_ modified _metod: TChart; lnsrs_ modified _metod_y: TLineSeries;

lnsrs_ modified _metod_z: TLineSeries; cht_ modified _metod: TChart; lnsrs_ modified _metod_y: TLineSeries;

lnsrs_ modified _metod_z: TLineSeries; Label6: TLabel;

procedure btn_ modified _metod_closeClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure btn_ modified _metod_solveClick(Sender: TObject);

procedure btn_ modified _metod_solveClick(Sender: TObject);

procedure btn_ modified _metod_grafikClick(Sender: TObject);

procedure GrafikTochn(l1,l2:Tlineseries);

procedure btn_ modified _metod_grafikClick(Sender: TObject);

procedure btn_ modified _metod_RungeClick(Sender: TObject);

procedure btn_ modified _metod_RungeClick(Sender: TObject);

end;

const hx=0.00001;

var

Form1: TForm1;

implementation

procedure TForm1.btn_ modified _metod_solveClick(Sender: TObject);

var h, xi, yi, zi:Real;

i,j:Integer;

begin

if input(edt_ modified _metod_y, edt_ modified _metod_z, edt_ modified _meyod_y0, edt_ modified _metod_z0, edt_ modified _metod_a, edt_ modified _metod_b, edt_ modified _metod_n, edt_ modified _metod_n) then

begin

lnsrs_ modified _metod_y.Clear; lnsrs_ modified _metod_z.Clear;

h:=(b-a)/n; yi:=y0; zi:=z0; xi:=a;

lnsrs_yavniy_ modified _y.AddXY(xi,yi); lnsrs_ modified _metod_z.AddXY(xi,zi);

for i:= 0 to n-1 do

begin

FuncInput(y,xi,yi,zi); FuncInput(z,xi,yi,zi);

yi:=yi+h*y.FuncCount; zi:=zi+h*z.FuncCount; xi:=xi+h;

lnsrs_ modified _metod_y.AddXY(xi,yi); lnsrs_ modified _metod_z.AddXY(xi,zi);

end;

end;

end;

 

 

procedure TForm1.btn_ modified _metod_Click(Sender: TObject);

var h, h2, xi, yi, zi, yi2, zi2, e2:Real;

i,k:Integer; flag:Boolean;

begin

if input(edt_ modified _metod_y, edt_ modified _metod_z, edt_ modified _metod_y0, edt_ modified _metod_z0, edt_ modified _metod_a, edt_ modified _metod_b, edt_v_metod_e, edt_ modified _metod_n) then

begin

e2:=StrToFloat(edt_neyavniy_metod_e2.Text);

h2:=(b-a)/n; flag:=True; k:=n;

while flag do

begin

k:=k*2; yi:=y0; yi2:=y0; zi:=z0; zi2:=z0; h:=h2; h2:=h/2; xi:=a;

while xi<b do

begin

xi:=xi+h

end; xi:=a;

while xi<b do

begin

xi:=xi+h2;

flag:=((Abs(yi2-yi)>=e2)or(Abs(zi2-zi)>=e2)) end;

edt_neyavniy_metod_h.Text:=FloatToStr(h2);

edt_neyavniy_metod_Nr.Text:=IntToStr(Trunc((b-a)/h2)+1); end;

end;

 

procedure TForm1.GrafikTochn(l1,l2:Tlineseries);

var h, xi, yi, zi:Real; i,j:Integer;

begin

l1.Clear; l2.Clear; h:=(b-a)/200; xi:=a;

for i:= 0 to 200 do

begin

yi:=Exp(xi);//2.5*(xi+0.8)-1.25*(xi+0.8)*(xi+0.8)-0.2;

zi:=xi+exp(xi);//0.2+5/4*(xi+0.8)*(xi+0.8);

l1.AddXY(xi,yi); l2.AddXY(xi,zi); xi:=xi+h; end;

end;

 

procedure TForm1.btn_ modified _metod_Click(Sender: TObject);

var h, h2, xi, yi, zi, yi2, zi2:Real; i,k:Integer; flag:Boolean;

begin

if input(edt_ modified _metod_y, edt_ modified _metod_z, edt_ modified _meyod_y0, edt_v_metod_z0, edt_ modified _metod_a, edt_ modified _metod_b, edt_ modified _metod_e2, edt_ modified _metod_n) then

begin

h2:=(b-a)/n; flag:=True; k:=n;

while flag do

begin

k:=k*2; yi:=y0; yi2:=y0; zi:=z0; zi2:=z0; xi:=a; h:=h2;h2:=h/2;

while xi<b do

begin

FuncInput(y,xi,yi,zi);FuncInput(z,xi,yi,zi); yi:=yi+h*y.FuncCount;

zi:=zi+h*z.FuncCount; xi:=xi+h;

end; xi:=a;

while xi<b do

begin

FuncInput(y,xi,yi2,zi2); FuncInput(z,xi,yi2,zi2);

yi2:=yi+h2*y.FuncCount; zi2:=zi+h2*z.FuncCount; xi:=xi+h2;

end;

flag:=((Abs(yi2-yi)>=e)or(Abs(zi2-zi)>=e)) end;

edt_ modified _metod_h.Text:=FloatToStr(h2);

edt_yav modified niy_metod_Nr.Text:=IntToStr(Trunc((b-a)/h2)+1);

end;

end.

Литература

1) Лекциии

2) http://physics.herzen.spb.ru/library/01/01/nm_labs/odeq.htm



<== предыдущая лекция | следующая лекция ==>
Подготовка к выполнению измерений | 
Поделиться с друзьями:


Дата добавления: 2017-02-25; Мы поможем в написании ваших работ!; просмотров: 333 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Даже страх смягчается привычкой. © Неизвестно
==> читать все изречения...

2456 - | 2156 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.