abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 22:00 | Komunita

Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil (podcast) detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 64 tisíc vývojářů. Jejich nejmilovanější platformou je linuxový desktop. Ten je také druhou nejpoužívanější platformou vývojářů.

Ladislav Hagara | Komentářů: 0
24.3. 11:55 | Komunita

Vývojový tým OpenSSL ve spolupráci s iniciativou Core Infrastructure konsorcia Linux Foundation spustil proces přelicencování této kryptografické knihovny ze současné licence na licenci Apache Licence v 2.0 (ASLv2). Nová licence usnadní začleňování OpenSSL do dalších svobodných a open source projektů. Všichni dosavadní vývojáři OpenSSL (Authors) obdrží v následujících dnech email s prosbou o souhlas se změnou licence.

Ladislav Hagara | Komentářů: 7
24.3. 01:11 | Komunita

Před třemi týdny Mozilla.cz představila projekt Photon, jehož cílem je návrh a implementace nového vzhledu Firefoxu. Včera zveřejnila první náhled vzhledu Photon. Práce na projektu Photon jsou rozděleny do pěti týmů, které celkem čítají 19 lidí. Zaměřují se na zlepšení prvního spuštění Firefoxu a zaujetí nových uživatelů, celkovou úpravu vzhledu, zlepšení animací, zrychlení odezvy uživatelského rozhraní a také upravení nabídek. Vývoj lze sledovat v Bugzille.

Ladislav Hagara | Komentářů: 38
23.3. 20:00 | Komunita

OneDrive pro firmy je již ve webových prohlížečích na Linuxu stejně rychlý jako na Windows. Microsoft opravil chybu z listopadu loňského roku. OneDrive pro firmy běžel na Linuxu mnohem pomaleji než na Windows. V popisu chyby bylo uvedeno, že stačilo v prohlížeči na Linuxu nastavit v user-agentu Windows a vše se zrychlilo. Odpovědí Microsoftu bylo (Internet Archive: Wayback Machine), že Linux není podporován. Po bouřlivých diskusích na redditu i Hacker News byla chyba nalezena a opravena.

Ladislav Hagara | Komentářů: 6
23.3. 19:00 | Zajímavý projekt

Byla vyhlášena soutěž Hackaday Prize 2017. Soutěž je určena vývojářům open source hardwaru. Pro výherce je připraveno celkově 250 tisíc dolarů. Každý ze 120 finalistů získá tisíc dolarů. Nejlepší pak navíc 50, 30, 20, 15, 10 a 5 tisíc dolarů. Jedná se již o čtvrtý ročník soutěže. V roce 2014 zvítězil projekt globální sítě open source pozemních satelitních stanic SatNOGS. V roce 2015 zvítězil open source systém pro řízení elektrických invalidních vozíků pohybem očí Eyedriveomatic. V roce 2016 zvítězil modulární robot Dtto.

Ladislav Hagara | Komentářů: 0
23.3. 15:00 | Bezpečnostní upozornění

Byla vydána Samba ve verzích 4.6.1, 4.5.7 a 4.4.12. Řešen je bezpečnostní problém CVE-2017-2619. Pomocí symbolických odkazů a souběhu (symlink race) lze "teoreticky" získat přístup k souborům, které nejsou sdíleny. Linuxové distribuce jsou postupně aktualizovány (Debian).

Ladislav Hagara | Komentářů: 0
23.3. 07:43 | Nová verze

Na Steamu se objevil port hry Arma: Cold War Assault (Operation Flashpoint) pro Mac a Linux. … více »

creon | Komentářů: 30
23.3. 05:55 | Nová verze

Po 18 měsících od vydání verze 8.0 byla vydána verze 9.0 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab. Představení nových vlastností v příspěvku na blogu a na YouTube.

Ladislav Hagara | Komentářů: 0
23.3. 03:33 | Komunita

Platnost posledního patentu souvisejícího s Dolby Digital (AC-3) vypršela. Po MP3 se tak do Fedory oficiálně dostane také kodek AC-3.

Ladislav Hagara | Komentářů: 5
23.3. 00:44 | Komunita

Feral Interactive, společnost zabývající se vydáváním počítačových her pro operační systémy macOS a Linux, nabízí své hry na Steamu vývojářům open source 3D grafické knihovny Mesa zdarma. Podmínkou je minimálně 25 commitů za posledních 5 let. Stejnou nabídku dostali vývojáři knihovny Mesa v roce 2015 od Valve. O rok dříve dostali od Valve tuto nabídku vývojáři Debianu a Ubuntu.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (14%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 932 hlasů
 Komentářů: 72, poslední 1.3. 11:16
    Rozcestník

    Dotaz: Aproximace polynomem ve Fortranu

    29.8.2008 11:14 Karluzo
    Aproximace polynomem ve Fortranu
    Přečteno: 812×
    Dobrý den, potřebuji pomoci vyřešit následující úlohu. Mám program, který zpracovává data z laserového měření. Součástí programu je malá soubroutinka, která řeší aproximaci polynomem. Problém je v tom, že když se zadá polynom vyššího řádu jak 8, program se hroutí a data začínají být nesmyslná. Potřebuji poradit, jak tuto soubrotinu upravit, případně nahradit, aby program řešil aproximace polynomem i vyšších řádů. Děkuji za pomoc a nápady. Karel

    SUBROUTINE DAPRX(X,Y,N,M,CP)

    C ****************

    C

    C APROXIMATION OF THE MEASURED VALUES BY THE POLYNOM

    C

    C PARAMETERS X,Y ... INPUT VALUES IN D.P. ARRAYS

    C N ... NO. OF POINTS

    C M ... DEGREE OF POLYNOM

    C CP ... OUTPUT ARRAY CONTAINING THE

    C COEFFICIENTS

    C

    DOUBLE PRECISION X(1),Y(1),C(20,11),CP(20),B(40),DPV

    DOUBLE PRECISION U,S,P

    IF((N-M).GT.1) GO TO 67

    WRITE(*,66)

    66 FORMAT(' *** ERROR *** IN APPROXIMATION , M >N-1 !!! ',/)

    RETURN

    67 CONTINUE

    M1=M

    M=M+1

    M2=2*M1

    DO 490 K=1,M2

    B(K)=0.D0

    DO 490 I=1,N

    B(K)=B(K)+X(I)**K

    490 CONTINUE

    C

    DO 570 I=1,M

    DO 570 J=1,M

    I2=I+J-2

    IF(I2.NE.0) GO TO 560

    C(1,1)=N

    GO TO 570

    560 C(I,J)=B(I2)

    570 CONTINUE

    C

    C(1,M+1)=0.D0

    DO 630 I=1,N

    630 C(1,M+1)=C(1,M+1)+Y(I)

    DO 690 K=2,M

    C(K,M+1)=0.D0

    DO 690 I=1,N

    C(K,M+1)=C(K,M+1)+Y(I)*(X(I)**(K-1))

    690 CONTINUE

    C

    N1=M+1

    J=1

    K=1

    I=1

    740 I3=I+K

    DPV=C(I,J)*C(I3,J)

    IF(DPV.NE.0.D0) GO TO 790

    U=1.D0

    S=0.0D0

    GO TO 820

    790 P=DSQRT(C(I,J)*C(I,J)+C(I3,J)*C(I3,J))

    U=C(I,J)/P

    S=-1.D0*C(I3,J)/P

    820 DO 860 J1=J,N1

    P=U*C(I,J1)-S*C(I3,J1)

    C(I3,J1)=S*C(I,J1)+U*C(I3,J1)

    C(I,J1)=P

    860 CONTINUE

    K=K+1

    KH=K+I-M

    IF(KH.LE.0) GO TO 740

    K=1

    I=I+1

    J=J+1

    IF((J-M).LT.0) GO TO 740

    C

    I=M

    950 C(I,N1)=C(I,N1)/C(I,I)

    K=I-1

    970 IF(K.LE.0) GO TO 1010

    C(K,N1)=C(K,N1)-C(K,I)*C(I,N1)

    K=K-1

    GO TO 970

    1010 I=I-1

    IF((I-1).GE.0) GO TO 950

    C

    DO 1011 I=1,20

    1011 CP(I)=C(I,M+1)

    RETURN

    END

    Odpovědi

    29.8.2008 12:53 JS
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    No, vubec nevim co ten program dela a jak, a Fortran uz si prilis nepamatuji, ale patrne bude potreba jenom nejak vhodne zvysit meze tech poli. To jest deklarace:

    DOUBLE PRECISION X(1),Y(1),C(20,11),CP(20),B(40),DPV

    Co tam zkusit dat vetsi hodnoty nez 20,11 a 40? Pak by to melo zacit fungovat i pro vyssi rady. Ale jak rikam, nevim jak jsou tyto hodnoty zavisle na stupni polynomu, chce to podivat se v tom programu.
    29.8.2008 13:01 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Me se to teda taky moc nechce cist a jeste min premyslet, co to vlastne dela, ale obecna rada je, ze delat proximaci polynomem takto vysokeho radu obvykle vubec neni potreba a pokud to jde, tak se tomu vyhnout (stejne tak ten algorimus pro aproximaci mohl byt navrzen jen pro nizke stupne polynomu)
    29.8.2008 13:15 JS
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Spravna poznamka. Mozna by pomohlo, kdyby autor vice popsal, jakou ulohu se vlastne pomoci te aproximace snazi resit.
    29.8.2008 13:22 Karluzo
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Příloha:
    Myslím, že úlohu jsem popsal jasně. Mám subroutinu, která řeší aproximaci. Tato SR je ale omezená stupňem polynomu. Já potřebuji takovou, která omezena nijak nebude. Ve výsledku vůbec nejde o to, k čemu je program určen, ale pokud by to někomu pomohlo:

    Jedná se o jednoúčelový program ke zpracování naměřených laserových hodnot. Program načte data ze souboru (výsledky nějakých laserových měření) a provádí aproximace polynomem od stupně, který uživatel zadá. Viz příloha.
    29.8.2008 13:52 JS
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Aha, tak to asi nevim jak udelat (a uprimne, nechce se mi cist cely cizi program - pokud je to vase prace, musite si ji asi udelat vy sam :-(). Muselo by se v te subroutine nejak dynamicky naalokovat velikost toho pole, a to ja nevim, jak se ve Fortranu dela (a nebo tam dat dostatecne velke hodnoty, kterych nedosahnete). Ale predrecnik ma pravdu v tom, ze pokud se budete snazit aproximaci vylepsit pouzitim polynomu vyssiho radu, muze se vam to paradoxne zhorsit, protoze se vam ten polynom zvlni (jak se prizpusobi ruznym chybam) a bude davat horsi vysledky nez polynom radu nizsiho. Lepe by bylo asi zvolit nejaky druh regrese. Jeste bych rad upozornil, ze procedura DPVAL patrne funguje jenom na polynomy do radu 10.
    29.8.2008 15:08 Karluzo
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Děkuji za Vaše příspěvky a názory. Program to bohužel(bohudík) není můj. Dostal jsem za úkol pouze vyměnit soubroutinu za jinou s tím, že znalost zbytku programu není nutná. Bohužel mi nepomůže ani to, že polynomy takto vysokých řádů se "nepoužívají," mám zkrátka takovýto úkol a musím jej vyřešit bez ohledu na to, jestli je tento typ řešení vhodný či ne.
    29.8.2008 19:23 JS
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Ptal jsem se po puvodni uloze, protoze moje zkusenost je casto opacna. Casto totiz znalost puvodniho zadani umoznuje vyresit problem mnohem elegantnejsim a lepsim zpusobem, nez bylo pozadovano. Nekdy je proto lepe si veci nastudovat, promyslet a pokusit se to lepsi reseni (pokud takove najdete) asertivne prosadit. Chapu, ze to muze byt vuci zkusenejsimu cloveku nebo nadrizenemu tezke, ale existuje dost rozumnych lidi, kteri se nechaji presvedcit dobrymi argumenty - ovsem musite si udelat svuj domaci ukol a nastudovat poradne sve i jejich reseni a proc je to vase vyhodnejsi. Muze to vypadat riskantne, ale at uz to dopadne jakkoli, je to poucna zkusenost (a pokud to dopadne spatne, pak s takovym clovekem asi nic mit chtit dal stejne nebudete).
    29.8.2008 20:49 Sandokan
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Polynomy takto vysokých řádů se nepoužívají z nějakého důvodu a tím důvodem je numerická nestabilita výpočtu. Koeficienty polynomu se počítají nějakou modifikací Gaussovy eliminace. Ani když si ta pole nadeklaruji jako DOUBLE PRECISION, nedostanu rozumné výsledky pro polynomy rádu vyššího než 10. Zaokrouhlovací chyby při opakovaných děleních už dosti výrazně znehodnotí výsledek. Toto byste se dozvěděl v učebnici numerické matematiky, ale vlastní zkušenost v žádném případě není k zahození.

    V daném případě teď vidím asi tak 2 možnosti.

    První je napsat si knihovnu pro matematické operace s libovolnou přesností (možná, že ji má někde i implementace vašeho FORTRANu) a použít ji k řešení. To asi nebude na jeden večer.

    Druhá možnost je změnit bázi polynomů a vystačit s jejich nižším stupněm. Báze polynomů je v tomto případě:

    a0+a1*x+a2*x^2+a3*x^3... - tedy aritmetický polynom.

    Podle toho, co ta naměřená data představují se dá použít jiná báze, třeba:

    a0+a1*x+a2*exp(x)+a3*log(x)...

    Na to je ale opravdu potřeba vědět, co ta data mají znamenat. Když už jsme u toho, stálo by skutečně za to vědět, proč chce zadavatel právě toto řešení. První možnost je, že o tom zrovna moc nepřemýšlel, druhá možnost je, že Vás potřebuje vyzkoušet stylem "dejte mu řešit nějaký problém a uvidí se, jak se k tomu postaví", ale existují jistě i další vysvětlení.

    ZDAR!
    30.8.2008 09:44 ---
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Zdrojak vypada na fortran 77, a ten nepodporuje dynamickou alokaci, meze poli musi byt compile-time konstanty. Subroutina dela asi toto:
    1. sestavi rozsirenou matici M x (M+1) soustavy linearnich rovnic
    2. upravi matici na horni trojuhelnikovy tvar pomoci Givensovych rotaci (http://en.wikipedia.org/wiki/Givens_rotation)
    3. provede zpetnou substituci (http://en.wikipedia.org/wiki/Triangular_matrix#Forward_and_Back_Substitution)
    Zvolte si, jaky nejvyssi stupen Mmax ma subroutina umet a zvetsete meze poli:
    • C na C(Mmax, Mmax + 1)
    • B na B(2 * (Mmax + 1))
    • CP na CP(Mmax)
    • Musite zvetsit i meze aktualniho argumentu pro CP v hlavnim programu a v kazde dalsi subroutine, ktera vola vasi subroutinu DAPRX. Uprava se tedy nemusi tykat jen jedne subroutiny.
    Meze vypocitejte rucne a do deklaraci napiste rovnou cisla. Dejte si praci s tim zjistit, co ktera promenna znamena. Donutte kompilator generovat run-time kontroly mezi. atd.

    Nejlepsi by bylo program trochu zkulturnit a deklarovat Mmax jako konstantu pomoci prikazu parameter, ale myslim, ze predtim byste se mel naucit fortran, nebo prepsat program do neceho, cemu rozumite a tak, abyste se v tom sam vyznal.
    1.9.2008 19:25 Karluzo
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Dnes jsem konzultoval Vaše odpovědi se zadavatelem, odpověď zadavatele je následující: Zadani smerovalo k tomu, najit novy algoritmus (t.j. "matematiku") pro aproximaci. Je jiste, ze takove algoritmy existuji, sam vsak jej neznam. Jiste existuje uz naprogramovana routina. Vasim ukolem je najit ji
    2.9.2008 00:18 vencas | skóre: 32
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Ne že bych tomu nějak zvlášť rozumněl, ale podle povahy dat by bylo vhodné vyzkoušet různé aproximace (tj. ne polynomy, ale třeba polynom kombinovaný s exponencielou, případně goniometrické funkce (a použít FFT) atd, jak už tady padlo). V nějakých případech by se mohly použít funkce, které by měly disjunktní nosiče (nebo aspoň aby nebyly všechny nenulové na (skoro) celé oblasti - jako algebraické polynomy), tj. rozdělit to na "prvky" a hledat jejich kombinaci, která to nejlíp aproximuje v nějakých významných bodech.

    Druhá věc co mě napadá, protože to většinou povede na řešení soustavy rovnic, aby se získaly koeficienty, je použití "standardních" knihoven na řešení (lapack apod.) a ne si to programovat sám.

    Na wikipedii k tomu jsou nějaké materiály - hlavně ty články odkazované dole.
    2.9.2008 14:17 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Jiste existuje uz naprogramovana routina. Vasim ukolem je najit ji
    jestli tim myslis, ze chces nasmerovat, kde mas hledat, tak osobne bych se asi zkusil podivat do cernlibu, je to v F77 a je toho tam opravdu hodne, pokud by ses spokojil i s C/C++, tak gsl, pripadne sem si pomerne jisty, ze to umi Root
    4.9.2008 20:06 Karluzo
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Tak děkuji všem. Dnes jsem předal všechny Vaše informace zadavateli a bylo mi uznáno, že se jedná o krok vpřed.
    masomlejn avatar 11.9.2008 11:19 masomlejn | skóre: 16
    Rozbalit Rozbalit vše Re: Aproximace polynomem ve Fortranu
    Ahoj, mozna budu mimo misu ale ja pouzivam na regresni ulohy nasledujici rutiny:
    NLSCON
    ODRPACK
    GREG
    Prvni dve jsou k nalezeni na www.netlib.org, GREG jsem nikde nez v repozitari u nas na ustavu nenasel. Jsou to sice rutiny vhodne na nelinearni regresi (v NLSCON je G-N metoda a v ODRPACK je L-M). Vyhodou pouziti techto rutin je, ze ziskas "zadarmo" treba i kovariancni matici odhadnutych parametru a z ni muzes spocitat nejistoty v extrapolovanych hodnotach. Jinak na stupen polynomu bych doporucoval F-test - testovat zda-li se vazena suma ctrvercu reziduii pridanim dalsiho parametru do polynomu zmensila. Nejsem matematik ale chemik, kdyztak at me povolanejsi opravi. Jeste se mrknu po jednom svem programku, ktery sem spachal kdysi pred lety. Mozna se ti bude hodit ale nic nezarucuju.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.