Výběr vývojového prostředí. kde y je požadovaná funkce, x je nezávislá proměnná, f(x,y) je spojitá funkce x a y. Analytické řešení této rovnice však není možné získat pro dostatečně libovolnou funkci f a pouze pro některé speciální případy

Nechť je dána diferenciální rovnice prvního řádu

s počáteční podmínkou

y(x 0) = y 0.

Zvolme krok h a zavedeme následující zápis:

x i = x 0 + i. ha y i = y(x i),

kde i = 0, 1, 2, …

x i – uzly mřížky,

y i - hodnota integrální funkce v uzlech .

Diferenciální rovnice se řeší podobně jako výše popsané metody. Rozdíl je v tom, že krok je rozdělen na 4 části.

Podle metody čtvrtého řádu Runge–Kutta postupné hodnoty y i požadovanou funkci y jsou určeny vzorcem:

, i = 0, 1, 2, …

a čísla k 1 (i), k 2 (i), k 3 (i), k 4 (i) v každém kroku se počítají pomocí vzorců:

Toto je explicitní čtyřkroková metoda s přesností čtvrtého řádu.

Metody Runge–Kutta se snadno programují a mají značnou přesnost a stabilitu pro širokou škálu problémů.

Obrázek 6 ukazuje vývojový diagram postupu RUNGE(X0; XK; Y0; N; Y) k vyřešení Cauchyho problému pomocí metody Runge–Kutta popsané výše.


i = 0, …, N-1

K1 = h * F(x, Yi)

K2 = h * F(x + h/2, Yi + K1 / 2)

K3 = h * F(x + h/2, Yi + K2 / 2)

K4 = h * F(x + h, Yi + K3)

K = (K1 + 2*K2 + 2*K3 + K4) / 6

Obrázek 6 - Vývojový diagram procedury RUNGE

Obrázek 7 ukazuje blokové schéma algoritmu hlavního programu pro řešení Cauchyho problému a získání výsledků s pevným počtem segmentů N. V hlavním programu se procedura nazývá RUNGE(X0; XK; Y0; N; Y); výpočet hodnoty požadované funkce y j v bodech x j metodou Runge–Kutta.

Počáteční údaje v tomto problému jsou:

X0, XK – počáteční a konečné hodnoty nezávisle proměnné;

Y0 – hodnota y 0 z výchozího stavu y(x 0) = y 0;

N – počet segmentů oddílu.

Výsledky programu jsou zobrazeny ve dvou sloupcích:

X – pole hodnot uzlu mřížky;

Y – pole hodnot hledaného řešení v odpovídajících uzlech mřížky.


Vstup X0, XK, Y0, N


RUNGE(X0;XK;Y0;N;Y)


i=0…N


Výstup X, Y i


Obrázek 7 - Blokové schéma hlavního programového algoritmu pro řešení Cauchyho problému s pevným počtem segmentů N


Řešení diferenciálních rovnic v MathCad

Obrázek 8 - Příklad řešení diferenciální rovnice pomocí metody

Runge-Kutta 4 objednává v prostředí MathCad.

Grafické funkce v prostředí Visual Basic

Úloha tabelování funkcí a sestavení jejich grafů je jedním z hlavních úkolů v procesu řešení obyčejných diferenciálních rovnic. Zvažme tento úkol podrobněji.

Úkol.

Sestrojte graf funkce y=sin(x) na segmentu. Proveďte tabelační krok rovný h.

Řešení.

Pro vykreslení funkčního grafu v prostředí Visual Basic je vhodné použít některé grafické komponenty.

Obrázek 9 - Umístění hlavních součástí v okně Obecné



Komponenta Picture Box() se používá jako kontejner pro vykreslování. Jedná se o matici bodů (pixelů), přičemž je možné ovládat barvu každého jednotlivého bodu. Souřadnice libovolného bodu jsou určeny dvojicí celých čísel - jeho pořadovým číslem v řádku X a pořadovým číslem řádku uvnitř objektu Y Tedy souřadnice levého horního rohu komponenty jsou (0, 0). . Počet bodů na řádek a počet řádků jsou určeny velikostí komponenty.

Obrázek 10 - Souřadnice objektu PictureBox

Na Obr. Obrázek 10 ukazuje umístění os a souřadnice rohových bodů objektu.

Komponenta Line() se používá k vykreslení os a segmentů polygonálního grafu funkce.

Podstata konstrukce grafu spočívá v tom, že funkce musí být prezentována ve formě tabulky (tabulkové) a poté označeny body na šabloně grafu a spojeny dohromady.

Algoritmus pro konstrukci funkčního grafu je znázorněn na obrázku 12. Algoritmus lze upravit. Zejména mohou být některé postupy kombinovány a postup může být v některých případech změněn.

Podívejme se na algoritmus podrobněji.

Před implementací algoritmu je nutné popsat funkci podprogramu pro vykreslení grafu. To je nezbytné pro usnadnění úprav programu. Pokud potřebujete vykreslit graf jiné funkce, stačí změnit podprogram.

Před vykreslením grafu je také nutné vytvořit a upravit formulář. Příklad vývoje formuláře je na obrázku 11. Na formulář je potřeba umístit komponenty pro zadání počátečních dat, komponentu pro tisk tabulky, příkazové tlačítko a kontejner pro umístění grafu (PictureBox). Uvnitř PictureBoxu musíte nakreslit souřadnicové osy pomocí přímých čar a umístit popisky, abyste zaznamenali hranice segmentu hodnot argumentů funkcí a extrémů funkce na dotyčném segmentu.

Zadání počátečních dat se provádí v příslušném programu stisknutím příkazového tlačítka. Velmi často je zadávání dat implementováno pomocí komponenty TextBox.

Je vhodné provádět postup tabelování funkcí ve smyčce s parametrem, protože je znám počet bodů grafu, které se mají vypočítat. Před provedením procedury musíte nastavit počet řádků tabulky.

Počet řádků se vypočítá podle vzorce k=n+2, kde k je počet řádků a n je počet oddílů tabulky. Počet řádků musí být větší než počet segmentů o 2, protože je nutné vzít v úvahu počáteční bod (nulu) a řádek pro záznam záhlaví sloupců stránky.

V samotném postupu tabelování můžete kombinovat dvě akce - tabelaci a výpočet extrémů. Toto řešení je znázorněno ve výpisu programu na obrázku 13.

Hlavním problémem při vykreslování je přechod od matematické hodnoty funkce a argumentu k souřadnicím obrazovky použitým k vykreslení grafu. Při řešení tohoto problému je nutné vzít v úvahu opačný směr os na matematickém grafu a na objektu PictureBox a nutnost změnit měřítko obrázku.

Faktory měřítka grafu se počítají pomocí následujících vzorců:

kde kx je měřítko podél osy OX,

NPX – počet pixelů objektu PictureBox přidělených pro horizontální vykreslování,

a – počáteční hodnota segmentu argumentu funkce,

b – konečná hodnota segmentu argumentu funkce.

,

kde Ky je měřítko podél osy OY,

NPY – počet pixelů objektu PictureBox přidělených pro sestavení vertikálního grafu,

min – minimální hodnota funkce,

max – maximální hodnota funkce.

Převod matematických souřadnic aktuálního bodu do souřadnic obrazovky se provádí pomocí vzorců:

zx = kulaté(ox + (x(i) - a) * kx),

zy = kolo(oy - (y(i) - Min) * ky),

kde zx, zy – souřadnice aktuálního bodu na obrazovce,

ox, oy - souřadnice průsečíku os v komponentě pictureBox,

x(i), y(i) – matematické souřadnice aktuálního bodu,

kx, ky – faktory měřítka.

Ve vzorci pro výpočet souřadnic obrazovky aktuálního bodu se znaménko mínus používá pro zohlednění opačného směru os (na obrazovce a v grafu).

Výpis programu pro vykreslení funkce je na obrázku 13.

Příklady formulářů s výsledky programu pro různá počáteční data jsou na obrázcích 14 a 15.

Obrázek 11 - Příklad vývoje formuláře

Obrázek 12 - Algoritmus pro vykreslení funkčního grafu

Rem Popis proměnných

Dim x() As Single, y() As Single

Soukromý jako svobodný

Nechť je dána diferenciální rovnice prvního řádu s počáteční podmínkou y(x 0)=y 0. Zvolme krok h a zaveďme zápis:

x i = x 0 + ih a y i = y(x i), kde i = 0, 1, 2, ....

Podobně jako u výše popsané metody se připraví řešení

diferenciální rovnice. Rozdíl je v tom, že krok je rozdělen na 4 části.

Podle metody Runge-Kutta čtvrtého řádu jsou po sobě jdoucí hodnoty y i požadované funkce y určeny vzorcem:

y i+1 = y i +?y i

kde i = 0, 1, 2 ...

Y=(k1+2*k2+2*k3+k4)/6

čísla k1, k2, k3, k4 v každém kroku se vypočítají pomocí vzorců:

k1 = h*f(x i, y i)

k2 = f (xi +h/2, yi +k1/2)*h

k3 = F(xi +h/2, yi +k2/2)*h

k4 = F(xi +h, yi +k3)*h

Toto je explicitní čtyřkroková metoda se 4 řády přesnosti.

Vývojový diagram postupu řešení diferenciální rovnice metodou Runge-Kutta je na obrázku 6. Obr.

F(x, y) - daná funkce - musí být popsána samostatně.

Vstupní parametry:

X0, XK - počáteční a koncové

hodnoty nezávislé

proměnná;

Y0 - hodnota y 0 z počáteční podmínky

N - počet segmentů oddílu;

Výstupní parametry:

Y - pole hodnot požadovaného řešení

v uzlech mřížky.

Algoritmus pro řešení problému

Řešení v MathCADu

Výpis programu v jazyce Visual Basic

Dim xr(), yr(), xe(), ye(), xo(), yo() Jako Single

Soukromé x0, y0, h, xk, k1, k2, c, k3, k4, yd Jako svobodný

Soukromé n, i Jako celé číslo

Veřejná funkce f(ByVal a, ByVal b) Jako Single

f = - (a - b) / a

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

x0 = Val(TextBox1.Text)

xk = Val(TextBox2.Text)

y0 = Val(TextBox4.Text)

h = Val(TextBox3.Text)

n = (xk - x0) / h

c = y0 / x0 + Math.Log(x0)

DataGridView1.ColumnCount = 4

DataGridView1.RowCount = n + 2

DataGridView1.Item(0, 0).Value = "x"!}

DataGridView1.Item(1, 0).Value = "Obecné"!}

DataGridView1.Item(2, 0).Value = "Euler M"!}

DataGridView1.Item(3, 0).Value = "Runge Kutt"!}

Pro i = 0 až n - 1

xe(i) = Math.Round((xe(0) + i * h), 2)

ye(i + 1) = ye(i) + h * f(xe(i) + h / 2, ye(i) + h / 2 * f(xe(i), ye(i)))

DataGridView1.Item(2, 1).Value = ye(0)

DataGridView1.Item(0, 1).Value = xe(0)

DataGridView1.Item(0, i + 1).Value = xe(i)

DataGridView1.Item(2, i + 1).Value = Str(ye(i))

Pro i = 0 až n - 1

xr(i) = Math.Round((xe(0) + i * h), 2)

k1 = h * f(xr(i), yr(i))

k2 = h * f(xr(i) + h / 2, yr(i) + k1 / 2)

k3 = h * f(xr(i) + h / 2, yr(i) + k2 / 2)

k4 = h * f(xr(i) + h, yr(i) + k3)

yd = (k1 + 2 * k2 + 2 * k3 + k4) / 6

yr(i + 1) = yr(i) + yd

DataGridView1.Item(3, 1).Value = yr(0)

DataGridView1.Item(3, i + 1).Value = Str(yr(i))

Pro i = 0 až n - 1

xo(i) = Math.Round((xe(0) + i * h), 2)

yo(i) = xo(i) * (c - Math.Log(xo(i)))

DataGridView1.Item(1, 1).Value = yo(0)

DataGridView1.Item(1, i + 1).Value = Str(yo(i))

Chart1.Series.Add("Obecné řešení")

Chart1.Series("Obecné řešení").ChartType = SeriesChartType.Line

Pro i = 0 až n - 1

Chart1.Series("Obecné řešení").Body.AddXY(xo(i), yo(i))

Chart1.Series("Obecné řešení").ChartArea = "ChartArea1"

Chart1.Series.Add("Euler M")

Chart1.Series("Euler M").ChartType = SeriesChartType.Point

Pro i = 0 až n - 1

Graf1.Série("Euler M").Points.AddXY(xe(i), ye(i))

Chart1.Series("Euler M").ChartArea = "ChartArea1"

Chart1.Series("Euler M").Barva = Barva.Modrá

Chart1.Series.Add("Runge Kutt")

Chart1.Series("Runge Kutt").ChartType = SeriesChartType.Line

Pro i = 0 až n - 1

Chart1.Series("Runge Kutt").Points.AddXY(xr(i), yr(i))

Chart1.Series("Runge Kutt").ChartArea = "ChartArea1"

Chart1.Series("Runge Kutt").Barva = Barva.Zelená

Odeslat svou dobrou práci do znalostní báze je jednoduché. Použijte níže uvedený formulář

Studenti, postgraduální studenti, mladí vědci, kteří využívají znalostní základnu ve svém studiu a práci, vám budou velmi vděční.

Zveřejněno na http://www.allbest.ru/

FEDERÁLNÍ státní AUTONOMNÍ vzdělávací instituce Vyšší odborné vzdělání

„BELGOROD STÁTNÍ NÁRODNÍ

VÝZKUMNÁ UNIVERZITA"

Ústav strojírenských technologií a přírodních věd

Katedra matematických a softwarových informačních systémů

softwarová implementace řešení soustavy obyčejných diferenciálních rovnic metodou 4. řádu Runge-Kutta

Práce na kurzu

v disciplíně "Metody výpočtů"

student na plný úvazek

oblasti školení 010500.62

„Matematická podpora a administrativa

informační systémy"

Skupina 3. ročníku 07001302

Dankov Nikolaj Alekseevič

BELGOROD 2016

Úvod

1. Teoretická část

1.1 Obyčejná diferenciální rovnice 1. řádu. Cauchy problém

1.2 Podstata metody Runge-Kutta

1.3 Výběr vývojového prostředí

2. Praktická část

2.1 Softwarová implementace metody 4. řádu Runge-Kutta

3. Testování

3.1 Příklad

Závěr

aplikace

Úvod

Při studiu široké škály jevů v okolním světě, souvisejících jak s exaktními, tak s humanitními vědami, se výzkumníci v řadě případů potýkají se skutečností, že funkční závislosti mezi veličinami jsou zjišťovány z rovnic, ve kterých jsou odvozeny derivace požadovaných funkcí. současnost, dárek. Nejjednodušší z nich jsou ty, které obsahují pouze odvozeniny prvního řádu a lze je zapsat ve tvaru

= f(x, y),

kde y je požadovaná funkce, x je nezávislá proměnná, f(x,y) je spojitá funkce x a y. Analytické řešení této rovnice však není možné získat pro zcela libovolnou funkci f a pouze pro některé speciální případy, které lze nalézt v referenční literatuře.

V důsledku rychlého rozvoje elektronické výpočetní techniky v posledních desetiletích bylo možné k řešení problémů tohoto druhu používat přibližné matematické metody. Jeden z těchto přístupů se nazývá metoda Runge-Kutta a kombinuje celou skupinu modifikací souvisejících se způsobem jejich přípravy.

Účel práce v kurzu: prostudovat Runge-Kuttovu metodu 4. řádu pro řešení obyčejných diferenciálních rovnic.

Zadání úlohy: je nutné vytvořit program, který umožní řešení obyčejných diferenciálních rovnic metodou 4. řádu Runge-Kutta.

Práce se skládá ze 3 oddílů, obsahuje 6 kreseb, 3 výpisy, 1 přílohu a 18 stran.

1. Teoretická část

1.1 Obyčejná diferenciální rovnice 1. řádu. Cauchy problém

Pro jednoduchost uvažujeme dvourozměrný prostor proměnných x a y a nějakou otevřenou množinu G, která k němu patří. Nechť je na této otevřené množině definována spojitě diferencovatelná funkce f(x, y) a dána rovnice

= f(x, y) (1)

Podle věty o existenci a jednoznačnosti pro libovolný bod (x 0 ,y 0) ?G existuje řešení y = y(x), definované na určitém intervalu (x 0 -d, x 0 +d), splňující podmínka y(x 0) = y 0, takže body (x,y(x)) ?G a y` x ? f(x, y(x)) a toto řešení bude jedinečné. Problém pro rovnici (1) s počáteční podmínkou y(x 0) = y 0 (Cauchyho problém) je najít funkci y(x), která změní rovnici (1) i počáteční podmínku na identitu. Předpokládejme, že hodnoty nabývané nezávisle proměnnou x patří do intervalu (X 0, X N) a napište Cauchyho problém:

(2)

Rozdělme segment [X 0, X N] na N částí tak, aby x n +1 - x n = h n,

n = 0, …,N-1. V následujícím budeme bez ztráty obecnosti uvažovat případ, kdy je předěl rovnoměrný, tzn. všechny h n = h = = konst,

n = 0,…,N-1.

1.2 Podstata metody Runge-Kutta

Metody Runge-Kutta jsou široce používány při řešení diferenciálních rovnic. Nejpoužívanější metodou je metoda 4. řádu.

(3)

(4)

(5)

- parametr, který určuje hodnotu funkce blízko bodu v definiční oblasti.

Běžná metoda 4. řádu:

(6)

(7)

(8)

(9)

(10)

Chyba vzorce (10) je úměrná h 5 .

Tato metoda je mnohem přesnější než Eulerovy metody, ale vyžaduje také více výpočtů: poloha bodu (x i +1, y i +1) se určí tak, že se hodnota funkce f (x,y) vypočítá 4krát. S příchodem počítačů přestal být tento nedostatek významný a metoda 4. řádu Runge-Kutta se v praxi používá extrémně široce.

Počet mikrosegmentů, na které je původní segment rozdělen, je určen požadovanou přesností výpočtu. Pro dosažení požadované přesnosti je úloha řešena několikrát s postupně zdvojnásobeným počtem mikrosegmentů n. Přesnost se považuje za dosaženou, pokud se s počátečním a zdvojnásobeným číslem n hodnoty y i a y 2i (ve shodných bodech x) neliší o více než danou hodnotu:

, i = 0, .., n, (11)

kde p je řád přesnosti metody.

Metoda Rugne-Kutta má následující vlastnosti:

1. Metoda je jednokroková (k nalezení potřebujete informace o předchozím bodu)

2. Nevyžaduje výpočet derivací f(x,y), ale vyžaduje výpočet samotné funkce

3. Má malou chybu

1.3 Výběr vývojového prostředí

C++ Builder je softwarový produkt, nástroj pro rychlý vývoj aplikací (RAD), integrované programovací prostředí (IDE), systém používaný programátory k vývoji softwaru v programovacím jazyce C++. Tento produkt umožňuje vytvářet jak konzolové aplikace, tak aplikace s grafickým rozhraním.

Microsoft Visual Studio je řada produktů společnosti Microsoft, která zahrnuje integrované prostředí pro vývoj softwaru a řadu dalších nástrojů. Pomocí tohoto produktu můžete vyvíjet konzolové aplikace, GUI aplikace, ale i webové stránky, webové aplikace, webové služby v nativním i spravovaném kódu pro všechny platformy podporované Windows, Windows Mobile, Windows CE, NET Framework, Xbox, Windows Phone .NET Compact Framework a Silverlight.

Pro splnění úkolu byl vybrán softwarový produkt C++ Builder. Protože se snáze používá a splňuje všechny potřebné požadavky pro vytvoření konzolové aplikace.

2. Praktická část

2.1 Softwarová implementace metody Prknge-Kutta 4. řádu

diferenciální rovnice Cauchyho programování

Vývoj programu začíná popisem funkcí. K tomu použijeme příkaz switch.

Výpis 1 „popis funkcí“

dvojité s=0;

vypínač (tip)(

případ 1 :(

přestávka; )

případ 2 :(

přestávka; )

případ 3 :(

přestávka; )

případ 4 :(

s = a*(b*x+c*y)/(e*f)*d;

přestávka; )

výchozí:

(s =0; )

}

návrat s;

}

Poté následuje deklarace a inicializace proměnných, které se účastní výpočetního procesu: koeficienty rovnice, hranice segmentů, krok, počáteční podmínka.

Po získání všech potřebných dat přistoupíme přímo k řešení ODR metodou 4. řádu Runge-Kutta.

Výpis 2 „softwarová implementace řešení ODR pomocí metody Runge-Kutta

4. řád"

pro (i=0;i<=n;i++) {

x=x[i]+h;

cout<<"y"<

}

3. Testování

Po spuštění programu uvidíme rovnice nabízené k výběru.

Rýže. 1 "výběr rovnic"

Pokud zadáte číslo, které neodpovídá uvedeným číslům rovnic, program na to zareaguje.

Rýže. 2 „zadání nesprávného parametru“

Po výběru požadované rovnice zadejte koeficienty.

Rýže. 3 „vstupní koeficienty“

Dále zadáme začátek a konec segmentu, na kterém bude výpočet proveden, krok a počáteční podmínku. Poslední parametr musí uživatel zvolit samostatně.

Rýže. 4 „zadání požadovaných parametrů“

Po dokončení výpočtu program zobrazí řešení.

Rýže. 5 „výsledný výstup“

3.1 Příklad

Vyřešte Cauchyho problém:

na segmentu. Najděte řešení na jednotné mřížce s krokem 0,1

Řešení. Protože f(x,y) = x + y, dostáváme

= + ,

= ++ ,

= ++ ,

= +h+,

= +() ,

= +h,

pro hodnoty i = 1, 2, 3, 4.

Za předpokladu = 0, = 1 postupně zjistíme:

pro i = 1

= 0,1(0 +1) = 0,1 ,

= 0,1(0 + 0,05 +1 + 0,05) = 0,11 ,

= 0,1(0 + 0,05 +1 + 0,055) = 0,1105 ,

= 0,1(0 + 0,1 +1 + 0,1105) = 0,121050 ,

= 1 + *(0,1 + 2*0,11+2*0,1105 + 0,12105) = 1,110342 ,

= 0+0,1=0.1 ,

při i = 2

= 0,1*(0 + 1,110342) = 0,121034 ,

= 0,1*(0,1 + 0,05 +1,110342 + 0,0605171) = 0,1320859 ,

= 0,1*(0,1 + 0,05+1,110342 + 0,06604295) = 0,1326385 ,

= 0,1*(0,1 + 0,1 + 1,110342 + 0,11326385)= 0,1442980 ,

= 1,110342 + *(0,121034 + 2*0,1320859+2*0,1326385 + 0,1442980) = 1,242805 ,

= 0,1+0,1 ,

Dále dostaneme:

s i = 3 = 0,3, = 1,399717,

při i = 4 = 0,4, = 1,583648.

Chyba získaného řešení nepřesahuje hodnotu

|y 4 - q(x 4) | ? 0,000001.

Pro přehlednost uvádí Tabulka 1 numerická řešení stejného Cauchyho problému pomocí Eulerovy, Euler-Cauchyho a Runge-Kuttovy metody.

Tabulka 1 Numerická řešení Cauchyho úlohy pomocí různých metod

Hodnoty nalezené metodou

Přesné řešení

c(xi)=2-xi-1

Euler - Cauchy

Runge - Kutta

Nyní porovnejme získané výsledky s výpočty našeho programu.

Rýže. 6 „výsledek programu“

Jak vidíme z příkladu, přesnost výpočtu je zachována až na páté desetinné místo.

Závěr

V průběhu kurzu byl realizován zadaný úkol, konkrétně byl sestaven program umožňující řešení obyčejných diferenciálních rovnic metodou 4. řádu Runge-Kutta.

Při testování programu byly získány výsledky, které ukazují, že výsledky řešení metodou Runge-Kutta 4. řádu se s dostatečnou přesností shodují s výsledky analytickými.

Seznam použitých zdrojů

1. Berezin I.S., Zhidkov N.P., Výpočtové metody: T.2 - M.: GIFML, 1960. - 620 s.

2. Bakhvalov N. S., Zhidkov N. P., Kobelkov G. M. Numerické metody. - M.: Binom, 2001 - str. 363-375.

3. Kopchenova N.V., Maron I.A., Výpočtová matematika v příkladech a úlohách - M.: Nauka, 1972. - 368 s.

4. https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio

5. https://ru.wikipedia.org/wiki/C%2B%2B_Builder

Příloha 1

#zahrnout

#zahrnout

#zahrnout

#zahrnout

pomocí jmenného prostoru std;

char* rus(const char* text) (

char *buffRus=nový znak;

CharToOem(text, buffRus);

return buffRus;

}

double func(int tip,double x,double y,double a,double b,double c,double d,double e,doublef) (

dvojité s=0;

vypínač (špička) (

případ 1 :(

s = a+b*(y*c*sin(d*x))-(e*y*f*y);

přestávka; )

případ 2 :(

s =a*cos(b*x+c*y)+d*(e*x-f*y);

přestávka; )

případ 3 :(

s=((a*cos(b*x)/(x+c))-(d*y*e*y)*f);

přestávka; )

případ 4 :(

s = a*(b*x+c*y)/(e*f)*d;

přestávka; )

výchozí:

(s =0; )

}

návrat s;

}

int main() (

int tip, i=0, n=0;

dvojité h=0,0, ot1=1,0, ot2=0,0, k1=0,0, k2=0,0, k3=0,0, k4=0,0, a=1,0, b=1,0, c=1,0, d=1,0, e=1,0, f =1,0, res=0,0;

bool flag=0;

cout<

cout<<" 1. y"=a+b*(y*c*sin(d*x))-(e*y*f*y)\n 2. y"=a*cos(b*x+c*y)+d*(e*x-f*y)\n 3. y"=((a*cos(b*x)/(x+c))-(d*y*e*y)*f)\n 4. y"=a*(b*x+c*y)/(e*f)*d\n";

zatímco (!vlajka) (

cout<

cin>>tip;

if((tip == 1) || (tip == 2) || (tip == 3) || (tip == 4))(

příznak=1; )

jiný(

cout<

}

}

cout<

cout<<" a= ";cin>>a;

cout<<" b= ";cin>>b;

cout<<" c= ";cin>>c;

cout<<" d= ";cin>>d;

cout<<" e= ";cin>>e;

cout<<" f= ";cin>>f;

cout<

zatímco (ot1>ot2) (

cout<

návrat 0;

}

Dodatek 2

Publikováno na Allbest.ru

Podobné dokumenty

    Analýza předmětové oblasti objektově orientovaného programování. Jazyky Delphi, Object Pascal - objektově orientované programovací prostředí. Základní algoritmická řešení. Řešení diferenciální rovnice metodou Runge-Kutta v Excelu.

    práce v kurzu, přidáno 04.02.2011

    Kompilace programu v algoritmickém jazyce Turbo Pascal. Vývoj blokového diagramu algoritmu pro jeho řešení. Kompilace počátečního programu Pascal a implementace výpočtů pomocí zkompilovaného programu. Aplikace metod Runge-Kutta a Runge-Kutta-Merson.

    práce v kurzu, přidáno 17.09.2009

    Podstata metody Runge-Kutta a její vlastnosti. Řešení diferenciálních rovnic prvního řádu. Daný/Odesolve výpočetní blok. Vestavěné funkce rkfixed, Rkadapt, Bulstoer. Řešení lineárních algebraických rovnic v MathCad a Microsoft Excel.

    práce v kurzu, přidáno 02.06.2014

    Přehled metod řešení v Excelu. Rekurzivní vzorce Eulerovy metody. Metoda čtvrtého řádu Runge-Kutta pro řešení rovnice prvního řádu. Eulerova metoda s krokem h/2. Řešení diferenciálních rovnic pomocí Mathcadu. Modifikovaná Eulerova metoda.

    práce v kurzu, přidáno 18.01.2011

    Matematický popis problému řešení obyčejné diferenciální rovnice pomocí numerické explicitní metody Runge-Kutta, vývoj algoritmu diagramu a psaní programu v programovacím prostředí Microsoft Visual Studio 2010 Testování programu.

    práce v kurzu, přidáno 22.01.2014

    Implementace řešení obyčejných diferenciálních rovnic 1. a 2. řádu metodou Runge-Kutta. Konstrukce na počítači systému pro zobrazování výsledků v tabulkové formě a ve formě grafu. Architektura a požadavky na vyvíjený software.

    práce v kurzu, přidáno 11/05/2011

    Řešení diferenciálních rovnic prvního řádu. Varianty metod Runge-Kutta různých řádů. Základní metody numerického řešení Cauchyho úlohy. Zvýšení přesnosti výpočtů a metoda iterativního zpřesňování. Diskrétní číselná posloupnost.

    laboratorní práce, přidáno 14.05.2012

    Numerické metody řešení Cauchyho úlohy pro obyčejné diferenciální rovnice: Euler, Runge-Kutta, Adams a Runge. Techniky pro přibližné řešení těchto rovnic: metoda konečných diferencí, diferenční rozmítání, kolokace; analýza výsledků.

    práce v kurzu, přidáno 14.01.2014

    Analýza výhod a nevýhod různých numerických metod pro řešení diferenciálních rovnic vyšších řádů. Odůvodnění pro volbu metody Runge-Kutta čtvrtého řádu. Vývoj programu, který modeluje fyzikální a matematické chování kyvadla.

    práce v kurzu, přidáno 7.11.2012

    Řešení diferenciálních rovnic pomocí klasických algoritmů numerických metod Eulera a Runge-Kutty 4. řádu. Příkazy používané při řešení obyčejných diferenciálních rovnic ve výpočetním systému. Výsledek programu.




Horní