Files
  • main.py
  • graph.png
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#----------------------------------------------#
# Program för att visualisera reella lösningar 
# till ekvationen x^y=y^x
#
# Problemställningen och den 
# bakomliggande matematiken finns presenterad i 
# artikeln: 
# "Ekvationen x^y=y^x - 
# Exempel på problemlösning med hjälp 
# av programmering" publicerad i
# Nämnaren 2018:3
#
# Anders Johansson
# Vuxenutbildningen Falkenberg
#----------------------------------------------#

# Importera numpy för att kunna använda arrayer # på ett smidigt sätt, t. ex. linspace
import numpy as np

# Importera matplotlib för att kunna 
# skapa en graf
import matplotlib.pyplot as plt 

# Definiera en funktion som beräknar x(k)
def x(k):
  return k**(1/(k-1))

# Definiera en funktion som beräknar y(k)
def y(k):
  return k**(k/(k-1))

# Definiera arrayer
xArray=[]
yArray=[]

# Ange största x- och y-värde 
# att visa i grafen
max_value=50

# Skapa arrayer. Gör det i två steg för att 
# undvika värdet k=1 och få med båda grenarna.

# Syntax för linspace: 
# linspace(startvärde, slutvärde, antal värden)
mArray1=np.linspace(1/max_value,0.9,1000) 
mArray2=np.linspace(1.05,max_value,1000)  
mArray=np.append(mArray1,mArray2)         

# Beräkna x- och y-värden med funktionerna 
# x och y
for m in mArray:
  xArray.append(x(m))
  yArray.append(y(m))
#endfor

# Skapa graf för icke-triviala och 
# triviala lösningar
plt.plot(xArray, yArray, 'r',[0, max_value], [0, max_value], 'b--')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Lösningar till ekvationen x^y=y^x')
plt.legend(('Icke-triviala lösningar', 'Triviala lösningar'), loc='upper center', shadow=False)
plt.grid(True)
plt.show()
plt.savefig('graph.png')
Python 3.6.1 (default, Dec 2015, 13:05:11) [GCC 4.8.2] on linux