Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #28767 > unrolled thread

Pisanie programów do obliczeń symbolicznych

Started byBorneq <borneq@antyspam.hidden.pl>
First post2016-09-18 11:06 +0200
Last post2016-10-02 00:27 +0000
Articles 14 on this page of 34 — 8 participants

Back to article view | Back to pl.comp.programming


Contents

  Pisanie programów do obliczeń symbolicznych Borneq <borneq@antyspam.hidden.pl> - 2016-09-18 11:06 +0200
    Re: [Blog] Pisanie programów do obliczeń symbolicznych bartekltg <bartekltg@gmail.com> - 2016-09-18 11:50 +0200
      Re: [Blog] Pisanie programów do obliczeń symbolicznych platformowe głupki <NOSPAMtestowanije@go2.pl> - 2016-09-18 19:09 +0200
        Re: [Blog] Pisanie programów do obliczeń symbolicznych bartekltg <bartekltg@gmail.com> - 2016-09-18 19:34 +0200
    Re: Pisanie programów do obliczeń symbolicznych Nemrod <nemrod@the.crusader.knights.org> - 2016-09-18 21:20 +0200
      Re: Pisanie programów do obliczeń symbolicznych Borneq <borneq@antyspam.hidden.pl> - 2016-09-19 11:55 +0200
        Re: Pisanie programów do obliczeń symbolicznych Nemrod <nemrod@the.crusader.knights.org> - 2016-09-19 12:30 +0200
          Re: Pisanie programów do obliczeń symbolicznych slawek <fake@fakeemail.com> - 2016-09-19 15:28 +0200
            Re: Pisanie programów do obliczeń symbolicznych Nemrod <nemrod@the.crusader.knights.org> - 2016-09-19 16:18 +0200
          Re: Pisanie programów do obliczeń symbolicznych "M.M." <mmarszik@gmail.com> - 2016-09-20 03:05 -0700
            Re: Pisanie programów do obliczeń symbolicznych Borneq <borneq@antyspam.hidden.pl> - 2016-09-20 13:15 +0200
        Re: Pisanie programów do obliczeń symbolicznych slawek <fake@fakeemail.com> - 2016-09-19 15:14 +0200
          Re: Pisanie programów do obliczeń symbolicznych Nemrod <nemrod@the.crusader.knights.org> - 2016-09-19 15:56 +0200
      Re: Pisanie programów do obliczeń symbolicznych Maciej Sobczak <see.my.homepage@gmail.com> - 2016-09-19 03:26 -0700
        Re: Pisanie programów do obliczeń symbolicznych Nemrod <nemrod@the.crusader.knights.org> - 2016-09-19 12:40 +0200
          Re: Pisanie programów do obliczeń symbolicznych slawek <fake@fakeemail.com> - 2016-09-19 15:32 +0200
            Re: Pisanie programów do obliczeń symbolicznych Nemrod <nemrod@the.crusader.knights.org> - 2016-09-19 16:20 +0200
              Re: Pisanie programów do obliczeń symbolicznych slawek <fake@fakeemail.com> - 2016-09-19 17:02 +0200
          Re: Pisanie programów do obliczeń symbolicznych bartekltg <bartekltg@gmail.com> - 2016-09-19 20:05 +0200
            Re: Pisanie programów do obliczeń symbolicznych Borneq <borneq@antyspam.hidden.pl> - 2016-09-20 13:18 +0200
              Re: Pisanie programów do obliczeń symbolicznych bartekltg <bartekltg@gmail.com> - 2016-09-20 04:40 -0700
                Re: Pisanie programów do obliczeń symbolicznych Nemrod <nemrod@the.crusader.knights.org> - 2016-09-20 16:27 +0200
                  Re: Pisanie programów do obliczeń symbolicznych bartekltg <bartekltg@gmail.com> - 2016-09-20 20:24 +0200
                    Re: Pisanie programów do obliczeń symbolicznych Nemrod <nemrod@the.crusader.knights.org> - 2016-09-20 21:12 +0200
                      Re: Pisanie programów do obliczeń symbolicznych bartekltg <bartekltg@gmail.com> - 2016-09-20 21:25 +0200
              Re: Pisanie programów do obliczeń symbolicznych "M.M." <mmarszik@gmail.com> - 2016-09-20 05:22 -0700
            Re: Pisanie programów do obliczeń symbolicznych slawek <fake@fakeemail.com> - 2016-09-20 15:21 +0200
              Re: Pisanie programów do obliczeń symbolicznych bartekltg <bartekltg@gmail.com> - 2016-09-20 21:28 +0200
                Re: Pisanie programów do obliczeń symbolicznych slawek <fake@fakeemail.com> - 2016-09-21 11:18 +0200
                  Re: Pisanie programów do obliczeń symbolicznych bartekltg <bartekltg@gmail.com> - 2016-09-21 11:33 +0200
    Re: Pisanie programów do obliczeń symbolicznych slawek <fake@fakeemail.com> - 2016-09-19 14:41 +0200
      Re: Pisanie programów do obliczeń symbolicznych Borneq <borneq@antyspam.hidden.pl> - 2016-09-19 17:36 +0200
        Re: Pisanie programów do obliczeń symbolicznych slawek <fake@fakeemail.com> - 2016-09-19 18:14 +0200
    Re: Pisanie program?w do oblicze? symbolicznych antispam@math.uni.wroc.pl - 2016-10-02 00:27 +0000

Page 2 of 2 — ← Prev page 1 [2]


#28797

Frombartekltg <bartekltg@gmail.com>
Date2016-09-20 04:40 -0700
Message-ID<b8c2624c-4015-4a28-b9b7-d4f594c0e100@googlegroups.com>
In reply to#28796
On Tuesday, September 20, 2016 at 1:18:09 PM UTC+2, Borneq wrote:
> W dniu 19.09.2016 o 20:05, bartekltg pisze:
> > Akurat podałeś problem łatwy do rozwiązania na kartce,
> > ale kosztowny dla głupiego programu.
> 
> Na kartce problem, gdzie mamy wykładniczą ilość członów?

przecież widać, jak jest zbudowany. 
Ma 2^50 jednomianów, ponumerujmy te jednomiany od 0 do 2^50-1

Dla j-tego jednomainu, jeśli na k-tej liczbie w zapisie
binarnym j jest 0, jednomian zawiera czynnik z_{2*(k-1)},
nie zawiera natomiast czynnika z_{2*(k-1)+1},
Jeśli na k-tym iejscuy jest 1 - odwrotnie. 

Nie wiem po co mi taka lista, ale na kartce ją "mam". 

Zresztą, pierwsze co należy dla tego wyrażenia zrobić
to podstawić
x_i = z_2i + z2i+1 
y_i = z_2i - z2i+1
Wtedy nasz straszny wzór zamienia się na 
x_1*x_2*...*x_50,
funkcja, którą dość łatwo sobie wyobrazić,
za to pozostała połowa wymairów (y_i) nie gra zadnej roli.

pzdr
bartekltg

[toc] | [prev] | [next] | [standalone]


#28800

FromNemrod <nemrod@the.crusader.knights.org>
Date2016-09-20 16:27 +0200
Message-ID<nrrgvs$jqr$1@node1.news.atman.pl>
In reply to#28797
W dniu 2016-09-20 o 13:40, bartekltg pisze:
> On Tuesday, September 20, 2016 at 1:18:09 PM UTC+2, Borneq wrote:
>> W dniu 19.09.2016 o 20:05, bartekltg pisze:
>>> Akurat podałeś problem łatwy do rozwiązania na kartce,
>>> ale kosztowny dla głupiego programu.
>> Na kartce problem, gdzie mamy wykładniczą ilość członów?
> (...)
> Zresztą, pierwsze co należy dla tego wyrażenia zrobić
> to podstawić
> x_i = z_2i + z2i+1
> y_i = z_2i - z2i+1
> Wtedy nasz straszny wzór zamienia się na
> x_1*x_2*...*x_50,

Tak możesz zrobić, gdy masz jakieś konkretne wartości z_n {0<=n<=99}
i jest to proste, nie ma o czym gadać. Zadanie natomiast polega na tym,
że traktujemy wszystkie z_n jako niewiadome, i chcemy wymnożyć wszystko
i podać wynik. Mówiąc inaczej chcemy z postaci \Pi przejść do \Sigma.
Spróbuj teraz. Hehe :)

-- 
Nemrod Vargardsson

Pwt 32,41 Gdy miecz błyszczący wyostrzę
i wyrok wykona ma ręka,
na swoich wrogach się pomszczę,
odpłacę tym, którzy Mnie nienawidzą.
42 Upoję krwią moje strzały,
mój miecz napasie się mięsem,
krwią poległych i uprowadzonych,
głowami dowódców nieprzyjacielskich.

[toc] | [prev] | [next] | [standalone]


#28801

Frombartekltg <bartekltg@gmail.com>
Date2016-09-20 20:24 +0200
Message-ID<nrruto$6le$1@node2.news.atman.pl>
In reply to#28800
On 20.09.2016 16:27, Nemrod wrote:
> W dniu 2016-09-20 o 13:40, bartekltg pisze:
>> On Tuesday, September 20, 2016 at 1:18:09 PM UTC+2, Borneq wrote:
>>> W dniu 19.09.2016 o 20:05, bartekltg pisze:
>>>> Akurat podałeś problem łatwy do rozwiązania na kartce,
>>>> ale kosztowny dla głupiego programu.
>>> Na kartce problem, gdzie mamy wykładniczą ilość członów?
>> (...)
>> Zresztą, pierwsze co należy dla tego wyrażenia zrobić
>> to podstawić
>> x_i = z_2i + z2i+1
>> y_i = z_2i - z2i+1
>> Wtedy nasz straszny wzór zamienia się na
>> x_1*x_2*...*x_50,
>
> Tak możesz zrobić, gdy masz jakieś konkretne wartości z_n {0<=n<=99}
> i jest to proste, nie ma o czym gadać. Zadanie natomiast polega na tym,
> że traktujemy wszystkie z_n jako niewiadome, i chcemy wymnożyć wszystko

Przecież to zamiana wspołrzednych, czyli włqśnei transformata wykonana
na niewiadomych. Taka, ze wieomian 100 zmienynch wygląda w nowych
zmiennych ładniej.
Jakobian, jeśli potrzebny, to 2^50.

pzdr
bartekltg

[toc] | [prev] | [next] | [standalone]


#28802

FromNemrod <nemrod@the.crusader.knights.org>
Date2016-09-20 21:12 +0200
Message-ID<nrs1lj$97g$1@node2.news.atman.pl>
In reply to#28801
W dniu 2016-09-20 o 20:24, bartekltg pisze:
> Przecież to zamiana wspołrzednych, czyli włqśnei transformata wykonana
> na niewiadomych. Taka, ze wieomian 100 zmienynch wygląda w nowych
> zmiennych ładniej.  (...)

To i tak ci nic nie da. Żeby się o tym przekonać zastosuj teraz
transformatę odwrotną do tego "ładniejszego" wielomianu.
Chcemy konkretnego wyniku przejścia od \Pi do \Sigma.

To teraz tak się uczy metody operatorowej, że rozwiązując
równanie, wyznacza się tylko transformatę i to już koniec,
bo wygląda "ładniej"? O tempora, o mores :P

-- 
Nemrod Vargardsson

Pwt 32,41 Gdy miecz błyszczący wyostrzę
i wyrok wykona ma ręka,
na swoich wrogach się pomszczę,
odpłacę tym, którzy Mnie nienawidzą.
42 Upoję krwią moje strzały,
mój miecz napasie się mięsem,
krwią poległych i uprowadzonych,
głowami dowódców nieprzyjacielskich.

[toc] | [prev] | [next] | [standalone]


#28803

Frombartekltg <bartekltg@gmail.com>
Date2016-09-20 21:25 +0200
Message-ID<nrs2ep$9s7$1@node2.news.atman.pl>
In reply to#28802
On 20.09.2016 21:12, Nemrod wrote:
> W dniu 2016-09-20 o 20:24, bartekltg pisze:
>> Przecież to zamiana wspołrzednych, czyli włqśnei transformata wykonana
>> na niewiadomych. Taka, ze wieomian 100 zmienynch wygląda w nowych
>> zmiennych ładniej.  (...)
>
> To i tak ci nic nie da. Żeby się o tym przekonać zastosuj teraz
> transformatę odwrotną do tego "ładniejszego" wielomianu.
> Chcemy konkretnego wyniku przejścia od \Pi do \Sigma.
>
> To teraz tak się uczy metody operatorowej, że rozwiązując
> równanie, wyznacza się tylko transformatę i to już koniec,
> bo wygląda "ładniej"? O tempora, o mores :P

Wydaje mi się, ze cały czas myślisz o czymś więcej niż
napisałeś w postach.

pzdr
bartekltg


[toc] | [prev] | [next] | [standalone]


#28798

From"M.M." <mmarszik@gmail.com>
Date2016-09-20 05:22 -0700
Message-ID<0ae03b22-623f-406e-8062-886240ce23cb@googlegroups.com>
In reply to#28796
On Tuesday, September 20, 2016 at 1:18:09 PM UTC+2, Borneq wrote:
> W dniu 19.09.2016 o 20:05, bartekltg pisze:
> > Akurat podałeś problem łatwy do rozwiązania na kartce,
> > ale kosztowny dla głupiego programu.
> 
> Na kartce problem, gdzie mamy wykładniczą ilość członów?

Nie pamiętam już szczegółów, a wzorków i dziedziny nie
mogę podać. Użyłem jakiegoś darmowego programu pod linuxa. 
Cały bajer polega właśnie na tym:
1) zainstalowałem
2) przeczytałem tutorial po łebkach w 15 minut
3) wpisałem dane
4) otrzymałem wyniki z 95% skutecznoscią.
5) zarobiłem
6) zapomniałem.
Pozdrawiam

[toc] | [prev] | [next] | [standalone]


#28799

Fromslawek <fake@fakeemail.com>
Date2016-09-20 15:21 +0200
Message-ID<almarsoft.4713241730619268697@news.v.pl>
In reply to#28787
On Mon, 19 Sep 2016 20:05:47 +0200, bartekltg <bartekltg@gmail.com> 
wrote:
> Akurat podałeś problem łatwy do rozwiązania na kartce,
> ale kosztowny dla głupiego programu.

Według ciebie przeprowadzenie dowodu twierdzenia o czterech barwach 
jest łatwe do przeprowadzenia na kartce? Ciekawe czemu matematycy nie 
mogli jakoś temu podołać przez ponad sto lat, poczytaj sobie 
https://pl.m.wikipedia.org/wiki/Twierdzenie_o_czterech_barwach

[toc] | [prev] | [next] | [standalone]


#28804

Frombartekltg <bartekltg@gmail.com>
Date2016-09-20 21:28 +0200
Message-ID<nrs2l8$9s7$2@node2.news.atman.pl>
In reply to#28799
On 20.09.2016 15:21, slawek wrote:
> On Mon, 19 Sep 2016 20:05:47 +0200, bartekltg <bartekltg@gmail.com> wrote:
>> Akurat podałeś problem łatwy do rozwiązania na kartce,
>> ale kosztowny dla głupiego programu.
>
> Według ciebie przeprowadzenie dowodu twierdzenia o czterech barwach

Czytanie ze zrozumieniem ma przezłość.

Przykład Nemroda, czyli wielomian wielu zmiennych
mający pierdyliard składników po rozpisaniu.

pzdr
bartekltg

[toc] | [prev] | [next] | [standalone]


#28805

Fromslawek <fake@fakeemail.com>
Date2016-09-21 11:18 +0200
Message-ID<almarsoft.3483873633014760165@news.v.pl>
In reply to#28804
On Tue, 20 Sep 2016 21:28:40 +0200, bartekltg <bartekltg@gmail.com> 
wrote:
> Czytanie ze zrozumieniem ma przezłość.

???

> Przykład Nemroda, czyli wielomian wielu zmiennych

Pogubiłeś się. Nemrod dał przykład A. Ja dałem inny przykład B. 
Nemrod określił B jako łatwy do rozwiązania na kartce papieru. Ty 
poparłeś Nemroda co do oceny przykładu B. Choć być może chciałeś w 
istocie rzeczy ocenić A.

Fakt B jest niezaprzeczalny: dowód tw. o czterech barwach był 
przeprowadzony przy użyciu komputera. Ludzie bez takiego wspomagania 
nie dawali rady przez około sto lat. Więc nie ma co udawać że 
komputery są za głupie aby pomagać matematykom.

Co do A: równie dobrze można narzekać że komputer nie potrafi 
wydrukować wszystkich cyfr liczby pi.

[toc] | [prev] | [next] | [standalone]


#28806

Frombartekltg <bartekltg@gmail.com>
Date2016-09-21 11:33 +0200
Message-ID<nrtk4q$o2i$1@node2.news.atman.pl>
In reply to#28805
On 21.09.2016 11:18, slawek wrote:
> On Tue, 20 Sep 2016 21:28:40 +0200, bartekltg <bartekltg@gmail.com> wrote:
>> Czytanie ze zrozumieniem ma przezłość.
>
> ???
>
>> Przykład Nemroda, czyli wielomian wielu zmiennych
>
> Pogubiłeś się. Nemrod dał przykład A. Ja dałem inny przykład B. Nemrod
> określił B jako łatwy do rozwiązania na kartce papieru. Ty poparłeś
> Nemroda co do oceny przykładu B. Choć być może chciałeś w istocie rzeczy
> ocenić A.

Nie ja. Popatrz, na co odpisuję:

Nemrod:
*> Zastosowanie to chyba sprawdzanie umiejętności przedszkolaków. Tutaj
*> nawet po 50 poziomach nawiasów program się wywala. A co do dopiero by
*> było przy setkach albo tysiącach?
Ja
*Akurat podałeś problem łatwy do rozwiązania na kartce,
*ale kosztowny dla głupiego programu.

Widzisz fragment o poziomach nawiasów? To nie ma nic wspolnego
z czterokolorowaniem. Nemrod mówi tu o swoim przykładzie z wielomianem
wielu zmiennych. I do tego fragmentu się tam odnoszę.

pzdr
bartekltg


[toc] | [prev] | [next] | [standalone]


#28776

Fromslawek <fake@fakeemail.com>
Date2016-09-19 14:41 +0200
Message-ID<almarsoft.4336195781636081705@news.v.pl>
In reply to#28767
On Sun, 18 Sep 2016 11:06:04 +0200, Borneq 
<borneq@antyspam.hidden.pl> wrote:
> lispopodobnych ale ogólnego przeznaczenia C++ czy Javie. Ale jak 
napisać

W Pythonie coś jest. Niespecjalnie wnikałem, bo Mathematica i Alfa 
albo dają radę albo nie. A jak nie, to trzeba robić to siecią 
neuronową, tj. użyć mózgu. Własnego.

[toc] | [prev] | [next] | [standalone]


#28784

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-09-19 17:36 +0200
Message-ID<nrp0m0$37f$1@node1.news.atman.pl>
In reply to#28776
W dniu 19.09.2016 o 14:41, slawek pisze:
> W Pythonie coś jest. Niespecjalnie wnikałem, bo Mathematica i Alfa albo
> dają radę albo nie. A jak nie, to trzeba robić to siecią neuronową, tj.
> użyć mózgu. Własnego.

Jak na razie nic nie robiłem w Pythonie, może warto to nadrobić. Myślę 
że powolność Pythona wynika z tego, że obliczenia wykonywane są z 
dowolną precyzją i nie można tego wyłączyć.
A pytanie tego wątku jest: jak w językach w rodzaju C++ czy Java zabrać 
się za pisanie dość prostego przekształcacza wyrażeń?

[toc] | [prev] | [next] | [standalone]


#28785

Fromslawek <fake@fakeemail.com>
Date2016-09-19 18:14 +0200
Message-ID<almarsoft.5562662509108457205@news.v.pl>
In reply to#28784
On Mon, 19 Sep 2016 17:36:32 +0200, Borneq 
<borneq@antyspam.hidden.pl> wrote:
> A pytanie tego wątku jest: jak w językach w rodzaju C++ czy Java 
zabrać 
> się za pisanie dość prostego przekształcacza wyrażeń?

Normalnie. ;)

W Pythonie jest IMHO kod źródłowy www.sympy.org

Jakby tak się zastanowić... Problemem nie jest przekształcanie. 
Problemy to: upraszczanie (i to zaczynając od definicji czym ono 
jest); zapewnienie reguł niesprzecznych i zgodnych z tym co dozwolone 
w matematyce (błędne "reguły wnioskowania" były np. w Mathematica, w 
istocie rzeczy wiemy że błędy w programach się zdarzają, debugowanie 
tego to praca dla tysięcy ludzi na lata); prezentacja (tu Mathematica 
i Wofram Alpha są trudne do pobicia); wygoda (Alpha bije wszystko).

[toc] | [prev] | [next] | [standalone]


#29017 — Re: Pisanie program?w do oblicze? symbolicznych

Fromantispam@math.uni.wroc.pl
Date2016-10-02 00:27 +0000
SubjectRe: Pisanie program?w do oblicze? symbolicznych
Message-ID<nspka1$nsc$1@z-news.wcss.wroc.pl>
In reply to#28767
Borneq <borneq@antyspam.hidden.pl> wrote:
> By? kiedy? taki program Derive. Maxima jest napisana w Lispie czy j?zyku 
> lispopodobnym. S? koby?y jak Matematica czy Wolfram.
> Nic nie powinno by? przeszkod?, aby pisa? to nie w j?zykach 
> lispopodobnych ale og?lnego przeznaczenia C++ czy Javie.

Jak chcesz to wygodnie pisac to pojawia sie troche wymagan:

- elastyczne struktury danych (zaczynajac od list)
- odsmiecanie (garbage collection).  Np. jak piszesz

  a := f(g(x))

  i g zwraca dynamicznie zaalokowana strukture danych to chesz
  zeby ona znikenla kiedy jest niepotrzebna
- elastyczne przeciazanie lub beztypowosc.  Np.

   x * y

  moze oznaczac mnozenie funkcji, wyrazen, macierzy lub wektorow.
  Aby miec zgodnosc z tradycyjna notacja dobrze uzywac ten sam
  symbol (czyli '*') na oznaczanie mnozenia.

Jesli podchodzisz do problemu powaznie to pewnie chcesz zeby
program szybko dzialal a wtedy potrzebujesz szybkie procedury
arytmetyki wielokrotnej precyzji, co na dzis oznacza wstawki
w asemblerze.

Ludzie pisali programy obliczen symbolicznych w roznych
jezykach, np. Pari-GP w C, giac, ginac i Yacas w C++, jest pare
w Javie.  Jak sobie popatrzysz na Pari-GP to bedziesz wiedzial
dlaczego C slabo sie nadaje do obliczen symbolicznych: kod
jest dluzszy i malo czytelny w porownaniu z lepiej dobranym
jezykiem.  Java i C++ sa troche lepsze, ale praktyce tez
maja problemy (teoretycznie templates + biblioteki wsparcia
daja odpowiednia elastycznosc w C++).


> Ale jak napisa? 
> nawet najprostsze narz?dzie do przekszta?cania wzor?w? Raczej nie 
> stosuje si? algorytm?w lecz pewne regu?y przekszta?ce?, kt?re program 
> musi wiedzie? jak kt?re u?y?.

"Reguly przeksztalcen" to bylo 40 lat temu.  Teraz kluczem
sa algorytmy.  Na wstepie mozesz zajrzec do ksiazki
J.H. Davenport, Y. Siret, E. Tournier, "Computer Algebra -- Systems
and Algorithms for Algebraic Computation" dostepnej pod:

http://staff.bath.ac.uk/masjhd/masternew.pdf

Jako wskazowka: jedna z najprostszych operacji jest "skracanie"
ulamkow.  Zwylke to sie robi obliczajac najwiekszy spolny dzielnik
(GCD).  Dla liczb dobrze dziala algorytm Euklidesa.  Dla
wielomianow wielu zmiennych tez mozna uzyc algorytm Euklidesa.
Ale najpierw trzeba troche teorii.  Potem okazuje sie
ze naiwna implementacja jest powolna.  Szybka implementacja
uzywa nowych pomyslow.

-- 
                              Waldek Hebisch

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | pl.comp.programming


csiph-web