Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 20. 11. 2009 13:48

Fieldy
Příspěvky: 42
Reputace:   
 

Heunova metoda (matlab)

Zdravím, opět a zase jsem tu s numerickou matematikou řešenou pomocí Matlabu. Rád bych vás požádal o pomoc v řešení rovnice Heunovou metodou.

http://forum.matweb.cz/upload/1258721189-Heunova%20metoda.jpg

Eulerovu metodu jsem vyřešil, pokud by to někdo zkontroloval, budu jedině rád:)

Offline

 

#2 21. 11. 2009 11:26

Fieldy
Příspěvky: 42
Reputace:   
 

Re: Heunova metoda (matlab)

Výsledný graf Eulerovy metody:

http://forum.matweb.cz/upload/1258799147-graf.JPG

A k té Heunově metodě někdo neví?

Offline

 

#3 21. 11. 2009 21:40 — Editoval jelena (21. 11. 2009 21:44)

jelena
Jelena
Místo: Opava
Příspěvky: 30020
Škola: MITHT (abs. 1986)
Pozice: plním požadavky ostatních
Reputace:   100 
 

Re: Heunova metoda (matlab)

↑ Fieldy:

Zdravím, co uděláme s Heunovou metodou?

Pokud potřebuješ kód do MATLABu, a máš kód pro Eulera, tak by to mělo být dost podobné. Ovšem, jak víš, Matlab jako takový nemám ani neovládám, snad někdo z MATLAB týmu (kolegové plisna a gladiator01) se zapoji, děkuji :-)

Zadala jsem jednotlivé výpočty podle stejného materiálu (z Ostravy), do EXCELu, výstup mám, obecné řešení (ne numerické) jsem poslala řešit do MAW.

Tak upřesní, prosím, co bys konkrétně potřeboval vědet.

Metoda čtvercůbyla v pořádku? Děkuji.

EDIT: u zadané funkce však mi nevychází Lipschitz. podmínka - je to tak?

Offline

 

#4 22. 11. 2009 11:18

Fieldy
Příspěvky: 42
Reputace:   
 

Re: Heunova metoda (matlab)

↑ jelena: Zdravim, metoda čtverců dopadla úspěšně, drobné rozdíly ve výsledcích, ale vše bylo jen tím zaokrouhlováním v matici, takže děkuji moc. Tohle je posledni věc z numerické mat. které nerozumím. Na stránkach vsb je krásný postum pro Eulera, ten by měl být dobře snad, ale nenašel jsem nic k Heunově metodě. Určitě se bude jen drobně lišit zápis do matlabu, nebo možná drobná úprava ještě před dosazováním do matlabu. Tak budu doufat, že se kolegové plisna a gladiator01 ozvou s nějakou pomocnou radou:)

Jinak pokud dobře chápu to zadání. Rovnice je jasná, ale jedeme v intervalu (1,2)?

Offline

 

#5 22. 11. 2009 11:23 — Editoval jelena (22. 11. 2009 11:24)

jelena
Jelena
Místo: Opava
Příspěvky: 30020
Škola: MITHT (abs. 1986)
Pozice: plním požadavky ostatních
Reputace:   100 
 

Re: Heunova metoda (matlab)

↑ Fieldy:

Děkuji.

Heunova metoda je tady:  http://homel.vsb.cz/~kuc14/textyNM/FINALNI_VERZE_CD.pdf (str. 139) pdf, vzorec 7.3.1. Je to srozumitelné?

EDIT: Interval je od 1 (včetně) do 2 (včetně), krok h=0,05

Offline

 

#6 22. 11. 2009 13:15

Fieldy
Příspěvky: 42
Reputace:   
 

Re: Heunova metoda (matlab)

↑ jelena:Tohle mi do hlavy moc nejde, jelikož spíš pracujem s tím zápisem přes matlab....snad se ozve někdo přes Matlab, jelikož na internetu je vážně jen tohle

Offline

 

#7 22. 11. 2009 14:24

jelena
Jelena
Místo: Opava
Příspěvky: 30020
Škola: MITHT (abs. 1986)
Pozice: plním požadavky ostatních
Reputace:   100 
 

Re: Heunova metoda (matlab)

↑ Fieldy:

Pokud používaš tento zdroj:

http://mdg.vsb.cz/zmoravkova/NaSM/runge.html
http://mdg.vsb.cz/zmoravkova/NaSM/euler.html 

tak jediné, co potřebuješ je, po slovech "A vypočteme další hodnoty řešení metodou...": za použití vzorců z 7.3.1 napsat krok, jak se vypočte y_(i+1), x_(i+1). Nebo pracuješ s jiným zápisem?

Kolegy z matlab tymu "uvidím" velmi rada také :-)

---------------------
a mám svůj 5000. příspěvek (o souvislosti a smyslu mé sbírky příspěvků však se dá silně pochybovat)

Offline

 

#8 22. 11. 2009 14:28

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Heunova metoda (matlab)

↑ Fieldy:, ↑ jelena:: zdravim vas oba. ↑ Fieldy:: a v cem je konkretne problem? podle vztahu v pdf souboru, ktery navrhla jelena by to melo jit bez obtizi.

Offline

 

#9 22. 11. 2009 14:36

jelena
Jelena
Místo: Opava
Příspěvky: 30020
Škola: MITHT (abs. 1986)
Pozice: plním požadavky ostatních
Reputace:   100 
 

Re: Heunova metoda (matlab)

↑ plisna:

Zdravím srdečně :-)

-----
to je názorná úkazka, jak mi naskakuji počty příspěvků - ale nepozdravit kolegu plisna, to bych si neodpustila :-)

Offline

 

#10 22. 11. 2009 14:58

Fieldy
Příspěvky: 42
Reputace:   
 

Re: Heunova metoda (matlab)

↑ plisna: Zdravim, metodu Eulerovu jsem zvládl, pracoval jsem to podle zdroje http://homel.vsb.cz/~kuc14/teach_NM.html , je tu právě i ukázaný zapis Eulera do matlabu, ale o Heunově metodě a zápisu do matlabu ani zmínka, takže bych potřeboval poradit s tím zápisem do matlabu. Jinak k ↑ jelena: gratuluji k 5000 příspěvků, nemálo z nich mi pomohlo.

Offline

 

#11 22. 11. 2009 15:03

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Heunova metoda (matlab)

↑ Fieldy: navod:

resime rovnici $y' = \frac{y}{x} (y \ln x - 1)$ s PP $y(1) = \frac{1}{2}$ na intervalu $\langle 1, 2 \rangle$ s krokem $h = 0,05$. vysledky si budu ukladat do dvou vektoru: x a y.

1. nastavim $x_0$ a $y_0$ dle zadani, $x_0 = 1$, $y_0 = \frac{1}{2}$. tyto hodnoty ulozim na prvni pozice do vektoru x a y, tedy

Code:

x(1) = 1; y(1) = 0.5;

a nastavim

Code:

i = 1

2. spocitam si $k_1 = h \cdot f(x_i, y_i)$ a $k_2 = h \cdot f(x_i + h, y_i + k_1)$. ulozim do $x_{i+1} = x_i + h$ a do $y_{i+1} = y_i + \frac{1}{2}(k_1 + k_2)$.

3. zvetsim i o jednicku, tj.

Code:

i = i + 1;

pokud $x_i < b$ (kde $b$ je pravy hranicni bod intervalu, na kterem rovnici resime, v nasem pripade $b = 2$), pak jdi znovu na krok 2. jinak skonci, ve vektorech x a y je hledane reseni.

Offline

 

#12 22. 11. 2009 15:05

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Heunova metoda (matlab)

↑ Fieldy: zkus to dle meho vyse uvedeneho navodu napsat do matlabu a kdyz to nebude delat to, co ma, tak se ozvi.

Offline

 

#13 22. 11. 2009 15:08

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Heunova metoda (matlab)

↑ jelena:, ↑ Fieldy:: rovnez i ja srdecne gratuluji k 5 000. prispevku zde na foru

Offline

 

#14 22. 11. 2009 15:37

Fieldy
Příspěvky: 42
Reputace:   
 

Re: Heunova metoda (matlab)

↑ plisna: Tak nejsem si zcela jisty postupem, ale asi je někde chyba, posílam můj zápis:

>> h=0.05; x(1)=1; y(1)=0.5;
>> i=1;
>> k1=h*((y(1)/x(1))*(y(1)*log(x(1))-1))
k1 =-0.0250
>> k2=h*(y(1)+k1)*((y(1)+k1)*(log(x(1))+h)-1)/(x(1)+h)
k2 =-0.0221

Dále si nejsem uplně jist jak pokračovat a hlavně jestli ty k1,2 jsou dobře.

Offline

 

#15 22. 11. 2009 16:14

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Heunova metoda (matlab)

↑ Fieldy: no dobre to je, ale takto nic nenaprogramujes. musis si na to napsat programek do tzv. m-souboru, ktery pak spustis, ty to zrejme zapisujes do command window primo, coz je v tomto pripade chyba, protoze by jsi musel vypsal vsech 20 prepocitani konstant k1 a k2 rucne. pouzije se na to totiz vhodny cyklus a matlab tech 20 kroku udela "sam". umis cykly pouzivat?

Offline

 

#16 22. 11. 2009 19:04

Fieldy
Příspěvky: 42
Reputace:   
 

Re: Heunova metoda (matlab)

↑ plisna: ten cyklus jsem v Eulerove metode zapisoval takhle:

>> for i=1:20, x(i+1)=x(i)+h, y(i+1)=y(i)+h*(y(i)*(y(i)*log(x(i))-1)/x(i)), end

ale nevim presne jak to zapsat s tema k, aby mi vysly hodnoty x,y, diky kterym pak sestrojim ten graf.

Offline

 

#17 22. 11. 2009 20:20

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Heunova metoda (matlab)

↑ Fieldy: a ty m-soubory psat umis? protoze delat to cele pres command window je dost blaznovstvi.

Offline

 

#18 22. 11. 2009 20:41

Fieldy
Příspěvky: 42
Reputace:   
 

Re: Heunova metoda (matlab)

↑ plisna: to mi nic neříka, bohužel. Všechno jsme řešili  v tom command window. Tam už jde o to jen správně napsat ten cyklus né?, nebo alespoň u toho Eulera to bylo celkem krátký ten zápis. Cyklus pro pro i=1 do 20 a pak si nechat vypsat body, graf a hotovka, ale tady vážne nevím.

Offline

 

#19 22. 11. 2009 21:02 — Editoval jelena (22. 11. 2009 21:19)

jelena
Jelena
Místo: Opava
Příspěvky: 30020
Škola: MITHT (abs. 1986)
Pozice: plním požadavky ostatních
Reputace:   100 
 

Re: Heunova metoda (matlab)

↑ Fieldy: děkuji za blahopřání k rekordu :-)

Vstupní data, jak uvádiš, cyklud - dala bych tam takový:
(1 až n nebo ve tvém provedení od 1 do 20, pokud nemáš zadan výpočet pro n)

>> for i=1:n
K(1)=h*((y(i)/x(i))*(y(i)*(log(x(i)-1));
K(2)=h*(y(i)+K(1))*((y(i)+K(1))*(log(x(i)+h)-1))/(x(i)+h);
y(i+1)=y(i)+(K(1)+K(2))/2;
x(i+1)=x(i)+h;
end

nebo pro případ, že máš zadefinovanou funkci f(x, y).

>> for i=1:n
K(1)=h*f(x(i), y(i));
K(2)=h*f((x(i)+h), y(i)+K(1));
y(i+1)=y(i)+(K(1)+K(2))/2;
x(i+1)=x(i)+h;
end

Může být?

EDIT: opravila jsem ln (kopírováno z EXCELu) na log

------------------

Pro kolegu plisna: také děkuji za blahopřání (ovšem nevím, zda je to opravdu důvod k radosti nebo k zamyšlení - zamyšlení mi nejde, tak se budu radovat :-) Ale dotaz - jak to je s ověřením Lipschitz. podminky ↑ jelena:? Děkuji.

Offline

 

#20 22. 11. 2009 21:03

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Heunova metoda (matlab)

Code:

>> x(1) = 1;
>> y(1) = 0.5;
>> h = 0.05;
>> f = @(x, y) y * (y * log(x) - 1) / x; 
>> for i = 1:20; k1 = h * f(x(i), y(i)); k2 = h * f(x(i) + h, y(i) + k1); x(i + 1) = x(i) + h; y(i + 1) = y(i) + 0.5 * (k1 + k2); end
>> plot(x, y);

Offline

 

#21 22. 11. 2009 23:39

Fieldy
Příspěvky: 42
Reputace:   
 

Re: Heunova metoda (matlab)

↑ plisna:↑ jelena: JJ to je přesně ono, takhle bych to podle těch zdrojů vsb asi určitě neposkládal. Takže děkuji moc, ve středu budu klasicky konzultovat s vyučujícím :) Přeji dobrou noc a ještě jednoz veliké díík

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson