Topic: Polinomų daugyba bei sudėtis

Sveiki,

gal kam teko su šia problema susidurti? Reiktų patarimo kaip polinomus dauginti ir kaip juos saugoti. Sakykim turiu (x-1)^2  , o tai, lygu x^2-2x+1 . Tai kaip pavyzdys, gali reikti apskaičiuoti (x+2)^10 . Gal kas turi kokių minčių? :)

Re: Polinomų daugyba bei sudėtis

Nelabai supratau problemos, ar ji susijusi su saugojimu ar su aritmetinėm operacijom ar su matematinių užrašų interpretavimu?

Jeigu problema ta, kad kintamieji ir DB laukų tipai per maži, kad tilptų norimi duomenys tai reikia juos gal pradėti saugoti string/text tipo laukuose.

Taip pat PHP turi biblioteką skirtą dirbti su aukštesnio lygio matematiką, vadinasi bcmath (http://www.php.net/manual/en/ref.bc.php).

Re: Polinomų daugyba bei sudėtis

Aš neįsivaizduoju kaip padaryti daugybą ir sudėtį. pavyzdžiui 3x+5x = 8x  arba (3y+3)*2y = 6y^2+6y
Kokiū būdu galima būdu saugot šias reikšmes

Re: Polinomų daugyba bei sudėtis

Tu klausi kaip kintamąjį padauginti iš reiškmės, ar kaip išspręsti uždavinį, kai vartotojas įveda visa lygtį?

5 (edited by versus 2007-11-08 17:58:39)

Re: Polinomų daugyba bei sudėtis

Kaip kintamąjį padauginti iš reikšmės. Toliau tai susitvarkysiu kaip nors. Tiesiog nesugalvoju kokiu būdu visa tai saugoti. Aišku būtų gerai, kad PHP turėtų galimybę iškart atlikti tokius veiksmus, pvz: 3x+5x = 8x , bet abejoju :)
Galvoju gal tada į masyvą dėti. Sakykim reiškinys bus 8x^4-4x^2+2x+1 Ir saugoti tokiu būdu masyvas[laipsnis]=koeficientas, nes bus tik x, jokių y ar z. šiuo atveju masyvo reikšmės bus [4]=8,[2]=-4,[1]=2,[0]=1 , bet tada kitas klausimas, ar masyvo indeksas gali būti neigiamas... Ar gal geresnių būdų yra šių duomenų saugojimui?

Re: Polinomų daugyba bei sudėtis

versus wrote:

Kaip kintamąjį padauginti iš reikšmės.

$rezultatas = $kintamasis * $reiksme;

.. bet tikriausiai tu kalbėjai ne apie PHP kintamuosius? (-;

versus wrote:

Toliau tai susitvarkysiu kaip nors. Tiesiog nesugalvoju kokiu būdu visa tai saugoti. Aišku būtų gerai, kad PHP turėtų galimybę iškart atlikti tokius veiksmus, pvz: 3x+5x = 8x , bet abejoju :)
Galvoju gal tada į masyvą dėti. Sakykim reiškinys bus 8x^4-4x^2+2x+1 Ir saugoti tokiu būdu masyvas[laipsnis]=koeficientas, nes bus tik x, jokių y ar z. šiuo atveju masyvo reikšmės bus [4]=8,[2]=-4,[1]=2,[0]=1 , bet tada kitas klausimas, ar masyvo indeksas gali būti neigiamas... Ar gal geresnių būdų yra šių duomenų saugojimui?

Tame ir esmė, kad tu kalbi NE apie kintamojo dauginimą iš reikšmės, o apie vartotojo įvestos sąlygos išparsinimo iš išsprendimo. Bendrai kalbant ši tema yra labai plati. Todėl nesukonkretinus visų sąlygų, kažką konkrečiai pasakyti labai negaliu.

Kartais uždavinys būną toks: parašyti programą, kuri išsprendžia kvadratinę lygtį. Tokiu atveju paprastai vartotojo prašoma įvesti tik lygties kintamųjų daugiklių. Kitaip sakant vietoje eilutės "3x^2 -16x + 1 = 0" prašoma įvesti tris skaičius: "3", "-16" ir "1". Tada viskas labai paprasta.

O kalbant apie sprendimo radimą bet kokioms, vartotojo įvestoms lygtims, tai nepastudijavus bent jau aukštosios matematikos (Teiloro eiličių) ir neišmokus programiškai dirbti su kalbom/gramatikom (šiuo atveju matematikos sintakse) to pradėti daryti nerekomentuoju.

Re: Polinomų daugyba bei sudėtis

Na, nerašiau visko, kad nenuskambėtų taip, jog prašau už mane padaryti viską :) Bet matyt visko neišdėsčius sunkiau suprasti, ko noriu. Tai va, man reikia apskaičiuoti bet kokį polinomą (x + konstanta)^laipsnis . Kontanta gali būti bet kokia (teigiama ar neigiama) o laipsnis tik teigiamas, tačiau riba jam nėra apibrėžta. Sakykim turim (x+2)^3 , kitaip sakant (x+2)*(x+2)*(x+2)=(x^2+4x+4)(x+2)=(x^3+4x^2+4x+2x^2+8x+8)=(x^3+6x^2+12x+8) Man iš šios išraiškos reikia koeficientų, t.y. pavadinkime, kad atsakymas būtų toks [koeficientas:x pakeltas laipsniu] ; 8:0,  12:1, 6:2, 1:3, 0:4, 0:5 ir t.t.  Kaip ir sakiau, reik sugalvoti būdą programiškai kaip dauginti polinomus (pvz. x+2)*(x+2)=(x^2+4x+4) ) ir kaip po to prastinti reiškinius (pvz. (x^3+4x^2+4x+2x^2+8x+8)=(x^3+6x^2+12x+8) )

Re: Polinomų daugyba bei sudėtis

a) darai viską taip, lyg darytum su pieštuku popieriaus lape, gali naudoti ir masyvus;
b) ieškai lengvesnio matematinio metodo, kurį būtų lengviau realizuoti programiškai;