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 27. 01. 2010 13:10

iv21
Zelenáč
Příspěvky: 1
Reputace:   
 

nelineární regrese

nevíte si náhodou pls někdo rady s tímto příkladem?

jedná se o nelineární regresi a máme to řešit v excelu pomocí řešitele. Jsou dány hodnoty x, y a funkce, máme zjistit hodnoty parametru A, a, b.

$y=A*sin(ax)*e^{-bx}$

x    0    0,3      0,6     0,9     1,2      1,5        1,8       2,1       2,4       2,7       3
y    0    1,56   2,08    1,73    1,14    0,26    -0,58    -0,72    -0,9    -0,64    0,05

diky moc

Offline

 

#2 27. 01. 2010 14:26

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

Re: nelineární regrese

↑ iv21:

Zdravím,

logaritmovala bych levou a pravou stranu, čím se to převede na lineární (ale teď nevím, co se dělá s ln(sin(ax)) - buď  mi to nějak dojde nebo někdo z kolegů, děkuji).

Offline

 

#3 25. 08. 2014 21:48 — Editoval Joe Hallenbeck (04. 06. 2015 18:33)

Joe Hallenbeck
Zelenáč
Příspěvky: 24
Reputace:   
 

Re: nelineární regrese

iv21 napsal(a):

nevíte si náhodou pls někdo rady s tímto příkladem?

jedná se o nelineární regresi a máme to řešit v excelu pomocí řešitele. Jsou dány hodnoty x, y a funkce, máme zjistit hodnoty parametru A, a, b.

$y=A*sin(ax)*e^{-bx}$

x    0    0,3      0,6     0,9     1,2      1,5        1,8       2,1       2,4       2,7       3
y    0    1,56   2,08    1,73    1,14    0,26    -0,58    -0,72    -0,9    -0,64    0,05

diky moc

NIC NENI TREBA LOGARITMOVAT!

Řešení je jednoduché.

Toto jsou experimentální data:
x    0    0,3      0,6     0,9     1,2      1,5        1,8       2,1       2,4       2,7       3
y    0    1,56   2,08    1,73    1,14    0,26    -0,58    -0,72    -0,9    -0,64    0,05

A toto je matematická rovnice, která nám v podstatě popisuje matematicko-fyzikální model pro experimentání data:

$y=A*sin(ax)*e^{-bx}$

jinak řečeno, tato matematická rovnice nám popisuje závislost výše uvedených experimentálních dat.

Tak a teď jak na excel:
Do buňky A1 napíšeme "x" (bez těch uvozovek) - to je naše nezávisle proměnná. Buňka B1 bude nadepsaná jako "y" - a to je naše závisle proměnná. Buňku C1 nadepíšeme "Model". Buňka D1 bude obsahovat "A"; buňka E1 potom "a", a nakonec buňka F1 bude obsahovat písmeno "b". Všechny písmena bez uvozovek, slouží pouze pro pojmenování příslušných sloupců!
Do sloupce A pod buňku (A1), která již obsahuje písmeno x, vložíme experimentální data nezávisle proměnné x. To znamená, že do buňky A2 vložíme 0; A3 obsahuje 0,3; A4 pak 0,6; atd....
Úplně stejně vložíme data závisle proměnné y. Buňka B2 obsahuje 0; B3 pak 1,56; B4 pak hodnotu 2,08; atd.

Sloupec C zatím necháme prázdný, bude obsahovat pouze nápis Model v buňce C1!

Do buňky D2 prozatím vložíme třeba číslo "1" a to samé číslo také napíšeme do buňky E2 a F2

Do buňky G1 napíšeme "Kritérium" a buňku G2 prozatím necháme prázdnou.

Nyní se vrátíme ke sloupci C a do buňky C2 napíšeme matematický vzorec, který popisuje závislost experimentálních dat, tzn. buňka C2 bude obsahovat výraz

Code:

=$D$2*SIN($E$2*A2)*EXP(-$F$2*A2)

Máme li takto vložený vzorec v buňce C2 tak jej odentrujeme a výsledkem by měla být "0". Teď tento vzorec "roztáhneme" do celého sloupce C až do buňky C12. (když je buňka C2 obsahující vzorec označena, tzn. je orámována černým rámečkem, který obsahuje v pravém dolním rohu čtvereček, tak na ten čtvereček najedeme kurzorem myši a kurzor se změní na křížek. Jakmile je z kurzoru křížek, stiskneme levé tlačítko myši a se stále stisknutím levým tlačítkem myši tu buňku C2 roztáhneme dolů do dalších buněk ve sloupci C, až po buňku C12 včetně. Tím se nám rozkopíruje vzorec z buňky C2 do ostatních buněk ve sloupci C a absolutní odkazy nám zajistí, že se vzorce z dalších buněk budou pořád odkazovat na parametry rovnice A, a, b v buňkách D2; E2; F2. Kdyby tam ty absolutní odkazy nebyly, tzn. byl by tam pouze relativní odkaz (bez znaků $ -

Code:

=D2*SIN(E2*A2)*EXP(-F2*A2)

, posouvali by se odkazy na hodnoty parametrů A, a, b zároveň s řádky, tak jako relativní odkaz na buňku B2 a počítali bychom nesmysly!!!!!!

Tak když máme roztažené vzorce i do dalších buněk sloupce C, tak se vrátíme k doposud prázdné buňce G2. Zde vložíme funkci =SUMXMY2 a pole_x bude obsahovat buňky sloupce B, konkrétně buňky od B2 až po B12 a pole_y buňky sloupce C, tedy sloupce které obsahují náš matematický model, konkrétně C2 až C12. Celý zápis tedy bude vypadat takto:

Code:

=SUMXMY2(B2:B12;C2:C12)

Toto kritérium je pro Řešitel velice důležité, počítá součet čtverců dvou odpovídajících matic! Díky němu je schopen dopočítat správné parametry aby nám model seděl na experimentální data!

Tak a nyní máme vše připraveno k použití Řešitele!

Excel 2003:
Kliknem na Nástroje/Řešitel a otevře se nám dialogové okno. Do políčka Nastavit buňku nastavíme odkaz na buňku obsahující funkci

Code:

=SUMXMY2(B2:B12;C2:C12)

, čili Kriterium. Z výběru Rovno: Max, Min, Hodnota zatrhneme Min. Měněné buňky jsou buňky parametrů modelu, tzn. buňky D2,E2,F2. Rozklikneme Možnosti  a zadáme například tyto hodnoty: Maximální čas: 1000; Počet Iterací: 1000; Přesnost: 0,0000000001; Tolerance: 0,00000001; Konvergence: 0,0000000001;  Extrapolace: Kvadratická; Derivace: Sdružená; Metoda: Sdružená, jinak nic jiného v nabídce Možnosti není zaškrtnuté! Odentrujeme a klikeneme Řešit a je hotovo! Řešitel nám našel parametry A, a, b!

Offline

 

#4 28. 08. 2014 19:34

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

Re: nelineární regrese

↑ Joe Hallenbeck:

Zdravím,

NIC NENI TREBA LOGARITMOVAT!

také není třeba křičet :-) Samotné logaritmování by celému procesu nijak neublížilo (ale také nepomohlo), jelikož pořád by zůstával nelineární vztah. Ale můj návrh "logaritmovat" by narazil na jiný problém - část hodnot $y$ je záporných, tedy bych toho moc nenalogaritmovala.

V každém případě je dobré mít návrh postupu v EXCEL (řešiteli), taková témata nejsou příliš populární a mají slabou odezvu, děkuji.

Offline

 

#5 12. 09. 2014 09:29 — Editoval Joe Hallenbeck (12. 09. 2014 10:04)

Joe Hallenbeck
Zelenáč
Příspěvky: 24
Reputace:   
 

Re: nelineární regrese

Nemáte zač. Rád jsem pomohl, snad ten postup někomu do budoucna pomůže.

Jen ještě jedna věc. Někdy si řešitel nedokáže poradit se zadanou matematicko-fyzikální rovnicí popisující závislost y na x. Proto je vhodné si zobrazit pomocí grafu experimentální body závislosti y na x a nechat si je proložit "vymodelovanou" závislostí pomocí řešitele. Je to dobrá zpětná kontrola vypočítaných parametrů Řešitelem.
Tehdy parametry modelu prostě použijeme pro výpočet hustější sítě dat. Například v případě že máme pouze deset experimentálních hodnot rozdělených po  $\Delta x$ = 1, je vhodné modelované data pak vypočítat pro $\Delta x_{model}$ = 0,1 (0,01 a pod.), nebo dle potřeby. Získá se tak mnohem jemnější, "zakulacenější", křivka, která by v případě nalezení správného řešení měla kopírovat závislost experimentálních dat.
Jak jsem ale psal, Řešitel není dokonalý nástroj a parametry někdy dopočítává "špatně". T. j. již na první pohled je při grafickém znázornění závislosti experimentálních a modelových dat vidět, že "model" prostě nekoresponduje s experimentálními daty, lidově řečeno prostě "nesedí". V takovém případě máme dvě možnosti. První je, že je matematická rovnice popisující danou závislost y na x špatně zvolená a je vhodné nalézti jinou, která bude popisovat závislost mnohem lépe, avšak někdy je matematická rovnice správná, ale Řešitel prostě z nějakého důvodu nedokáže v nekonečném množství řešení nalézti to "správné". Tehdy je potřeba Řešiteli trochu pomoci a to tak, že se za "nastřelené" hodnoty parametrů modelu (tzn. ty které on pak změní) odhadnou co nejblíže správnému řešení, což obvykle problém vyřeší. Stejně tak, je někdy potřeba nastavit v možnostech Řešitele okrajové podmínky a tím mu v podstatě zúžit oblasti, ve kterých má vyhledávat správné řešení. Jako okrajové podmínky se také volí definiční obory dané funkce, aby se Řešitel zbytečně nesnažil hledat tam, kde to nemá smysl atd..
Vždy je ale třeba brát výsledky Řešitele s rezervou, neboť (a velmi často to tak bývá) má zadaná funkce nekonečně mnoho možných řešení a Řešitel najde pouze jedno z nich.

Offline

 

#6 12. 09. 2014 11:57

Eratosthenes
Příspěvky: 3111
Reputace:   140 
 

Re: nelineární regrese

zdravím ↑ jelena:,

logaritmování nelze doporučit. Regrese je založena na metodě nejmenších čtverců a minimalizuje sumu

$\sum \left[ y_i - f \left( x_i\right)\right]^2$

kdežto po logaritmování by se minimalizovala suma

$\sum \left[ \ln\left( y_i\right) -\ln\left(f \left( x_i\right)\right) \right]^2$

což je samozřejmě úplně něco jiného, nehledě na to, že to zcela zhavaruje pro záporné y_i, f(x_i)


Budoucnost patří aluminiu.

Offline

 

#7 13. 09. 2014 22:53

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

Re: nelineární regrese

Zdravím,

jak jsem psala, jsem víc v nedosahu, než v dosahu (nakonec až do poloviny listopadu), tak spíš jen drobné komentáře, než podrobnější diskuse.

↑ Joe Hallenbeck:

V posledních letech data nijak aktivně nezpracovávám, jsou to pozůstatky z předchozích časů, řešitele - spíš pro místní fórum-účely a velmi omezeně (nenáročné optimalizační úlohy, pokud někdo konzultoval, ale tuto ani nevím, jak dopadla). Ale určitě to tak bude, jak popisuješ, ohledně "brát s rezervou".

↑ Eratosthenes:

:-) Konkrétně k této úloze už jsem okomentovala jak logaritmování, tak i to zhavarování na záporných hodnotách ↑ příspěvek 4:, ale pořád (i když i kolegové povídali) nejsem úplně přesvědčená, že v případě předpisů (příklad $y=b_1e^{b_2x}$) logaritmováním převoditelných na lineární závislost to je zcela nekorektní (např. pro zpracování Arrhenius rovnice). Pořád se používalo i u Rektoryse to čtu, že se používá i s uvedenou úpravou podmínky pro nejmenší čtverce. Asi mi to tak zůstane :-)

Ale ještě jednou - v tomto konkrétním zadaní je pochopitelně nepoužitelné.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson