[ Príspevkov: 16 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.14
Prihlásený: 17.05.14
Príspevky: 8
Témy: 1 | 1
NapísalOffline : 13.04.2014 20:18 | Perl

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";
      }
      }


Offline

Čestný člen
Čestný člen
Perl

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 13.04.2014 22:09 | Perl

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?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.14
Prihlásený: 17.05.14
Príspevky: 8
Témy: 1 | 1
Napísal autor témyOffline : 13.04.2014 22:43 | Perl

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ť


Offline

Čestný člen
Čestný člen
Perl

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 16.04.2014 18:46 | Perl

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.14
Prihlásený: 17.05.14
Príspevky: 8
Témy: 1 | 1
Napísal autor témyOffline : 20.04.2014 21:43 | Perl

ď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


Offline

Užívateľ
Užívateľ
Perl

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157 | 157
Bydlisko: KK/PP/BA
NapísalOffline : 21.04.2014 0:55 | Perl

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:05

Ruby 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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.14
Prihlásený: 17.05.14
Príspevky: 8
Témy: 1 | 1
Napísal autor témyOffline : 21.04.2014 21:48 | Perl

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


Offline

Čestný člen
Čestný člen
Perl

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 21.04.2014 22:25 | Perl

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.14
Prihlásený: 17.05.14
Príspevky: 8
Témy: 1 | 1
Napísal autor témyOffline : 24.04.2014 20:24 | Perl

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?


Offline

Čestný člen
Čestný člen
Perl

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 25.04.2014 12:44 | Perl

Ano, urcite pouzi cpan. http://perlmaven.com/how-to-install-a-p ... n#dwimperl


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.14
Prihlásený: 17.05.14
Príspevky: 8
Témy: 1 | 1
Napísal autor témyOffline : 28.04.2014 15:28 | Perl

Ď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?


Offline

Čestný člen
Čestný člen
Perl

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 28.04.2014 16:48 | Perl

No, to asi dava zmysel, ze multiply_scalar nebude urceny na nasobenie dvoch matic... :D aha, hned prva veta v dokumentacii nefunguje? http://search.cpan.org/~leto/Math-Matri ... ESCRIPTION

Druhy dotaz, asi chces assign().


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.14
Prihlásený: 17.05.14
Príspevky: 8
Témy: 1 | 1
Napísal autor témyOffline : 28.04.2014 19:05 | Perl

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.


Offline

Čestný člen
Čestný člen
Perl

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 28.04.2014 19:22 | Perl

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.14
Prihlásený: 17.05.14
Príspevky: 8
Témy: 1 | 1
Napísal autor témyOffline : 28.04.2014 19:58 | Perl

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).


Offline

Čestný člen
Čestný člen
Perl

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 28.04.2014 20:12 | Perl

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);


 [ Príspevkov: 16 ] 


Perl



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Perl začiatky

v Perl, Python, Ruby, CGI

0

610

21.11.2011 19:09

black evil

V tomto fóre nie sú ďalšie neprečítané témy.

Perl - spustenie skriptu

v Perl, Python, Ruby, CGI

2

1381

02.08.2010 15:27

DARSON

V tomto fóre nie sú ďalšie neprečítané témy.

CGI & Perl

v Perl, Python, Ruby, CGI

1

2120

25.02.2008 9:39

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Perl: hlásenie chýb

v Perl, Python, Ruby, CGI

5

1079

03.06.2011 20:00

coldak

V tomto fóre nie sú ďalšie neprečítané témy.

Regularne vyrazy v Perl

v Perl, Python, Ruby, CGI

0

2481

21.10.2007 22:41

quark

V tomto fóre nie sú ďalšie neprečítané témy.

Napísanie skriptu v perl

v Perl, Python, Ruby, CGI

1

1316

24.10.2009 20:25

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

datum pridania suboru (perl)

v Perl, Python, Ruby, CGI

5

1574

09.01.2009 15:04

suchy

V tomto fóre nie sú ďalšie neprečítané témy.

perl: spustenie prikazu so znakom %

v Perl, Python, Ruby, CGI

4

1024

23.01.2011 16:04

siginigin

V tomto fóre nie sú ďalšie neprečítané témy.

Perl zapis XML do suboru

v Perl, Python, Ruby, CGI

4

680

09.03.2013 13:54

tangerine

V tomto fóre nie sú ďalšie neprečítané témy.

Čo je to PERL, Python, CGI

v Perl, Python, Ruby, CGI

2

7543

26.09.2009 14:19

Ded'leg

V tomto fóre nie sú ďalšie neprečítané témy.

Software tester pre telekomunikacny sektor - Perl

v Ponuka práce

0

597

08.02.2012 10:30

AuJob

V tomto fóre nie sú ďalšie neprečítané témy.

Vista a WampServer - ako spúšťať Perl skripty

v Perl, Python, Ruby, CGI

1

1875

06.12.2008 1:21

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Je mozne skriptom jazyka perl spustat *.bat subory?

v Perl, Python, Ruby, CGI

4

2124

21.04.2008 21:00

Lucao

V tomto fóre nie sú ďalšie neprečítané témy.

PsychoStats, websuport, perl sa nedokaze pripojit k DB

v Perl, Python, Ruby, CGI

2

1582

28.02.2009 11:35

Unlink



© 2005 - 2024 PCforum, edited by JanoF