Matte i programmering
Skriv ett program som löser ekvationen, där a, b reella tal och n är ett positivt heltal. Användaren av programmet ska kunna välja talen n, a och b själv.
blir detta rätt, använder 3.9.5 men läraren föreslog 3.7.0 men hittar inte den och känns som det bara blir konstigt
print("Programmet löser ut rötterna till ekvationen Z**n = a + bi, du väljer själv n, a, b")
from math import* #ger tillgång till bl.a. pi och trigonometriska funktioner
a = int(input("a= ")) #int(input) ger variablerna värdet som användaren anger. Int gör att värdet av det inskriva blir ett heltal.
b = int(input("b= "))
n = int(input("n= "))
v = atan2(b, a) #Tan**-1 ger värdet av vinkeln v. atan2 används för att programmet ska veta vilken kvadrant talet finns i.
r = (sqrt(a**2+b**2))**(1/n) #Ger r värdet av absolutbeloppet av Z, och tar sedan n-roten ut för att få r till rätt grad.
k = 0 #k är antalet varv i enhetscirkeln
while k<n: #Detta gör att ekvationen görs om tills det att k = n-1, för att ekvationen har lika många rötter som n och python börjar räkna vid 0
z = r*(cos((v+k*2*pi)/n)+complex(0,1)*sin((v+k*2*pi)/n)) #Detta är den generella formeln för att ta ut rötter i en polynomekvation.
print(f"Z{k} = {z:.3f}") #f-string används för att svaret ska skrivas ut som Z0, Z2 osv..= svaret. Detta för att tydligöra resultatet. :.3 är till för att avrunda till 3 decimaler.
k = k + 1 # Varje gång uträkningen sker ökar värdet på k med 1. Annars hade inte uträkningen gått vidare till nästa rot.
"hittar inte den och känns som det bara blir konstigt" är en vag beskrivning som gör det svårt att hjälpa dig. Är det ZeroDivisionErroe som är problemet så bör du skriva det. Är det så och vet du inte hur du ska lösa det?
Använd verktyget "Infoga programmeringskod" som ser ut som {;} för att infogad kod ska bli läsbar.