Differences between revisions 31 and 32
Revision 31 as of 2012-05-09 04:06:56
Size: 10234
Editor: jason
Comment:
Revision 32 as of 2014-06-18 20:08:47
Size: 14786
Editor: janehlong
Comment:
Deletions are marked like this. Additions are marked like this.
Line 293: Line 293:

== Another Interactive Venn Diagram ==
by Jane Long (adapted from http://wiki.sagemath.org/interact/misc)

This interact models a problem in which a certain number of people are surveyed to see if they participate in three different activities (running, biking, and swimming). Users can indicate the numbers of people in each category, from 0 to 100. Returns a graphic of a labeled Venn diagram with the number of people in each region. Returns an explanatory error message if user input is inconsistent.

{{{#!sagecell
# Adapted from http://wiki.sagemath.org/interact/misc
# An_Interactive_Venn_Diagram

# This interact models problems in which a certain number of people are surveyed to see if they participate in three different activities (running, biking, and swimming). Users can indicate the numbers of people, from 0 to 100. Returns a graphic of a labeled Venn diagram with the number of people in each region. Returns an explanatory error message if user input is inconsistent.

@interact
def _(T=slider([0..100],default=100,label='People surveyed'),X=slider([0..100],default=28,label='Run'), Y=slider([0..100],default=33,label='Bike'), Z=slider([0..100],default=59,label='Swim'),XY=slider([0..100],default=16,label='Run and Bike'),XZ=slider([0..100],default=13,label='Run and Swim'),YZ=slider([0..100],default=12,label='Bike and Swim'),XYZ=slider([0..100],default=7,label='Run, Bike, and Swim')):
    
    centers = [(cos(n*2*pi/3), sin(n*2*pi/3)) for n in [0,1,2]]
    scale = 1.7
    clr = ['yellow', 'blue', 'green']
    G = Graphics()
    for i in range(3):
        G += circle(centers[i], scale, rgbcolor=clr[i],
             fill=True, alpha=0.3)
    for i in range(3):
        G += circle(centers[i], scale, rgbcolor='black')
    
    # Label sets
    G += text('Run',(3,0),rgbcolor='black')
    G += text('Bike',(-1,3),rgbcolor='black')
    G += text('Swim',(-1,-3),rgbcolor='black')
    
    # Plot pairs of intersections
    ZX=XZ-XYZ
    G += text(ZX, (1.3*cos(2*2*pi/3 + pi/3), 1.3*sin(2*2*pi/3 + pi/3)), rgbcolor='black')
    YX=XY-XYZ
    G += text(YX, (1.3*cos(0*2*pi/3 + pi/3), 1.3*sin(0*2*pi/3 + pi/3)), rgbcolor='black')
    ZY=YZ-XYZ
    G += text(ZY, (1.3*cos(1*2*pi/3 + pi/3), 1.3*sin(1*2*pi/3 + pi/3)), rgbcolor='black')
   
    # Plot what is in one but neither other
    XX=X-ZX-YX-XYZ
    G += text(XX, (1.5*centers[0][0],1.7*centers[0][1]), rgbcolor='black')
    YY=Y-ZY-YX-XYZ
    G += text(YY, (1.5*centers[1][0],1.7*centers[1][1]), rgbcolor='black')
    ZZ=Z-ZY-ZX-XYZ
    G += text(ZZ, (1.5*centers[2][0],1.7*centers[2][1]), rgbcolor='black')

    # Plot intersection of all three
    G += text(XYZ, (0,0), rgbcolor='black')
    
    # Indicate number not in X, in Y, or in Z
    C=T-XX-YY-ZZ-ZX-ZY-YX-XYZ
    G += text(C,(3,-3),rgbcolor='black')
    
    # Check reasonableness before displaying result
    if XYZ>XY or XYZ>XZ or XYZ>YZ or XY>X or XY>Y or XZ>X or XZ>Z or YZ>Y or YZ>Z or C<0:
        print 'This situation is impossible!'
        if XYZ > XY:
            print 'The number of people who run, bike, and swim cannot be greater than the number of people who run and bike! (Why?)'
        if XYZ > XZ:
            print 'The number of people who run, bike, and swim cannot be greater than the number of people who run and swim! (Why?)'
        if XYZ > YZ:
            print 'The number of people who run, bike, and swim cannot be greater than the number of people who bike and swim! (Why?)'
        if XY > X:
            print 'The number of people who run and bike cannot be greater than the number of people who run! (Why?)'
        if XY > Y:
            print 'The number of people who run and bike cannot be greater than the number of people who bike! (Why?)'
        if XZ > X:
            print 'The number of people who run and swim cannot be greater than the number of people who run! (Why?)'
        if XZ > Z:
            print 'The number of people who run and swim cannot be greater than the number of people who swim! (Why?)'
        if YZ > Y:
            print 'The number of people who bike and swim cannot be greater than the number of people who bike! (Why?)'
        if YZ > Z:
            print 'The number of people who bike and swim cannot be greater than the number of people who swim! (Why?)'
        if C<0:
            print 'You have indicated too many people! The number of people exceeds the number of people surveyed. (Why?)'
    else:
        G.show(aspect_ratio=1, axes=False)
}}}

Sage Interactions - Miscellaneous

goto interact main page

Hearing a trigonometric identity

by Marshall Hampton. When the two frequencies are well separated, we hear the right hand side of the identity. When they start getting close, we hear the higher-pitched factor in the left-hand side modulated by the lower-pitched envelope.

sinsound.png

Karplus-Strong algorithm for plucked and percussive sound generation

by Marshall Hampton

KarplusStrong.png

An Interactive Venn Diagram

veng.png

Unreadable code

by Igor Tolkov

unreadable.png

Profile a snippet of code

profile.png

Evaluate a bit of code in a given system

by William Stein (there is no way yet to make the text box big):

evalsys.png

Minkowski Sum

by Marshall Hampton

minksum.png

Cellular Automata

by Pablo Angulo, Eviatar Bach

cellular2.png

Another Interactive Venn Diagram

by Jane Long (adapted from http://wiki.sagemath.org/interact/misc)

This interact models a problem in which a certain number of people are surveyed to see if they participate in three different activities (running, biking, and swimming). Users can indicate the numbers of people in each category, from 0 to 100. Returns a graphic of a labeled Venn diagram with the number of people in each region. Returns an explanatory error message if user input is inconsistent.

interact/misc (last edited 2020-06-05 20:32:41 by mathzeta2)