2 svar
377 visningar
hejsan01 154
Postad: 16 maj 2021 11:41

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.

Lindehaven 820 – Lärare
Postad: 17 maj 2021 00:42

"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?

Laguna Online 30711
Postad: 17 maj 2021 06:59

Använd verktyget "Infoga programmeringskod" som ser ut som {;} för att infogad kod ska bli läsbar.

Svara
Close