Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 03. 08. 2012 20:54

pepa999
Příspěvky: 133
Reputace:   10 
 

Program, co počítá sumy a produkty

Zdar, nevíte někdo o nějakém free programu, který umí počítat sumy a produkty? Může to být úplně cokoliv, co tyto dvě věci umí počítat, nic víc nepotřebuji. Díky za odpovědi.

Offline

 

#2 03. 08. 2012 21:29

jelena
Jelena
Místo: Opava
Příspěvky: 30020
Škola: MITHT (abs. 1986)
Pozice: plním požadavky ostatních
Reputace:   100 
 

Re: Program, co počítá sumy a produkty

Zdravím,

mělo by stačit WA? Sumy a Produkty

Stačí tak? Děkuji.

Téma přesunu do sekce CAS (je v tom i seznam dalších nástrojů).

Offline

 

#3 03. 08. 2012 21:40

pepa999
Příspěvky: 133
Reputace:   10 
 

Re: Program, co počítá sumy a produkty

S Wolframem mám problémy úspěšně zadat sumu, která obsahuje produkt. Přesně chci zadat toto:

$\sum_{n=0}^{M-1}(M-n)(1-d(M-n))\prod_{j=0}^{n-1}d(M-j)$

d je proměnná, která nabývá hodnot od 0 do 1...M = roundup(1/d)-1

Zajímají mě právě hodnoty té sumy pro jednotlivé hodnoty proměnné d

Offline

 

#4 03. 08. 2012 22:47

jelena
Jelena
Místo: Opava
Příspěvky: 30020
Škola: MITHT (abs. 1986)
Pozice: plním požadavky ostatních
Reputace:   100 
 

Re: Program, co počítá sumy a produkty

Tak to nevím, zda si WA poradí s takovou nabídkou indexů a proměnných. Zkusím to trochu rozluštit:

a) produkt je uvnitř sumy (doplnila jsem závorky):

$\sum_{n=0}^{M-1}\((M-n)(1-d(M-n))\(\prod_{j=0}^{n-1}d(M-j)\)\)$

b) hodnotu d budeš zadávat ručně? přičemž se bude provádět dopočet $M$ jako $M=f(d)$ a platí, že M=roundup(1/d)-1

c) suma je od $n=0$ do $n=M-1$ (výpočet $M$ je dle bodu b), produkt je od 0 do (n-1), přičemž $n=M-1$?

No nevím - zkus možná ještě popsat, jak to vzniklo a co máš v plánu takovým vzorcem počítat. Děkuji.

Offline

 

#5 04. 08. 2012 00:03

pepa999
Příspěvky: 133
Reputace:   10 
 

Re: Program, co počítá sumy a produkty

a) Jo, produkt je uvnitř sumy.... Mám pocit, že ty závorky tam být nemusí, teda aspoň takhle jsem to viděl v jedné knížce, že tam nebyly, i když by si někdo mohl myslet, že tam být mají...prostě všechno, co bylo za tou sumou se počítalo do té sumy, aji další vnořené sumy nebo produkty.

b) ano, toho právě chci dosáhnout, abych jenom měnil hodnoty d, a měnily se výsledky té sumy a já to mohl pozorovat. A to M je vlastně substituce výrazu roundup(1/d)-1, takže se to bude dělat přesně tak, jak jsi řekla.

c) ano, suma je od n=0 do n=M-1 .... Ale s tím prduktem uvntř je to jinak, pro každé n z té hlavní sumy, bude uvnitř té sumy produkt od 0 do n-1 a to n není M-1. n je nejdřív 0, pro takové n se vytvoří produkt od 0 do -1(což je prázdný součin, nebo jak se tomu říká, a ten je definován jako 1, aby se "nic nestalo"), potom je n = 1, pro takové n se vytvoří produkt od 0 do 0, potom je n = 2, pro takové n se vytvoří produkt od 0 do 1, až nakonec je n = M-1 a pro takové n se vytvoří produkt od 0 do M-1.


No, to je docela na dlouho, jak to vzniklo a co tím chci počítat, a stejně by Ti to asi moc nepomohlo v tom, jak to správně zadat do nějakého programu. Souvisí to moc s konkrétní úlohou, kterou se mi nechce vysvětlovat. Doufám, že jsem to dostatečně vysvětlil v bodech a, b, c.

Offline

 

#6 04. 08. 2012 08:53

jelena
Jelena
Místo: Opava
Příspěvky: 30020
Škola: MITHT (abs. 1986)
Pozice: plním požadavky ostatních
Reputace:   100 
 

Re: Program, co počítá sumy a produkty

Děkuji za upřesnění. Závorek možná mám více, ale tak je jednoznačně - co kam patři:

No, to je docela na dlouho, jak to vzniklo a co tím chci počítat, a stejně by Ti to asi moc nepomohlo v tom, jak to správně zadat do nějakého programu.

:-) ono v ideálním případě se může ukázat, že problém nebyl vůbec, v méně ideálním, že řešení vede jinou cestou a k jinému výsledku. Ale samozřejmě netrvám.

Tedy, pokud jsem tomu rozuměla dobře: např. pro $d=0,2$, $M=4$, potřebuješ počítat (něco se dá upravit, ale nechám to tak):
$\sum_{n=0}^{3}\((4-n)(1-0.2(4-n))\(\prod_{j=0}^{2}0.2(4-j)\)\)$

Podaří se rozepsat ruční výpočet? Děkuji.

Offline

 

#7 04. 08. 2012 09:34

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 864
Reputace:   61 
 

Re: Program, co počítá sumy a produkty

Má oblíbená maxima

Nadefinuju si funkci - třeba f():

Code:

f(x):= block([M,d,j,n],
    d: x,
    M: ceiling(1/x)-1,
    sum((M-n)*(1-d*(M-n))*product(d*(M-j),j,0,(n-1)),n,0,(M-1))    
);

a pak ji zavolám pro d=0.2:

Code:

f(0.2);

(důležitý je středník na konci každého příkazu)
a vyjde 2.4896

Je možno použít i on-line maximu, třeba zde, nebo zde.
Kde se zadá kompletní kód:

Code:

f(x):= block([M,d,j,n],
    d: x,
    M: ceiling(1/x)-1,
    sum((M-n)*(1-d*(M-n))*product(d*(M-j),j,0,(n-1)),n,0,(M-1))    
);
f(0.2);

a dáš vyhodnotit (evaluate/calculate),
místo 0.2 dáváš postupně jiné hodnoty.


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#8 04. 08. 2012 16:39 — Editoval pepa999 (04. 08. 2012 19:23)

pepa999
Příspěvky: 133
Reputace:   10 
 

Re: Program, co počítá sumy a produkty

↑ mák:
Díky moc, akorát teda se mě nelíbí a myslím, že jsem se s tím setkal i u jiných programů, že například pro d=0.90 má vyjít výsledek přesně 0.1, ale program vypíše .09999999999999998, nechápu, proč to není schopný přesně vypočítat.

A úplně ideální by bylo, kdyby ten program uměl aji řešit rovnici, kde na levé straně by byl ten vzorec a na druhé straně kladné reálné číslo a program by našel d, které takové rovnici vyhovuje. Uměl by to?

A ještě poslední dotaz, jak by se dala definovat proměnná, třeba y=0.3 a potom zavolat f(y)? Díky moc.

Offline

 

#9 05. 08. 2012 01:13 — Editoval mák (05. 08. 2012 10:17)

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 864
Reputace:   61 
 

Re: Program, co počítá sumy a produkty

Prvnímu dotazu:
Je to tím že při použití čísla s desetinou čárkou jej program musí převést do dvojkové soustavy, tam provede výpočet a aby jej zobrazil musí jej převést zpět do desítkové. Při převodu může nastat chyba, neboť převod pro některá čísla není jednoznačný. Aby se tomu vyhnulo, je lépe toto číslo zadat jako zlomek dvou celých čísel. Tedy místo 0.9 dát 9/10. Pak výpočet bude přesný.

Nebo je druhá možnost upravit program tak, aby se pokusil program převést toto číslo automaticky.

Upravený kód:

Code:

f(x):= block([M,d,j,n],
    ratprint:false,
    d: rat(x),
    M: ceiling(1/x)-1,
    sum((M-n)*(1-d*(M-n))*product(d*(M-j),j,0,(n-1)),n,0,(M-1))
)$

f(.9);

Pokud budeš potřebovat, aby funkce nevracela zlomek, ale desetinné číslo, pak takto:

Code:

f(x):= block([M,d,j,n,s],
    ratprint:false,
    d: rat(x),
    M: ceiling(1/x)-1,
    s: sum((M-n)*(1-d*(M-n))*product(d*(M-j),j,0,(n-1)),n,0,(M-1)),
    float(s)
)$

f(.9);

Druhý dotaz:
Vzhledem k tomu, že se ve výpočtu zaokrouhlují hodnoty nebude zpětný výpočet jednoduchý.

Třetí dotaz:
Maxima používá pro přiřazení dvojtečku, takže takto:

Code:

y: 0.3;
f(y);

LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson