6 svar
104 visningar
Joh_Sara 715
Postad: 20 apr 08:58

skapa program som löser ekvationen

Hej, är väldigt ny med programmering och användande av python. Ska lösa följande uppgift med hjälp av python men vet inte hur jag ska göra.

Skriv ett program som löser ekvationen, zn=a+bi  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.

 

Tacksam för hjälp

Hondel 409
Postad: 20 apr 16:33

Vilken del är det du har problem med? Är det hur man löser problemet rent matematiskt, eller är det att komma igång med att skriva kod som skapar helheten i programmet, tex kod som ber användaren mata in a, b och n? 

Joh_Sara 715
Postad: 21 apr 08:43

har problem med båda delarna. Hur ska jag tänka?

Laguna 14535
Postad: 21 apr 09:02

Har du skrivit nåt program alls förut? Vad gjorde det programmet?

Joh_Sara 715
Postad: 21 apr 09:04

nej aldrig, har kollat på videos och läst all info men fattar fortfarande inte hur jag ska göra

Laguna 14535
Postad: 21 apr 09:31

Vad är det för info? En bok eller en webbsida?

Kan du skriva ett program som bara skriver "hej" när det körs?

Joh_Sara 715
Postad: 21 apr 13:18

har skrivit in det såhär i python och jag tror att jag gjort rätt?

 

print("Programmet löser ut rötterna till ekvationen Z**n = a + bi, du väljer själv n, a, b")

from math import* #detta verktyg ger oss tillgång till matematiska begrepp och tecken

a = int(input("a= ")) #int(input) funktionen 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 tydliggö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. Uträkningen hade inte gått vidare till nästa rot.

Svara Avbryt
Close