Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Mathematica 7 - polinomi (zadatak)

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Ostalo - ozbiljno -> Čistilište
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
athlet
Gost





PostPostano: 14:00 ned, 30. 5. 2010    Naslov: Mathematica 7 - polinomi Citirajte i odgovorite

Pozdrav svima!
Imam problem u vezi jednog zadatka a potrebno je koristiti Mathematicu: Zadani su prirodni brojevi n i m. Moram napisati algoritam koji će generirati sve polinome stupnja manjeg od n s cjelobrojnim koeficijentima iz segmenta [-m,m].
Zatim moram za svaki od tih polinoma odrediti nultočke i prikazati ih kao točke u kompleksnoj ravnini.
Nadam se da ima netko tko mi može dati nekakav savjet, hitno mi je.
Tnx !
Pozdrav svima!
Imam problem u vezi jednog zadatka a potrebno je koristiti Mathematicu: Zadani su prirodni brojevi n i m. Moram napisati algoritam koji će generirati sve polinome stupnja manjeg od n s cjelobrojnim koeficijentima iz segmenta [-m,m].
Zatim moram za svaki od tih polinoma odrediti nultočke i prikazati ih kao točke u kompleksnoj ravnini.
Nadam se da ima netko tko mi može dati nekakav savjet, hitno mi je.
Tnx !


[Vrh]
goranm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12)
Postovi: (906)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
218 = 249 - 31

PostPostano: 18:14 ned, 30. 5. 2010    Naslov: Citirajte i odgovorite

Prva ideja koja mi pada na pamet je prilično brute force i u nekim koracima se dosta može optimizirati.

Ideja je ta da se formiraju sve uređene n-torke čiji su elementi iz skupa [-m,m]. To se postiže funkcijom [tt]Tuples[Range[-m,m],n][/tt]. Uređene n-torke će nam trebati jer će prva označavati slobodan član, druga koeficijent uz x, treća uz x^2 itd.

Sve te n-torke čine listu koju nazovemo npr. [tt]koef[/tt] i zatim pomoću funkcije [tt]FromCoefficientRules[/tt] konstruiramo sve polinome sa koeficijentima iz liste koef.

Funkcija [tt]FromCoefficientRules[/tt] zahtjeva poseban format pravila kojim konstruira polinome, a to pravilo je oblika

[code:1]{{0}->a[0],{1}->a[1],...,{n-1}->a[n-1]}[/code:1]

(vidi help za detalje) što znači da se 0-tom članu polinoma pridružuje koeficijent a[0], prvom članu se pridružuje koeficijent a[1] itd. pa će biti potrebno napisati funkciju koja uređenoj n-torki oblika {a[0],a[1],...,a[n-1]} pridružuje n-torku oblika {{0}->a[0],{1}->a[1],...,{n-1}->a[n-1]}. To nije teško, napravi se pomoću jedne for petlje i funkcije [tt]AppendTo[/tt].

Cijeli ovaj postupak se utrpa u funkciju koju nazovemo npr. [tt]generator[n_,m_][/tt] koja će vratiti listu sa svim generiranim polinomima.

To je bio najteži dio zadatka, dalje je jednostavnije. Za rješavanje polinoma mogu se koristiti funkcije [tt]Root[/tt] ili [tt]Solve[/tt], a prikaz u kompleksnoj ravnini je isto kao što i prikaz u [latex]\mathbb{R}^2[/latex] gdje je nultočka x+iy nekog polinoma prikazana kao točka (x,y) u [latex]\mathbb{R}^2[/latex].

[size=9][color=#999999]Added after 48 minutes:[/color][/size]

A evo i koda.

[quote][code:1]ToPolynomial[koef_List] := Module[{i, rules = {}},
For[i = 0, i <= Length[koef] - 1, i++,
AppendTo[rules, {i} -> koef[[i + 1]]]
];
Return[rules]
][/code:1]

[code:1]generator[n_Integer, m_Integer] :=
Module[{i, lista1 = {}, lista2 = {}, polinomi = {}},
lista1 = Tuples[Range[-m, m], n];
For[i = 1, i <= Length[lista1], i++,
AppendTo[lista2, ToPolynomial[lista1[[i]]]
];
];
polinomi = MapThread[FromCoefficientRules, {{lista2}, {x}}][[1]];
Return[polinomi]
][/code:1]

[code:1]Nul[poly_] := Module[{i, nultocke = {}},
For[i = 1, i <= Exponent[poly, x], i++,
AppendTo[nultocke, Root[poly, i]]];
Return[nultocke]
][/code:1]

[code:1]Koord[poly_] := Module[{lista = {}},
For[i = 1, i <= Length[Nul[poly]], i++,
AppendTo[lista, {Re[Nul[poly][[i]]], Im[Nul[poly][[i]]]}]
];
Return[lista]
][/code:1]

[code:1]NacrtajRjesenja[polinomi_List, element_Integer] :=
ListPlot[Koord[polinomi[[element]]]][/code:1]

Uz napomenu da su svi računi egzaktni. Budući postoje polinomi čije nultočke Mathematica ne zna egzaktno izračunati, za te polinome neće uspjeti nacrtati rješenja. Tu bi se trebala, kod traženja nultočaka polinoma u funkciji [tt]Nul[/tt], ubaciti neka funkcija koja će naći numeričko rješenje.
[/quote]
Prva ideja koja mi pada na pamet je prilično brute force i u nekim koracima se dosta može optimizirati.

Ideja je ta da se formiraju sve uređene n-torke čiji su elementi iz skupa [-m,m]. To se postiže funkcijom Tuples[Range[-m,m],n]. Uređene n-torke će nam trebati jer će prva označavati slobodan član, druga koeficijent uz x, treća uz x^2 itd.

Sve te n-torke čine listu koju nazovemo npr. koef i zatim pomoću funkcije FromCoefficientRules konstruiramo sve polinome sa koeficijentima iz liste koef.

Funkcija FromCoefficientRules zahtjeva poseban format pravila kojim konstruira polinome, a to pravilo je oblika

Kod:
{{0}->a[0],{1}->a[1],...,{n-1}->a[n-1]}


(vidi help za detalje) što znači da se 0-tom članu polinoma pridružuje koeficijent a[0], prvom članu se pridružuje koeficijent a[1] itd. pa će biti potrebno napisati funkciju koja uređenoj n-torki oblika {a[0],a[1],...,a[n-1]} pridružuje n-torku oblika {{0}→a[0],{1}→a[1],...,{n-1}→a[n-1]}. To nije teško, napravi se pomoću jedne for petlje i funkcije AppendTo.

Cijeli ovaj postupak se utrpa u funkciju koju nazovemo npr. generator[n_,m_] koja će vratiti listu sa svim generiranim polinomima.

To je bio najteži dio zadatka, dalje je jednostavnije. Za rješavanje polinoma mogu se koristiti funkcije Root ili Solve, a prikaz u kompleksnoj ravnini je isto kao što i prikaz u gdje je nultočka x+iy nekog polinoma prikazana kao točka (x,y) u .

Added after 48 minutes:

A evo i koda.

Citat:
Kod:
ToPolynomial[koef_List] := Module[{i, rules = {}},
  For[i = 0, i <= Length[koef] - 1, i++,
   AppendTo[rules, {i} -> koef[[i + 1]]]
   ];
  Return[rules]
  ]


Kod:
generator[n_Integer, m_Integer] :=
 Module[{i, lista1 = {}, lista2 = {}, polinomi = {}},
  lista1 = Tuples[Range[-m, m], n];
  For[i = 1, i <= Length[lista1], i++,
   AppendTo[lista2, ToPolynomial[lista1[[i]]]
     ];
   ];
  polinomi = MapThread[FromCoefficientRules, {{lista2}, {x}}][[1]];
  Return[polinomi]
  ]


Kod:
Nul[poly_] := Module[{i, nultocke = {}},
  For[i = 1, i <= Exponent[poly, x], i++,
   AppendTo[nultocke, Root[poly, i]]];
  Return[nultocke]
  ]


Kod:
Koord[poly_] := Module[{lista = {}},
  For[i = 1, i <= Length[Nul[poly]], i++,
   AppendTo[lista, {Re[Nul[poly][[i]]], Im[Nul[poly][[i]]]}]
   ];
  Return[lista]
  ]


Kod:
NacrtajRjesenja[polinomi_List, element_Integer] :=
 ListPlot[Koord[polinomi[[element]]]]


Uz napomenu da su svi računi egzaktni. Budući postoje polinomi čije nultočke Mathematica ne zna egzaktno izračunati, za te polinome neće uspjeti nacrtati rješenja. Tu bi se trebala, kod traženja nultočaka polinoma u funkciji Nul, ubaciti neka funkcija koja će naći numeričko rješenje.



_________________
The Dude Abides


Zadnja promjena: goranm; 20:54 ned, 30. 5. 2010; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 18:48 ned, 30. 5. 2010    Naslov: Citirajte i odgovorite

Stvarno se zahvaljujem na iscrpnom odgovoru. Vidim da si mi napisao i kod, pošto ja nisam baš upućen skroz u mathematicu ipak su mi neke stvarni ne jasne. Ovo kod rules mi nije jasno šta se tu ustvari definira. Ako mi možeš malo pojasnit kod



[code:1]{{0}->a[0],{1}->a[1],...,{n-1}->a[n-1]}[/code:1]

kako da definiram te sve članove, jer mi , ..., ne prihvaća te točkice?
Stvarno se zahvaljujem na iscrpnom odgovoru. Vidim da si mi napisao i kod, pošto ja nisam baš upućen skroz u mathematicu ipak su mi neke stvarni ne jasne. Ovo kod rules mi nije jasno šta se tu ustvari definira. Ako mi možeš malo pojasnit kod



Kod:
{{0}->a[0],{1}->a[1],...,{n-1}->a[n-1]}


kako da definiram te sve članove, jer mi , ..., ne prihvaća te točkice?


[Vrh]
goranm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12)
Postovi: (906)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
218 = 249 - 31

PostPostano: 20:52 ned, 30. 5. 2010    Naslov: Citirajte i odgovorite

To su pravila pomoću kojih mathematica generira polinom kada su zadani samo koeficijenti.

Npr. sa
[code:1]FromCoefficientRules[{{0}->1,{1}->1,{2}->1,{3}->1},x][/code:1]
generirati će se polinom [latex]1+x+x^2+x^3[/latex], dok će
[code:1]FromCoefficientRules[{{0}->-17,{1}->3,{2}->7,{3}->-5,{4}->9},x][/code:1]
generirati polinom [latex]-17+3x+7x^2-5x^3+9x^4[/latex].

Točkice neće prihvatiti jer eksplicitno moraš definirati sve koeficijente. Ukoliko želiš generirati polinom npr. [latex]17+19x^3[/latex] moraš pozvati funkciju [tt]FromCoefficientRules[/tt] sa argumentom

[code:1]{{0}->17,{1}->0,{2}->0,{3}->19}[/code:1]
To su pravila pomoću kojih mathematica generira polinom kada su zadani samo koeficijenti.

Npr. sa
Kod:
FromCoefficientRules[{{0}->1,{1}->1,{2}->1,{3}->1},x]

generirati će se polinom , dok će
Kod:
FromCoefficientRules[{{0}->-17,{1}->3,{2}->7,{3}->-5,{4}->9},x]

generirati polinom .

Točkice neće prihvatiti jer eksplicitno moraš definirati sve koeficijente. Ukoliko želiš generirati polinom npr. moraš pozvati funkciju FromCoefficientRules sa argumentom

Kod:
{{0}->17,{1}->0,{2}->0,{3}->19}



_________________
The Dude Abides
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 11:24 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

Skužio sam to za FromCoefficientRules funkciju, ali mi baš i ne generira polinome. Ovaj tvoj kod je potpun ili treba nešto mjenjati? Probao sam svašta ali mi ne ide baš.
Skužio sam to za FromCoefficientRules funkciju, ali mi baš i ne generira polinome. Ovaj tvoj kod je potpun ili treba nešto mjenjati? Probao sam svašta ali mi ne ide baš.


[Vrh]
goranm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12)
Postovi: (906)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
218 = 249 - 31

PostPostano: 14:04 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

Da, moj kod radi. Ne mogu ti bolje pomoći ako ne napišeš svoj kod i što se izbaci kao output, neka greška ili nešto drugo.
Da, moj kod radi. Ne mogu ti bolje pomoći ako ne napišeš svoj kod i što se izbaci kao output, neka greška ili nešto drugo.



_________________
The Dude Abides
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 14:14 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

[quote="goranm"]Da, moj kod radi. Ne mogu ti bolje pomoći ako ne napišeš svoj kod i što se izbaci kao output, neka greška ili nešto drugo.[/quote]

Kad ga probam u Mathematici ništa mi ne izbacuje, pa sam mislio možda da nisi sve varijable definirao, nemam pojma. Pretpostavljam da ja nešto krivo radim samo ni nije jasno šta.
goranm (napisa):
Da, moj kod radi. Ne mogu ti bolje pomoći ako ne napišeš svoj kod i što se izbaci kao output, neka greška ili nešto drugo.


Kad ga probam u Mathematici ništa mi ne izbacuje, pa sam mislio možda da nisi sve varijable definirao, nemam pojma. Pretpostavljam da ja nešto krivo radim samo ni nije jasno šta.


[Vrh]
goranm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12)
Postovi: (906)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
218 = 249 - 31

PostPostano: 14:59 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

[quote="Anonymous"][quote="goranm"]Da, moj kod radi. Ne mogu ti bolje pomoći ako ne napišeš svoj kod i što se izbaci kao output, neka greška ili nešto drugo.[/quote]

Kad ga probam u Mathematici ništa mi ne izbacuje, pa sam mislio možda da nisi sve varijable definirao, nemam pojma. Pretpostavljam da ja nešto krivo radim samo ni nije jasno šta.[/quote]
Napiši ovdje točno ono što si napisao u Mathematici (ili napravi printscreen presliku ekrana), ovako napamet ne mogu znati zašto ti ne radi.
Anonymous (napisa):
goranm (napisa):
Da, moj kod radi. Ne mogu ti bolje pomoći ako ne napišeš svoj kod i što se izbaci kao output, neka greška ili nešto drugo.


Kad ga probam u Mathematici ništa mi ne izbacuje, pa sam mislio možda da nisi sve varijable definirao, nemam pojma. Pretpostavljam da ja nešto krivo radim samo ni nije jasno šta.

Napiši ovdje točno ono što si napisao u Mathematici (ili napravi printscreen presliku ekrana), ovako napamet ne mogu znati zašto ti ne radi.



_________________
The Dude Abides
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 15:39 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

[code:1]ToPolynomial[koef_List] := Module[{i, rules = {}},
For[i = 0, i <= Length[koef] - 1, i++,
AppendTo[rules, {i} -> koef[[i + 1]]]
];
Return[rules]
]

generator[n_Integer, m_Integer] :=
Module[{i, lista1 = {}, lista2 = {}, polinomi = {}},
lista1 = Tuples[Range[-m, m], n];
For[i = 1, i <= Length[lista1], i++,
AppendTo[lista2, ToPolynomial[lista1[[i]]]
];
];
polinomi = MapThread[FromCoefficientRules, {{lista2}, {x}}][[1] ];
Return[polinomi]
]

Nul[poly_] := Module[{i, nultocke = {}},
For[i = 1, i <= Exponent[poly, x], i++,
AppendTo[nultocke, Root[poly, i]]];
Return[nultocke]
]

Koord[poly_] := Module[{lista = {}},
For[i = 1, i <= Length[Nul[poly]], i++,
AppendTo[lista, {Re[Nul[poly][[i]]], Im[Nul[poly][[i]]]}]
];
Return[lista]
]

NacrtajRjesenja[polinomi_List, element_Integer] :=
ListPlot[Koord[polinomi[[element]]]][/code:1]


Ubacim kao što si i ti napisao prvi put kod. Kad ga pokušam pokrenuti ništa se ne događa. Nešto krivo radim, a neznam što.
Kod:
ToPolynomial[koef_List]  := Module[{i, rules = {}},
  For[i = 0, i <= Length[koef] - 1, i++,
   AppendTo[rules, {i} -> koef[[i + 1]]]
    ];
  Return[rules]
   ]

generator[n_Integer, m_Integer] :=
 Module[{i, lista1 = {}, lista2 = {}, polinomi = {}},
  lista1 = Tuples[Range[-m, m], n];
  For[i = 1, i <= Length[lista1], i++,
   AppendTo[lista2, ToPolynomial[lista1[[i]]]
      ];
    ];
  polinomi = MapThread[FromCoefficientRules, {{lista2}, {x}}][[1]  ];
  Return[polinomi]
   ]

Nul[poly_] := Module[{i, nultocke = {}},
  For[i = 1, i <= Exponent[poly, x], i++,
   AppendTo[nultocke, Root[poly, i]]];
  Return[nultocke]
   ]

Koord[poly_] := Module[{lista = {}},
  For[i = 1, i <= Length[Nul[poly]], i++,
   AppendTo[lista, {Re[Nul[poly][[i]]], Im[Nul[poly][[i]]]}]
    ];
  Return[lista]
   ]

NacrtajRjesenja[polinomi_List, element_Integer] :=
 ListPlot[Koord[polinomi[[element]]]]



Ubacim kao što si i ti napisao prvi put kod. Kad ga pokušam pokrenuti ništa se ne događa. Nešto krivo radim, a neznam što.


[Vrh]
goranm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12)
Postovi: (906)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
218 = 249 - 31

PostPostano: 15:53 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

Ništa se ne događa jer se te funkcije, nakon učitavanja, trebaju i pokrenut sa nekim konkretnim argumentima.

Nakon što te funkcije učitaš u memoriju i onda upišeš npr. [tt]generator[3,2][/tt], to će generirati sve polinome stupnja manjeg od 3 sa cjelobrojnim koeficijentima iz [-2,2], tj. napraviti će se lista čiji su elementi takvi polinomi.

Funkcijom [tt]NacrtajRjesenja[generator[n,m],i][/tt] nacrtati će rješenja i-tog polinoma u listi [tt]generator[n,m][/tt].

Npr. [tt]NacrtajRjesenja[generator[3,2],1][/tt] nacrtati će rješenja polinoma -2-2x-2x^2 jer je taj polinom prvi element liste [tt]generator[3,2][/tt].

Samo mala napomena: jer su svi računi egzaktni, Mathematica neće moći egzaktno naći rješenja nekih polinoma i tu bi se funkcije za nalaženje nultočaka trebale zamijeniti pripadnim numeričkim funkcijama.
Ništa se ne događa jer se te funkcije, nakon učitavanja, trebaju i pokrenut sa nekim konkretnim argumentima.

Nakon što te funkcije učitaš u memoriju i onda upišeš npr. generator[3,2], to će generirati sve polinome stupnja manjeg od 3 sa cjelobrojnim koeficijentima iz [-2,2], tj. napraviti će se lista čiji su elementi takvi polinomi.

Funkcijom NacrtajRjesenja[generator[n,m],i] nacrtati će rješenja i-tog polinoma u listi generator[n,m].

Npr. NacrtajRjesenja[generator[3,2],1] nacrtati će rješenja polinoma -2-2x-2x^2 jer je taj polinom prvi element liste generator[3,2].

Samo mala napomena: jer su svi računi egzaktni, Mathematica neće moći egzaktno naći rješenja nekih polinoma i tu bi se funkcije za nalaženje nultočaka trebale zamijeniti pripadnim numeričkim funkcijama.



_________________
The Dude Abides
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 16:05 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

In[41]:= generator[3, 2]

During evaluation of In[41]:= FromCoefficientRules::cstruct: The coefficient list {ToPolynomial[Range[-m,m]],ToPolynomial[n]} does not have the correct structure. >>

Out[41]= FromCoefficientRules[{ToPolynomial[Range[-m, m]],
ToPolynomial[n]}, x][code]



To dobijem sad, kad unesem generator[3,2].
In[41]:= generator[3, 2]

During evaluation of In[41]:= FromCoefficientRules::cstruct: The coefficient list {ToPolynomial[Range[-m,m]],ToPolynomial[n]} does not have the correct structure. >>

Out[41]= FromCoefficientRules[{ToPolynomial[Range[-m, m]],
ToPolynomial[n]}, x][code]



To dobijem sad, kad unesem generator[3,2].


[Vrh]
goranm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12)
Postovi: (906)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
218 = 249 - 31

PostPostano: 17:28 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

Ne znam zašto to radi. Da li si pokrenuo funkciju ToPolynomial? Probaj staviti čitav kod u jednu ćeliju i onda u idućoj pokreni generator[3,2]. Tako bi trebalo biti isto kao i kod mene, a meni izbacuje:

[img]http://i47.tinypic.com/2hwcnqf.jpg[/img]
Ne znam zašto to radi. Da li si pokrenuo funkciju ToPolynomial? Probaj staviti čitav kod u jednu ćeliju i onda u idućoj pokreni generator[3,2]. Tako bi trebalo biti isto kao i kod mene, a meni izbacuje:




_________________
The Dude Abides
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 17:48 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

a evo sad i meni isto izbacuje. Možda se mathematica malo zablokirala. Ponovo sam ju pokrenu i sad hoće. E hvala ti što si odvojio vrijeme za pomaganje i pravljenje koda. Imaš piće negdje :D
Daj mi samo reci kako da sad za svaki taj polinom izračunam nultočku, tj. jel isto moram koristiti for petlju s nekim brojačem?
a evo sad i meni isto izbacuje. Možda se mathematica malo zablokirala. Ponovo sam ju pokrenu i sad hoće. E hvala ti što si odvojio vrijeme za pomaganje i pravljenje koda. Imaš piće negdje Very Happy
Daj mi samo reci kako da sad za svaki taj polinom izračunam nultočku, tj. jel isto moram koristiti for petlju s nekim brojačem?


[Vrh]
Gost






PostPostano: 18:12 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

Kužim sad kako radi i sve, ali tek kad si mi objasnio. Da dobijem sva rješenja, znači brojčana, trebao bi koristit funkciju NSolve. Komplicirano mi je to napravit za svaki, odnosno u petlji jer nisam skoro pa nikad radio u mathematici. Jesam neke trivijalne zadatke, ali ovo je ipak puno kompliciranije. Isto tako bi mi trebao sve te točke nacrtati na jednom grafu.
Kužim sad kako radi i sve, ali tek kad si mi objasnio. Da dobijem sva rješenja, znači brojčana, trebao bi koristit funkciju NSolve. Komplicirano mi je to napravit za svaki, odnosno u petlji jer nisam skoro pa nikad radio u mathematici. Jesam neke trivijalne zadatke, ali ovo je ipak puno kompliciranije. Isto tako bi mi trebao sve te točke nacrtati na jednom grafu.


[Vrh]
goranm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12)
Postovi: (906)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
218 = 249 - 31

PostPostano: 18:48 pon, 31. 5. 2010    Naslov: Citirajte i odgovorite

Da, možeš sa for petljom u kojoj [tt]i[/tt] ide od 1 do [tt]Length[generator[n,m]][/tt] i u svakom koraku računa nultočkue od [tt]generator[n,m][[i]][/tt], tj. od i-tog polinoma u listi generator[n,m]. Rješenja polinoma nalaze se funkcijom [tt]Roots[/tt] ili [tt]Solve[/tt].

Malo brži (i puno manje čitljiv) način je da funkciju [tt]Roots[/tt] primijeniš na čitavu listu generator[n,m], npr.

[code:1]Map[Roots[#, x] &, Map[# == 0 &, generator[3, 2]]][/code:1]

će izbaciti rješenja za sve polinome (osim konstantnih) u listi generator[3,2].

Ako trebaš rješenja svih polinoma nacrtat na jednom grafu, onda se samo treba formirati lista čiji su elementi koordinate (x,y) koje predstavljaju nultočku x+iy nekog polinoma. Funkciju koja nultočke x+iy nekog polinoma pretvara u koordinate (x,y) već imaš, to je funkcija [tt]Koord[poly][/tt]. Sada se samo treba nekako formirati lista svih nultočaka, npr. sa
[code:1]SveNultocke[polinomi_List] := Module[{i, nultocke = {}},
nultocke = Koord[polinomi[[1]]];
For[i = 2, i <= Length[polinomi], i++,
nultocke = Union[nultocke, Koord[polinomi[[i]]]]
];
Return[nultocke]
][/code:1]
i onda će se pozivom funkcije
[code:1]ListPlot[SveNultocke[generator[3,2]]][/code:1] nacrtati sve nultocke svih polinoma stupnja manjeg od 3 sa cjelobrojnim koeficijentima iz [-2,2].
Da, možeš sa for petljom u kojoj i ide od 1 do Length[generator[n,m]] i u svakom koraku računa nultočkue od generator[n,m][[i]], tj. od i-tog polinoma u listi generator[n,m]. Rješenja polinoma nalaze se funkcijom Roots ili Solve.

Malo brži (i puno manje čitljiv) način je da funkciju Roots primijeniš na čitavu listu generator[n,m], npr.

Kod:
Map[Roots[#, x] &, Map[# == 0 &, generator[3, 2]]]


će izbaciti rješenja za sve polinome (osim konstantnih) u listi generator[3,2].

Ako trebaš rješenja svih polinoma nacrtat na jednom grafu, onda se samo treba formirati lista čiji su elementi koordinate (x,y) koje predstavljaju nultočku x+iy nekog polinoma. Funkciju koja nultočke x+iy nekog polinoma pretvara u koordinate (x,y) već imaš, to je funkcija Koord[poly]. Sada se samo treba nekako formirati lista svih nultočaka, npr. sa
Kod:
SveNultocke[polinomi_List] := Module[{i, nultocke = {}},
  nultocke = Koord[polinomi[[1]]];
  For[i = 2, i <= Length[polinomi], i++,
   nultocke = Union[nultocke, Koord[polinomi[[i]]]]
   ];
  Return[nultocke]
  ]

i onda će se pozivom funkcije
Kod:
ListPlot[SveNultocke[generator[3,2]]]
nacrtati sve nultocke svih polinoma stupnja manjeg od 3 sa cjelobrojnim koeficijentima iz [-2,2].



_________________
The Dude Abides
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Ostalo - ozbiljno -> Čistilište Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan