abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 1
včera 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 6
včera 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 1
včera 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
včera 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
1.12. 15:16 | Komunita

Na GOG.com začal zimní výprodej. Řada zlevněných her běží oficiálně také na Linuxu. Hru Neverwinter Nights Diamond lze dva dny získat zdarma. Hra dle stránek GOG.com na Linuxu neběží. Pomocí návodu ji lze ale rozběhnout také na Linuxu [Gaming On Linux].

Ladislav Hagara | Komentářů: 1
1.12. 13:14 | Bezpečnostní upozornění

Byla vydána verze 2.7.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Řešeno je několik bezpečnostních problémů. Aktualizován byl především Tor Browser na verzi 6.0.7. Tor Browser je postaven na Firefoxu ESR (Extended Support Release) a právě ve Firefoxu byla nalezena a opravena vážná bezpečnostní chyba MFSA 2016-92 (CVE-2016-9079, Firefox SVG Animation

… více »
Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 760 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Výpočet přírustku funkce o dvou proměnných

14.4.2011 03:32 __dark__
Výpočet přírustku funkce o dvou proměnných
Přečteno: 618×
Ahoj,

vím, že je to celkem triviální úloha, ale nějak jsem se zasekl a nemůžu s tím hnout. Jde o to, že mám opravdu primitivní funkci o dvou proměnných 'x * y * C' a já bych potřeboval spočítat přírustek (delta), tak, abych v cyklu mohl jen přičítat tuto deltu a mít výsledek. X a Y se mění lineárně.

Funkční kód vypadá takto:
int i;

double x, dx;
double y, dy;
double C;

// nějaké startovní podmínky
x = 5;
y = 7;
C = 4.55;

// dx/dy je lineární.
dx = 0.1;
dy = 0.05;

for (i = 0; i < 1000; i++)
{
  double d = x * y * C;
  printf("%f\n", d);

  x += dx;
  y += dy;
}
Můj problém je, že bych v tom cyklu chtěl jen sčítat, takto bych si to představoval:
int i;

double x, dx;
double y, dy;
double C;

// nějaké startovní podmínky
x = 5;
y = 7;
C = 4.55;

// dx/dy je lineární.
dx = 0.1;
dy = 0.05;

// výpočet d a delty, popřípadě delta-delta?
double d = x * y * C;
double delta = ???

for (i = 0; i < 1000; i++)
{
  printf("%f\n", d);

  d += delta;
}
Pro výpočet delty jsem zkusil více možností, jsem si celkem jistý, že tam musí být y*dx*C + x*dy*C, ale něco mi tam chybí.

Takže, je tu nějaký zkušený matematik, co by věděl:_) ?

Odpovědi

14.4.2011 03:47 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Pro zájemnce krátký testovací program v Pythonu, hledám d_d_d (delta-delta)
import math

def f(x, y, C):
  return x * y * C
  
x = 1.5
y = 1.9
C = 1.4
dx = 1.5
dy = 1.1

d = f(x, y, C)
d_d = x * dy * C + y * dx * C + dx * dy * C
d_d_d = dx * C + dy * C

for i in xrange(0, 10):
  a = f(x, y, C)
  d
  
  if abs(a - d) > 0.001:
    print "a=%f b=%f (FAILED)" % (a, d)   
  else:
    print "a=%f b=%f (OK)" % (a, d)   
  
  d += d_d
  d_d += d_d_d
  x += dx
  y += dy
14.4.2011 04:00 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Protože mi to nedalo, musel jsem to vyřešit sám :-) Je potřeba i druhá derivace funkce, takže mám 2 přírůstky (d, d_d), které jsou:
d   = x * dy * C + y * dx * C + dx * dy * C
d_d = 2 * C * dx * dy
Takže uzavřít :-)
14.4.2011 08:37 l4m4
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Nemá to hlavu ani patu.

Čeho se snažíš dosáhnout tím sčítáním? Proč počítáš derivace a zase je sčítáš? To je jako psát program ověřující 1 == 1.

Když máš přimitivní funkci, tak už nemáš co sčítat a počítat nějaké delty, to už je výsledek.

Výsledek je v každém případě funkcí dvou proměnných. To co děláš, může být pokus o pohyb po nějaké nespecifikované křivce v rovině (x,y), která je zde náhodou přímka se sklonem dy/dx, nebo taky nesmysl.

S těmi druhýmí derivacemi je to úplný blábol.
14.4.2011 10:06 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Zjevně nechápeš, co je něco počítat v cyklu:) Přikládám testovací program, který už funguje. Šlo o to, abych spočítal průběh té funkce, aniž bych musel dosazovat do f(), takže jsem spočítal přírustek (d), a přírůstek přírůstku (d_d).

Nechce se mi hledat skripta a přesný název toho, co hledám, ale v Mathematice se na to dá použít funkce DifferenceDelta[].

Jde mi o výkon, tato funkce je část jiné funkce, kterou už jsem měl hotovou, jen tato malá věc, kde bylo x a y neseparovatelné, mi způsobila trochu problém:)
import math

def f(x, y, C):
  return x * y * C
  
x = 1.5
y = 1.9
C = 1.4
dx = 1.9
dy = 1.5

d = f(x, y, C)
d_d = x * dy * C + y * dx * C + dx * dy * C # První
d_d_d = 2 * C * dx * dy # Druhá

for i in xrange(0, 10):
  a = f(x, y, C)
  
  if abs(a - d) > 0.001:
    print "a=%f b=%f (FAILED)" % (a, d)   
  else:
    print "a=%f b=%f (OK)" % (a, d)   
  
  d += d_d
  d_d += d_d_d
  x += dx
  y += dy
14.4.2011 13:39 l4m4
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Šlo o to, abych spočítal průběh té funkce, aniž bych musel dosazovat do f()
No dobře, to je popis toho, co děláš. Ale tím, že to popíšeš, to nezačne dávat smysl.

Proč nechceš počítat hodnotu funkce, když ji spočítat dovedeš? Je to skoro vždy mnohem jednodušší než numerická integrace -- v tvém případě je to zcela evidentně jednodušší. Jediná důležitá praktická výjimka, kterou znám, je obecný Bresenhamův algoritmus pro rasterizaci algebraických křivek, ale tam je to právě tou diskretizací do rastru.

A že to s tou druhou derivací provádí něco smysluplného je zde dáno čistě tím, že Taylorův rozvoj té funkce končí u druhého řádu. Takže ve skutečnosti počítáš přímo zase hodnotu té funkce, akorát ten polynom máš hrozně složitě rozepsaný.
14.4.2011 18:14 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Protože chci počátat diferenciál, stačí?
14.4.2011 10:12 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
A jinak sorry, ale trvdit o něčem, že to nemá hlavu ani patu, když máš k dispozici i zdroják na otestování, je trochu ubohé. Ta funkce je taky hodně primitivní, takže sis chtěl asi jen rýpnout ne...?

S tou druhou derivací to zase takový blábol nebude, protože nehledám parciální, ale úplnou.
14.4.2011 13:51 l4m4
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
A jinak sorry, ale trvdit o něčem, že to nemá hlavu ani patu když máš k dispozici i zdroják na otestování, je trochu ubohé.
Mohu a budu s klidem tvrdit, že to nemá to hlavu ani patu, i kdyby k tomu bylo deset testovacích zdrojáků, pokud nemá hlavu ani patu původní formulace problému.
Ta funkce je taky hodně primitivní, takže sis chtěl asi jen rýpnout ne...?
Primitivní funkce je (zhruba řečeno) taková, kterou když zderivuji, dostanu původní funkci. Tato vlastnost není kvantifikovatelná. Buď funkce k dané funkci primitivní je, nebo není, nemůže být více nebo méně primitivní.
S tou druhou derivací to zase takový blábol nebude, protože nehledám parciální, ale úplnou.
Děkuji za potvrzení, že to je naprostý blábol.

Parciální derivace je derivace podle jednoho argumentu.

Totální derivace je pojem, který má smysl, pouze pokud jsou některé argumenty funkcemi dalších argumentů/proměnných. To zde má nastávat konkrétně kde a jak? A i pak se v první totální derivaci vyksytují stále jen particální derivace. Totéž pro totální diferenciál.
14.4.2011 18:15 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Děkuji za potvrzení, že to je naprostý blábol.

Parciální derivace je derivace podle jednoho argumentu.

Totální derivace je pojem, který má smysl, pouze pokud jsou některé argumenty funkcemi dalších argumentů/proměnných. To zde má nastávat konkrétně kde a jak? A i pak se v první totální derivaci vyksytují stále jen particální derivace. Totéž pro totální diferenciál.
Funkce x*y má diferenciál, a diferenciál diferenciálu, já fakt nevím, co je na tom nepochopytelné.
14.4.2011 19:49 l4m4
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Dokážeš vůbec rozlišit mezi derivací a diferenciálem?

Nepochopitelné je, jak tu žonglueš matematickými pojmy.
14.4.2011 21:35 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Nepochopitelné je, že si tu jediný, kdo nepochopil, o co jde. Namísto analytického řešení tu plácáš něco o numerické matematice na příkladu x*y. Pokud nemáš nic k tématu, tak opravdu nechápu, jaký mají tvoje komentáře smysl.
Dokážeš vůbec rozlišit mezi derivací a diferenciálem?
Dokážu, ale netvářím se, že to spolu nesouvisí...
Nepochopitelné je, jak tu žonglueš matematickými pojmy.
No vidíš, a ty do toho přidáváš elektrárny a mosty. Máš tu nejvíc příspěvků, a trumfl tě ten nejmenší co tu je.
14.4.2011 10:21 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
jen tak pro upresneni, to neni zadna druha derivace, ale jen dosazeni, totalni diferencial te funkce je df(x,y) = C*y*dx + C*x*dy, pricemz vis, ze y = x0 + i*dx, y = y0 + i*dy a to dosadis za x a y pri vypoctu totalniho diferencialu a dostanes (pro i-tou iteraci) \Delta f = C*x0*dy + C*y0*dx + i*2*C*dx*dy
14.4.2011 10:26 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
ech, su blbej, pochopitelne je to diferencial diredencialu...
14.4.2011 13:55 l4m4
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Pokud potřebuješ numericky řešit diferenciální rovnici, tak se podívej na Runge-Kuttovu metodu (nebo spíš metody, je to celá rodina metod), což je skutečná a dobré metoda vyššího řádu. Nejdířv ale budeš muset ten problém smysluplně formulovat.
14.4.2011 18:09 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Ale já už jsem to dávno vyřešil, tak nevím co pořád máš. Nic numericky řešit nepotřebuju, když se to dalo udělat analyticky...
14.4.2011 19:56 l4m4
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
ROTFL!

Vážně, při tomto jsem málem spadl ze židle. Akorát doufám, že nebudeš projektovat jaderné elektrárny, mosty, nebo raději vůbec cokoli, s čím přijdu v životě do styku.
14.4.2011 21:39 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Já zase padám ze židle z toho, že se celou dobu tváříš, že absolutně nelze pochopit dotaz. Ostatní to pochopili, takže bude asi problém u tvého vedení:)
14.4.2011 19:37 VM
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Dělal bych to takhle - zkontrolujte to po mě, netestoval jsem to. Možná je to blbě, ale myšlenka by tam být měla.

Teorie:
"d" se v jednom kroku zvětší o C*x*dy + C*dx*y (označíme "a")
"C*x*dy" se zvětší o C*dx*dy
"C*dx*y" se zvětčí také o C*dx*dy, tuto konstantu označíme "b/2"
Takže "C*x*dy + C*dx*y" se zvětší o "b"
Takže by mělo stačit něco ve smyslu:
d=x*y*C;
a=C*(x*dx+dx*y);
b=2*dx*dy*C;
for(i=0; i<1000; i++) {
    printf("%f\n",d);
    d+=a;
    a+=b;
}

14.4.2011 19:53 __dark__
Rozbalit Rozbalit vše Re: Výpočet přírustku funkce o dvou proměnných
Já už jsem to vyřešil, ale to a se mi nezdá:) Potřeboval jsem diferenciál této funkce:
d = x^2 * (r^2 - fy^2) + y^2 * (r^2 - fx^2) + x*y * (2*fx*fy)
Ale problém jsem měl právě s tím x*y:)

Celý kód je zde:

http://code.google.com/p/fog/source/browse/trunk/Fog/Fog/G2d/Render/Render_C/PGradientRadial_p.h

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.