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
Stránky: 1
↑ 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
↑ 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
↑ 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
↑ 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
↑ 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
↑ 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
↑ Fieldy: navod:
resime rovnici
s PP
na intervalu
s krokem
. vysledky si budu ukladat do dvou vektoru: x a y.
1. nastavim
a
dle zadani,
,
. tyto hodnoty ulozim na prvni pozice do vektoru x a y, tedy
x(1) = 1; y(1) = 0.5;
a nastavim
i = 1
2. spocitam si
a
. ulozim do
a do
.
3. zvetsim i o jednicku, tj.
i = i + 1;
pokud
(kde
je pravy hranicni bod intervalu, na kterem rovnici resime, v nasem pripade
), pak jdi znovu na krok 2. jinak skonci, ve vektorech x a y je hledane reseni.
Offline
↑ 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
↑ 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
↑ 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
↑ 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
↑ 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
>> 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
Stránky: 1