mathematica - FindRoot

O matematiki, številih, množicah in računih...
Odgovori
Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

mathematica - FindRoot

Odgovor Napisal/-a fogl »

S programom Methematica bi rad numerično našel rešitev enačbe (klik), pa mi nikakor ne uspe, vedno se nekaj pritožuje. Mogoče kdo ve kaj ga matra, pravi da " The function value is not a list of numbers with dimensions {1} at {fi} = {0.5}.". Sem poskusil različne začetne vrednosti, pa je vedno isto.

Prilagam tudi fajl od mathematice.

ZdravaPamet
Prispevkov: 2842
Pridružen: 16.8.2004 19:41

Re: mthematica - FindRoot

Odgovor Napisal/-a ZdravaPamet »

Tole najprej poenostavi, ker je tako grdo, da ni za nikamor. Pa najbrž imaš napako v prvem ulomku, spremenljivka \(U_{p}\) namreč ne obstaja.

Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

Re: mathematica - FindRoot

Odgovor Napisal/-a fogl »

Hvala, tole sem pa čist spregledal ko sem spreminjal imena spremenljivkam.

Zdej imam pa še vedno problem. Izraz sem poenostavil, in zdej dobim rešitev (tudi z grdim izrazom sem jo), vendar pa je problem, da je za vsako začetno vrednost, ki jo vnesem, različna: primer 1, ko je začetna vrednost 0,05 in primer 2, ko je začetna vrednost 0,5. Zakaj to dela? Kako naj potem sploh vem katera rešitev je tista prava?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: mathematica - FindRoot

Odgovor Napisal/-a Aniviller »

Saj sta obe resitvi enaki - obe sta 1. Moras pa vedeti, da z numericnim postopkom vedno dosezes le koncno natancnost in da bo vsak rezultat imel tudi napako. Iskanje resitev enacb lahko uporabi bisekcijo, iteracijo, newtonovo metodo ali kaksno izmed izboljsanih variant (mislim da je default metoda newtonovega tipa). Mathematica nadzoruje postopek in garantira natancnost, ki je nastavljena - to lahko spreminjas.

Drugo je pa, da ne bi bilo nic cudnega, ce bi metoda dejansko dala razlicne resitve. Ce ima enacba vec razlicnih resitev imata ponavadi obe kaksen fizikalen smisel, ali pa so vse razen ene izven dovoljenega obmocja. Zato moras priblizno poznati obliko funkcije in obmocje nahajanje resitve, da najdes pravo - ze tako se pogosto zgodi, da ti najde kaksno drugo, ker newtonova metoda, ce zacnes na poloznem, odnese resitev zelo dalec. Ce se ti niti sanja ne, kaj isces (npr. ce je resitev 0.3 in zacnes pri 1000), potem se lahko celo zgodi, da resitve ne bos nasel.

ZdravaPamet
Prispevkov: 2842
Pridružen: 16.8.2004 19:41

Re: mathematica - FindRoot

Odgovor Napisal/-a ZdravaPamet »

Imel sem v mislih, da boš na papirju poenostavil enačbo, ker se da. Če ne drugega se lahko ulomkov znebiš. Simplify dela takrat, ko na daleč vidiš, kako je treba poenostavit, treba bo na roke. Lahko se ti celo zgodi, da boš prišel do enačbe, ki je trivialno rešljiva že na papirju.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: mathematica - FindRoot

Odgovor Napisal/-a Aniviller »

Vidi se tudi, da enacba vsebuje veliko podobnih odsekov. Ocitno je, da izvira iz enostavne enacbe, v katero je bila vstavljena druga enacba. To je skrajno grdo pocetje, v primeru numericnega resevanja pa celo nesmiselno in skodljivo (veckrat racunas eno in isto kolicino). Pospravi stvari, tako da definiras funkcije posamezno in potem klices solver na funkciji.

Primer: takoj lahko delis enacbo z (Sqrt[fi]-1) in mnozis s kubikom tistega sranja v imenovalcu. Tako dobljena funkcija bo pa verjetno toliko lepsa, da bo Simplify ali pospravljanje na isti ulomek poenostavilo enacbo se bolj. Kaze, da je enacba skoraj polinom.

Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

Re: mathematica - FindRoot

Odgovor Napisal/-a fogl »

Jaz sem mislil da je Mathematica bolj pametna od mene, in že sama zadeve poenostavi tako kot je treba 8)

Zdej sem zadeve okrajšal, in dobim vedno isto rešitev (realni del), ne glede na to, kaj vnesem na začetku (klik), rešitev pa čisto drugačna kot pri neokrajšanem izrazu. Ne vem pa zakaj zraven dodaja še imaginarni del (ta se spreminja glede na začetno vrednost), saj je vrednosti vseh korenov pozitivna, če vstavim ta realni del rešitve?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: mathematica - FindRoot

Odgovor Napisal/-a Aniviller »

Mathematica je podaljsek tvojih mozganov in naredi tisto cesar ti ne zmores na pamet. Je pa le toliko pametna kot uporabnik - lepota poenostavitve je definirana programsko (in to dobro), vendar predpostavlja, da so vse spremenljivke v splosnem kompeksne, kaksne koli. Zato ne mnozi z imenovalcem (boji se singularnosti), ne mnozi dveh korenov nazaj v argument in podobno. Le ti ves, da v obmocju, ki ga potrebujes, te stvari smes poenostavit. Tudi simetricnost rezultata (simetrijo je zelo tezko definirat v splosnem) ponavadi zrtvuje na racun spravljanja na skupni imenovalec in zmanjsevanja stevila clenov.

Poleg tega je vedno dobro na roke poenostavit ze zato, da je v programu bolj pregledno.

Kar se tice imaginarnih komponent, pa te vedno pridejo iz zaokrozitvenih napak, ker mathematica spet predpostavlja kompleksne vrednosti. Funkcija Chop[] te stvari odreze. Da se tudi forsirat realno matematiko.

Odgovori