       Re: Re: can Mathematica be useful for this?

• To: mathgroup at smc.vnet.net
• Subject: [mg56537] Re: [mg56505] Re: [mg56457] can Mathematica be useful for this?
• From: DrBob <drbob at bigfoot.com>
• Date: Thu, 28 Apr 2005 02:40:37 -0400 (EDT)
• References: <200504260533.BAA14385@smc.vnet.net> <200504270154.VAA01802@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Rules can do a bit more of the work:

initialize[p_] := (
Clear@p;
p[True] = 1; p[False] = 0;
p[Or[A_, B_]] :=
p[A] + p[B] - p[LogicalExpand[And[A, B]]];
p[Not[A_]] := 1 - p[A];
p[HoldPattern[And[X__]]] /; Not[OrderedQ[{X}]] := p[And @@ (Sort[{X}])];
p[f_ && g_ && Not[s_]] /; FreeQ[{f,
g}, _Not | s] := p[f && g] - p[f && g && s])

initialize@p

p[S]=1/3;p[F]=26/100;p[G]=2/10;p[F&&S]=15/100;p[F&&G]=5/100;
p[G&&S]=1/10;p[F&&G&&S]=2/100;

p[S || F || G]

77/150

p[! (F || S || G)]

73/150

p /@ {F || G || S, F && S && !G,
F &&  !S && G, !F && S && G, F && G && S}
% . {1, -1, -1, -1, -1}

{77/150, 13/100, 3/100, 2/25, 1/50}
19/75

Bobby

On Tue, 26 Apr 2005 21:54:02 -0400 (EDT), Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:

>
> On 26 Apr 2005, at 14:33, pedrito6 at softhome.net wrote:
>
>> Hi there!
>>
>> I need to check the answer of many probability problems.
>> Most of them are quite simple but calculating them by hand is tedious.
>>
>> They are like this:
>> "It's necessary to choose a person for a mission overseas. If you
>> choose
>> him randomly the probability that he speaks a foreign languague is:
>> S=Spanish; F=French; G=German
>> P(S)=0.33;     P(F)=0,26;      P(G)=0.2;
>> P(S and F)=0.15;     P(F and G)=0.05;     P(S and G)=0.1
>> P(S and F and G)=0.02
>>
>>  -What is the probability that he just speaks one foreign language?
>>  -What is the probability that he doesn't speak any?"
>>
>> Could be Mathematica useful for solving this kind of problems?
>>
>
>
> It can certainly be useful, e.g. in the sense that it will do your
> arithmetic for you. You can also automate some computations but how
> effective this will be will depend on how much prior programming you do
> and on the type of problem. Here is a very simple example of what might
> be done.
> We implement a simple probability measure p. We use the logical
> functions Or and And for the Union and Intersection of events. Our
> probability function p satisfies the following rules:
>
> p[True] = 1; p[False] = 0;
>
> p[Or[A_,B_]]:=p[A]+p[B]-p[LogicalExpand[And[A,B]]];
>
>
> p[Not[A_]]:=1-p[A];
>
>
> p[HoldPattern[And[X__]]]/;Not[OrderedQ[{X}]]:=p[And@@(Sort[{X}])]
>
> We also use the data which you provided, where I rationalised the
> probabilities to make Mathematica use exact arithmetic.
>
> p[S] = 1/3; p[F] = 26/100; p[G] = 2/10; p[F && S] = 15/100; p[F && G] =
> 5/100;
>   p[G && S] = 1/10; p[F && G && S] = 2/100;
>
>
> Now some probabilities can be computed automatically. The event that
> the chosen person speaks at least one language is Or[S,F,G] and this is
>
>
> p[S || F || G]
>
> 77/150
>
> This means that we know the answer to the second question; the
> probability that he speaks no foreign languages is:
>
> p[ !(F || S || G)]
>
>
> 73/150
>
> The first question is slightly more difficult. The probability that a
> person speaks at least one language is the disjoint union of the events
> that he speaks exactly one language, exactly two languages and exactly
> three languages. We are given the probability that he speaks exactly
> three p[F && G && S]. Let's first compute the probability that he
> speaks exactly two. This event is the disjoint union of three events F
> && S &&  !G ,   F && G &&  !S and G && S &&  !F. We know that the even
> F && S is the disjoint union of F && S && G and F && S && !G , etc. So
> using the equalities:
> F && S == (F && G && S) || (F && S &&  !G)], F && G == (F && G && S) ||
> (F && G &&  !S) and G && S = (G && S && F) || (G &&S && !F) we get
>
>
> Simplify[Simplify[p[F && S] ==
>      p[(F && G && S) || (F && S &&  !G)]]]
>
>
> 100*p[F && S &&  !G] == 13
>
>
> Simplify[p[F && G] == p[(F && G && S) || (F && G &&  !S)]]
>
>
> 100*p[F && G &&  !S] == 3
>
>
> Simplify[p[G && S] == p[(G && S && F) || (G && S &&  !F)]]
>
>
> 25*p[G && S &&  !F] == 2
>
> So the probability that he speaks exactly one language is:
>
> 77/150 - 2/100 - 13/100 - 3/100 - 2/25
>
> 19/75
>
> One could try to automate these computations further, possibly by
> introducing conditional probability p[A,B] and maybe using backtracking
> but this is too complicated and time consuming to consider here.
>
>
>
>
>
> Andrzej Kozlowski
> Chiba, Japan
> http://www.akikoz.net/andrzej/index.html
> http://www.mimuw.edu.pl/~akoz/
>
>
>
>

--
DrBob at bigfoot.com

```

• Prev by Date: AW: Converting a mapping into a well-defined function
• Next by Date: Re: Converting a mapping into a well-defined function
• Previous by thread: Re: can Mathematica be useful for this?
• Next by thread: can Mathematica be useful for this?