Programmeer oplossing voor 3 zaken die mogelijk een relatie hebben

Wiskunde is niet alleen een vak op school. Kom je ergens in de praktijk (bijvoorbeeld tijdens je werk) een wiskundig probleem tegen dan kun je hier om hulp vragen.
Plaats reactie
ElAntonio
Nieuw lid
Nieuw lid
Berichten: 2
Lid geworden op: 03 mar 2019, 11:48

Programmeer oplossing voor 3 zaken die mogelijk een relatie hebben

Bericht door ElAntonio » 03 mar 2019, 12:15

Drie koersen
a)
b)
c)

Als ik stel dat 1 van deze waarden verdacht is.
Hoe ziet mijn programmeer instructie er dan uit als de uitkomst moet zijn 'de verdachte waarde zou de waarde 99Y moeten hebben'
De E,G en U hoeven niet altijd een oplossingsmogelijkheid te bieden (ik kan ook , , aangeboden krijgen)
Ik kan natuurlijk brute force :twisted: alles gaan zitten uitrekenen, maar er moet m.i. een elegantere :D :idea: oplossing zijn.

met programmeerinstructie bedoel ik bijvoorbeeld C#, C++, Algol, Java, VB

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: Programmeer oplossing voor 3 zaken die mogelijk een relatie hebben

Bericht door arie » 03 mar 2019, 14:53

Wat bedoel je met een verdachte waarde ?

In je voorbeeld:

a) E = 1.3 U
b) E = 0.8 G
c) G = 1.6 U

Uit a) en b) volgt: G = 1.3/0.8 = 1.625 U [vergelijkbaar met c)]
Uit a) en c) volgt: E = 1.3/1.6 = 0.8125 G [vergelijkbaar met b)]
Uit b) en c) volgt: E = 0.8*1.6 = 1.28 U [vergelijkbaar met a)]

Welke waarde is hier verdacht?

ElAntonio
Nieuw lid
Nieuw lid
Berichten: 2
Lid geworden op: 03 mar 2019, 11:48

Re: Programmeer oplossing voor 3 zaken die mogelijk een relatie hebben

Bericht door ElAntonio » 05 mar 2019, 10:14

gewoon een van de waarden waarvan 'men' denkt die zou wel eens niet kunnen kloppen.
het tot stand komen van de a, b en c vergelijkingen heeft een indicatie gegeven dat 1 van de waarden misschien wat minder vast is dan uit de vergelijking blijkt.

a) E = 1.30 U
b) E = 0.80 G
c) G = 1.60 U

dus E=0.80*1.60U => E=1.28U (van b&c)

Nu zijn er twee waarden voor dezelfde eenheid. (a) E=1.30U en (b&c) E=1.28U en dat is niet juist.
Wat ik (xonder brute force) wil weten is:
Wat is het E 'verschil' (1.30U-1.28U)=0.02U;
Wat is het G 'verschil' ....
Wat is het U 'verschil' ....
Daarna kan ik de minst verdachte waarde aanwijzen als basis en zodoende de uitkomst bepalen op 0.02U of -0.02U.

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: Programmeer oplossing voor 3 zaken die mogelijk een relatie hebben

Bericht door arie » 07 mar 2019, 06:53

Afbeelding

Als alle koersen gegeven worden in de vorm
\(X = a \cdot Y\)
dan kan je ze weergeven in een gewogen gerichte graaf.
In bovenstaand plaatje heb ik dat gedaan voor jouw voorbeeld.

Merk op: voor elke pijl van Y naar X voor
\(X = a \cdot Y\)
is er ook een pijl terug voor
\(Y = \frac{1}{a} \cdot X\)
(in het plaatje de rode getallen).

De padlengte in deze graaf is het product van de gewichten van alle pijlen in dat pad:
Lengte(UE) = 1.3
Lengte(UGE) = 1.6 * 0.8 = 1.28

In elke component (in dit voorbeeld is er 1 component: alle knopen zijn met elkaar verbonden) van je graaf kan je dan gaan zoeken naar het kortste en het langste pad van X naar Y.
Hiervoor bestaan een groot aantal standaard algoritmes, zie bijvoorbeeld deze 3 sites:
https://en.wikipedia.org/wiki/Path_(graph_theory)
https://en.wikipedia.org/wiki/Shortest_ ... cted_graph
https://en.wikipedia.org/wiki/Longest_path_problem

Voor het kortste pad zal je cycles moeten zien te vermijden:
n keer een cycle met lengte \(0.8\) doorlopen geeft een factor \(0.8^n\) in je pad, en dat gaat naar nul als n naar oneindig gaat.

Voor het langste pad zal je naar brute kracht moeten: dit probleem is NP-compleet.
Maar mogelijk wil je slechts de lengtes van paden met een beperkt aantal pijlen onderzoeken.
Bijvoorbeeld:
Als je het directe pad XY vergelijkt met het pad XABCDEFGY, dan kan een verdachte (zeg te hoge) waarde van FG de waarde van XY ook verdacht maken. Als in dit geval ook nog andere pijlen (bv. AB en BC) iets te hoog zijn, dan wordt XY zelfs verdachter dan FG.
Als je het aantal pijlen per pad beperkt houdt, zal een brute kracht oplossing waarschijnlijk goed haalbaar zijn.

Plaats reactie