| | |
| Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
Autor | Správa |
---|
Registrovaný: 13.04.14 Prihlásený: 17.05.14 Príspevky: 8 Témy: 1 |
Ahoj, mám taký problém a veľmi by som potrebovala pomoc. Mám v Perli naprogramované 2 polia. Prvé pole sa nazýva @podmienky_uzaver, Je v ňom vybraných 11 rovníc, ktoré sú dané v tvare: pod1 = u8 + u11 + u12 + u13 + u14 + u18 - 200 potrebujem z nich vybrať tie rovnice, tak aby sa tam nachádzali všetky uhly teda u1, u2, u3.......u18. Druhé pole sa nazýva @podmienky_sinusova veta. z nich potrebujem vybrat vsetky tie, aby sa tam nachádzali všetky dĺžky(d1....d12). + po vybratí tých rovníc nejaký dotatok, že ak počet vybraných rovníc nerovná sa q(to je počet podmienok, ktorý musím vybrať a je to 21) tak aby vybralo hocijaké ďalšie podmienky , aby ich bolo 21... Tu je tá časť programu ( skúšala som to týmto spôsobom, vypíše podmienky, ale ako u1 berie aj u11, u12, u13 a vsetko proste čo začína u1) Kód: # výber q-počtu podmienok foreach $podmienka (@podmienky_uzaver) { if ($podmienka =~ m/u1/){ print " Obsahuje, $podmienka, \n"; } else{ print " nenachadza sa tam \n"; } }
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 13.04.2014 22:09 | |
|
Ahoj, moc nerozumiem, ukaz prosim, aky mas obsah v jednotlivych poliach ([c]use Data::Dumper; print Dumper(\@podmienky_uzaver, \@podmienky_sinusova_veta);[/c]) a trosku rozved, kedy to ma dat aky vystup. Co sa tyka tej poslednej vety, aby ti u1 matchovalo vyhradne u1, ale nie u11, mozes pouzit [c]$podmienka =~ /\bu1\b/[/c] -> http://www.regular-expressions.info/refwordboundaries.html, ale urcite to pojde nejak jednoducho. Len nam to treba lepsie vysvetlit. Mimochodom, snad foreach my $podmienka, nie? [c]use strict[/c] pouzivas?
|
|
Registrovaný: 13.04.14 Prihlásený: 17.05.14 Príspevky: 8 Témy: 1 |
takže obsah poľa @podmienky uzáver: pod1 = u8 + u11 + u12 + u13 + u14 + u18 - 200 pod2 = u3 + u8 + u9 + u13 + u14 - 200 pod3 = u5 + u8 + u9 + u10 + u14 - 200 pod4 = u3 + u4 + u9 + u16 + u17 - 200 pod5 = u5 + u6 + u9 + u10 + u17 - 200 pod6 = u1 + u11 + u15 + u16 + u17 + u18 - 200 pod7 = u4 + u11 + u12 + u16 + u17 + u18 - 200 pod8 = u6 + u11 + u12 + u13 + u17 + u18 - 200 pod9 = u2 + u3 + u6 + u7 + u13 - 200 pod10 = u2 + u3 + u4 + u7 + u16 - 200 pod77 = u2 + u5 + u6 + u7 + u10 - 200
obsah poľa @podmienky_sinusovaveta: pod20 = (d1 * sin(u11 + u12 + u13 + u14)) - (d2 * sin(u18)) pod21 = (d2 * sin(u8)) - (d5 * sin(u11 + u12 + u13 + u14 )) pod22 = (d1 * sin(u8)) - (d5 * sin(u18 )) pod23 = (d1 * sin(u13 + u14 )) - (d4 * sin(u3 )) pod24 = (d1 * sin(u8 + u9 )) - (d12 * sin(u3)) pod25 = (d4 * sin(u8 + u9)) - (d12 * sin(u13 + u14)) pod26 = (d1 * sin(u14 )) - (d3 * sin (u5)) pod27 = (d1 * sin(u8 + u9 + u10)) - (d6 * sin(u5)) pod28 = (d3 * sin(u8 + u9 + u10)) - (d6 * sin (u14) ) pod29 = (d2 * sin(u16 + u17)) - (d4 * sin (u3 + u4)) pod30 = (d2 * sin(u9 )) - (d9 * sin(u3 + u4)) pod31 = (d4 * sin(u9)) - (d9 * sin(u16 + u17 )) pod32 = (d2 * sin(u17)) - (d3 * sin(u5 + u6)) pod33 = (d2 * sin(u9 + u10)) - (d8 * sin(u5 + u6)) pod34 = (d3 * sin(u9 + u10)) - (d8 * sin(u17)) pod35 = (d5 * sin(u15 + u16 + u17 + u18)) - (d7 * sin(u1)) pod36 = (d5 * sin(u11)) - (d10 * sin(u1)) pod37 = (d7 * sin(u11)) - (d10 * sin(u15 + u16 + u17 + u18)) pod38 = (d5 * sin(u11 + u12)) - (d9 * sin(u4)) pod39 = (d5 * sin(u16 + u17 + u18)) - (d12 * sin(u4)) pod40 = (d9 * sin(u16 + u17 + u18)) - (d12 * sin(u11 + u12)) pod41 = (d5 * sin(u17 + u18)) - (d6 * sin(u6)) pod42 = (d5 * sin(u11 + u12 + u13)) - (d8 * sin(u6)) pod43 = (d6 * sin(u11 + u12 + u13)) - (d8 * sin(u17 + u18)) pod44 = (d6 * sin(u13)) - (d11 * sin(u2 + u3)) pod45 = (d6 * sin(u6 + u7)) - (d12 * sin(u2 + u3)) pod46 = (d11 * sin(u6 + u7)) - (d12 * sin(u13)) pod47 = (d8 * sin(u7)) - (d9 * sin(u2 + u3 + u4)) pod48 = (d8 * sin(u16)) - (d11 * sin(u2 + u3 + u4)) pod49 = (d9 * sin(u16)) - (d11 * sin(u7)) pod78 = (d3 * sin(u5 + u6 + u7)) - (d4 * sin(u2)) pod79 = (d3 * sin(u10)) - (d11 * sin(u2)) pod80 = (d11 * sin(u5 + u6 + u7)) - (d4 * sin(u10)
Takže mojou úlohou je vybrať z podmienok uvedených v daných poliach 21 podmienok. Z prvého poľa vyberám podľa uhlov(u1 - u18). Musím vybrať také podmienky, aby sa tam nachádzal každý uhol. Teda napr. ak budem hľadať podľa u1 - malo by mi vybrať pod6 = u1 + u11 + u15 + u16 + u17 + u18 - 200. Kedže sa tam nachádzajú aj uhly u11, u15, u16 tak tie už ďalej nebudem hľadať. A výsledné podmienky aby sa uložili do poľa @podmienky.
To isté urobiť aj s druhým poľom, len tam už nebudem brať do úvahy uhly, ale dĺžky d1 - d12.
Neviem, či chápete o čo mi ide. Netuším vôbec ako to zapísať.
// Spojený príspevok Ned 13.04.14 22:53
* a ešte jedna otázka, ako spravím inverznú maticu? našla som nejaký modul, kde bola aj takáto nejaká funkcia na to, lenže ten modul mi vôbec nešlo inštalovať
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 16.04.2014 18:46 | |
|
No, tak to bude asi jednoduche, nie? Kód: my $hladam = "u1"; my @podmienky = grep { /\b$hladam\b/ } @podmienky_uzaver; Robi to to, co chces? Ad inverzna matica - pouzi Matrix::MatrixReal... co znamena "nejde nainstalovat?" Aku chybu ti to pise? Pod akym OS to instalujes? Alebo si to naprogramuj, poznat algoritmus na vypocet inverznej matice musi snad kazdy.
|
|
Registrovaný: 13.04.14 Prihlásený: 17.05.14 Príspevky: 8 Témy: 1 |
ďakujem pekne vyhľadáva to u1 napísala som to s ďalšími,.... a ohľadom tej matice...píše mi tam chybu, že to nemôže nájsť PPD súbor..asi ho tam nemám, neviem ako sa to robí hľadám na internete... A algoritmus musí poznať každý?? KEby som to vedela naprogramujem si to a nepíšem to tu...keď sa niekto učí v perli 3 týždne tak to asi nemusí vedieť....tiež viem veľa vecí, ktorý "musí poznať každý" ale ked sa tomu nevenuje tak nemá tušenie o čom hovorím....Ale vďaka za ochotu
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal F3RY: 21.04.2014 0:55 | |
|
Citácia: A algoritmus musí poznať každý?? KEby som to vedela naprogramujem si to a nepíšem to tu... http://lmgtfy.com/?q=inverse+matrix+pseudocode // Spojený príspevok Pon 21.04.14 1:05Ruby neovladam, ale skus pozriet na: https://www.ruby-forum.com/Necakaj, ze najdes vsetko napisane a vysvetlene v slovencine
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 13.04.14 Prihlásený: 17.05.14 Príspevky: 8 Témy: 1 |
Wau, google? To, čo je? Som netušil, že niečo také existuje...Si super!!! (Inak hovorím o Perli a nie o Ruby) Akože fakt som nečakal, že mi niekto napíše celý program, ale až to nejaký inteligenti programátori, čo si myslia, že vedia všetko a nedokážu poradiť s jednou vecou (Vďaka...čudujem sa, že v tejto dobe som čakal niečo viac) Ale inak Ďuri tebe ďakujem, pomohlo mi to veľmi
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 21.04.2014 22:25 | |
|
Preco pises raz v zenskom a raz v muzskom rode? Ze v Perli programujes chvilu, nema nic spolocne s tym, ci poznas algoritmus. Algoritmus na vypocet inverznej matice sa uci najneskor v prvom semestri na VS a realizuje sa na papier. Kedze s tym chces pracovat, ocakava sa, ze tusis, o com je rec-- spravny postup je teda nastudovat si aspon tie zaklady linearnej algebry a potom prist s tym, ze kodim Gauss-Jordana v Perli, mam takyto kod, dam tomu tento vstup a blije to hento miesto onoho. Co od nas cakas, mame ti to naprogramovat cele? Na to je Ponuka prace. F3RYho reakcia bola spravna. My dokazeme poradit s kadecim, ale ty sa blbo pytas. Ad ta instalacia z cpanu, ukaz presny postup, ako to instalujes, skopiruj sem prikazy z terminalu, ktore pouzivas, a presne znenie chyby (plus ju skus vygooglit, ci nahodou nenajdes riesenie bez nasej pomoci, ked teda ocividne google poznas) a napis aspon ten operacny system.
|
|
Registrovaný: 13.04.14 Prihlásený: 17.05.14 Príspevky: 8 Témy: 1 |
Ospravedlňujem sa, len akosi mi to nejde a neviem prečo. Mám Windows7. Našla som na internete, že inštalácia modulov je pomocou interaktívneho prostredia PPM. Výstup: PPM>search Math::MatrixReal PPM>install Math::MatrixReal Install package 'Math-MatrixReal?' (y/N): y Installing package 'Math-MatrixReal'..... Error installing package 'Math-MatrixReal' : Could not locate a PPD file for package Math-MatrixReal
Našla som na internete nejaké riešenia, skúšala som vytvoriť ten ppd file našla som, že by mal obsahovať: <?xml version="1.0" encoding="UTF-8"?> <SOFTPKG NAME="Bit-Vector" VERSION="6,3,0,0"> <TITLE>Bit-Vector</TITLE> <ABSTRACT>Blah</ABSTRACT> <AUTHOR>A Sometwit</AUTHOR> <IMPLEMENTATION> <CODEBASE HREF="file:///d|/downloads/cpan/Bit-Vector-6.3.tar.gz"></CODEBASE> <INSTALL></INSTALL> <UNINSTALL></UNINSTALL> </IMPLEMENTATION> </SOFTPKG>
ale stále mi to nefunguje. Keď mám MS Windows a Strawberry Perl, tak to môžem inštalovať aj cez CPAN?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 25.04.2014 12:44 | |
|
|
|
Registrovaný: 13.04.14 Prihlásený: 17.05.14 Príspevky: 8 Témy: 1 |
Ďakujem, hneď mi to nainštalovalo // Spojený príspevok Pon 28.04.14 16:09** mám ešte otázku ** Požívam ten modul Math::MatrixReal, mám maticu $A(zadanú ako nulovú, rozmer 30x30). Chcem ju vytvoriť vynásobením matice $B(rozmer 30x30) so skalárnym číslom $a, ktoré som si už vopred vypočítala a má hodnotu: 6.58516512284502e-007. Zadala som príkaz: $A-> multiply_scalar($B,$a); A keď dám vypísať hodnoty matice $A tak ich vypíše, ale keď ju chcem násobiť inou maticou tak mi dá výpis: wrong argument type Keď chcem vynásobiť niektorého jej člena : $1 = $A->element(1,1)*2; vypíše mi že Modification on a read-only value.... Pochopila som, že hodnoty v matici berie len na čítanie, ale akým iným spôsobom môžem vynásobiť maticu skalárom?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | |
Registrovaný: 13.04.14 Prihlásený: 17.05.14 Príspevky: 8 Témy: 1 |
No, ale ono to je v podstate násobenie matice číslom, kedže obsah $a = 6.58516512284502e-007 , čo je jedno číslo. Lenže keď dám
$A = $B * $a;
vypíše matrix size mismatch, pretože pri násobení musia sedieť veľkosti tých matíc. Takže matica B(30x30) a a(1x1) mi nevynásobí, preto som to skúšala cez ten multiply_scalar($matrix1->multiply_scalar($matrix2,$scalar), čo tiež nefunguje.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 28.04.2014 19:22 | |
|
No uz sa stracam. $a je matica 1x1? Potom to nie je skalar. (Matematicky mozno ano, ale implementaciou urcite nie.) Bud si $a zadefinuj ako normalne cislo, nie maticu 1x1 (preco to tak nemas?), pripadne mozes teda, ak to silou-mocou chces nechat, pouzit $A = $B->multiply_scalar($a->element(1,1)) - vyberies z matice ten prvy a jediny prvok, co je cislo, a vynasobis nim maticu. Vies o tom, ze nasobenie skalarom a nasobenie dvoch matic je nieco uplne ine, hej? Nepouzivaj $a a $b ako nazvy premennych, su specialne.
|
|
Registrovaný: 13.04.14 Prihlásený: 17.05.14 Príspevky: 8 Témy: 1 |
Och ospravedlňujem sa ale $a používam len ako príklad mám to zadefinované iným názvom.
Pomohlo to, už to funguje vďaka. Viem, že násobenie skalárom je iné, ale hodnotu $a mam vypočítanú ako: $a = $b / $c, kde $b a $c sú skaláry, tak som myslela, že aj $a je skalár.(Moja logika asi nič moc).
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 28.04.2014 20:12 | |
|
Musi to byt skalar, nedava to ziadny zmysel. MatrixReal nema ani operator / overloadnuty (a aj keby mal, muselo by to fungovat normalne). Skus ukazat vystup Kód: use Data::Dumper; print Dumper($a, $b, $c);
|
|
| Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Perl začiatky v Perl, Python, Ruby, CGI | 0 | 606 | 21.11.2011 19:09 black evil | | CGI & Perl v Perl, Python, Ruby, CGI | 1 | 2114 | 25.02.2008 9:39 JanoF | | Perl: hlásenie chýb v Perl, Python, Ruby, CGI | 5 | 1072 | 03.06.2011 20:00 coldak | | Perl - spustenie skriptu v Perl, Python, Ruby, CGI | 2 | 1373 | 02.08.2010 15:27 DARSON | | Napísanie skriptu v perl v Perl, Python, Ruby, CGI | 1 | 1313 | 24.10.2009 20:25 rooobertek | | datum pridania suboru (perl) v Perl, Python, Ruby, CGI | 5 | 1569 | 09.01.2009 15:04 suchy | | Regularne vyrazy v Perl v Perl, Python, Ruby, CGI | 0 | 2476 | 21.10.2007 22:41 quark | | Perl zapis XML do suboru v Perl, Python, Ruby, CGI | 4 | 675 | 09.03.2013 13:54 tangerine | | perl: spustenie prikazu so znakom % v Perl, Python, Ruby, CGI | 4 | 1016 | 23.01.2011 16:04 siginigin | | Čo je to PERL, Python, CGI v Perl, Python, Ruby, CGI | 2 | 7534 | 26.09.2009 14:19 Ded'leg | | Software tester pre telekomunikacny sektor - Perl v Ponuka práce | 0 | 594 | 08.02.2012 10:30 AuJob | | Vista a WampServer - ako spúšťať Perl skripty v Perl, Python, Ruby, CGI | 1 | 1870 | 06.12.2008 1:21 JanoF | | Je mozne skriptom jazyka perl spustat *.bat subory? v Perl, Python, Ruby, CGI | 4 | 2118 | 21.04.2008 21:00 Lucao | | PsychoStats, websuport, perl sa nedokaze pripojit k DB v Perl, Python, Ruby, CGI | 2 | 1579 | 28.02.2009 11:35 Unlink |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|