21 svar
277 visningar
Greven behöver inte mer hjälp
Greven 65
Postad: 15 okt 2021 11:39

Programmering av polynomfunktion

Jag ska skapa ett program som löser ekvationen z^n=a+bi där a och b är realla tal och n är ett positivt heltal.  Jag kan använda funktioner från math-modulen.

 

*Jag har aldrig programmerat förut och har inte koll på hur man gör, har bara sätt lite tips etc på saker inom python. Iallafal så ska jag göra funktionen och få fram rötterna ur polynom funktionen. jag antar eftersom vi använder oss av de Maivres formel så kommer vi få skriva in saker för n, r , k och vinkeln för tan. Sen måste vi har typ a och b eller något för att ange värdarna som vi ska sätta in*

Lindehaven 820 – Lärare
Postad: 15 okt 2021 13:30

Hjälper någon av dessa?

https://www.pluggakuten.se/trad/komplexa-tal-i-python/

https://python.quantecon.org/complex_and_trig.html 

Greven 65
Postad: 18 okt 2021 10:09

har kollat runt men fixar inte problemet, den fick upp error innan jag satt ut kolon efter k<0 och sa ''Expected ':' sen när jag satt dit det så uppstår detta problemet

Mega7853 211
Postad: 18 okt 2021 10:42

Python använder indentering med mellanslag eller tab för att separera olika block i koden. Efter ett statement som har en "body", t.ex. while på rad 7, måste man indentera de rader som ingår i "body". I ditt fall gissar jag att det är raderna 8 och 9 som ingår. Lägg till t.ex. 4st mellanslag i början på de raderna.

Greven 65
Postad: 18 okt 2021 10:57 Redigerad: 18 okt 2021 11:30

tack, fixade problemet, testade att köra den i shell och det gick iallafall, men bara för att få ut 1 rot Z0, om jag vill ha Z1 etc hur gör jag då? Är det fel på f-stringen. K=k+1 är ju satt för att den ska gå till nästa rot eller är det något fel där? Eller ska jag lägga in en in(input) för k? där jag får välja värde för k?

Mega7853 211
Postad: 18 okt 2021 11:52

Det verkar som att while-loopen ska generera alla rötterna och skriva ut dem. Fundera på vad som ska hända i loopen och när den ska avslutas.

Greven 65
Postad: 18 okt 2021 12:11 Redigerad: 18 okt 2021 12:16

while-loopen ska ju generera rötterna som är beroende av n då n**3=3 rötter osv. Så den ska avslutas när antal rötter som angetts av n har blivit genererade i svaret. Men hur jag ska skriva ut det i programmet vet jag inte.

Jag har ju också satt k=0. Om jag tar ett exempel och använder då z^3=8 så får jag Z0= 2 för k=0 vilket är   rätt men om jag kör k=1 så får jag 2.000+1.732i, a värdet är här fel men b värder är rätt. Men vill ju att alla rötter ska komma automatiskt efter varandra i svaret

Laguna Online 30704
Postad: 18 okt 2021 12:19

Hur ser koden ut nu ?

Greven 65
Postad: 18 okt 2021 12:23 Redigerad: 18 okt 2021 12:34

Laguna Online 30704
Postad: 18 okt 2021 12:53

k börjar med att vara 0, så while k<0 går man aldrig in i. Om tanken är att print ska vara inuti loopen så får du indentera den raden och föregående.

Ska det inte vara cos((v+k*2*pi)/n)?

Greven 65
Postad: 18 okt 2021 13:01
Laguna skrev:

k börjar med att vara 0, så while k<0 går man aldrig in i. Om tanken är att print ska vara inuti loopen så får du indentera den raden och föregående.

Ska det inte vara cos((v+k*2*pi)/n)?

Ja du har rätt jag har bara missat att skriva in /n för cos också, men hur blir det för while-loopen då för om jag ska skriva k=0 då måste jag ju skirva k==0 och då blir det fel så vet inte riktigt hur man ska skriva där.

Laguna Online 30704
Postad: 18 okt 2021 13:12

Vilka värden vill du att k ska anta?

Greven 65
Postad: 18 okt 2021 13:48
Laguna skrev:

Vilka värden vill du att k ska anta?

De värderna  n antar så om n antar 3 så kommer det bli 3 rötter dom då blir 3 olika k värden 0,1,2

Greven 65
Postad: 18 okt 2021 14:49

Så då kan man skriva att k<n, men är det inte så att print ska vara en del av while-loopen genom indraget och hur gör jag det exakt, har testat men blivit fel.

Laguna Online 30704
Postad: 18 okt 2021 15:03

Låter bra. Hur ser koden ut nu?

Greven 65
Postad: 18 okt 2021 15:10 Redigerad: 18 okt 2021 15:49
Laguna skrev:

Låter bra. Hur ser koden ut nu?

hur skriver jag while-loopen så den är en del av print genom indraget, blir fel och får massa error tecken

Laguna Online 30704
Postad: 18 okt 2021 15:54

Vad får du för error?

Det ser bra ut, förutom att du får skjuta in print-satsen också.

Greven 65
Postad: 18 okt 2021 16:06

Det var det som saknades, dock så när jag tog och körde programmet så  gav den ut 3 rötter men i fel ordning då Z1=-1.000+1.732i Z2=-1.000-1.732i och Z3=2.000-0.000i. Dessa rötter är rätt om uppgiften är z^3=8 men Z3 ska vara Z0

Laguna Online 30704
Postad: 18 okt 2021 16:07

Mm, om du kollar steg för steg, liksom kör programmet i huvudet, så ser du att k = 0 och sen ökas till 1 och sen skrivs roten ut.

Greven 65
Postad: 18 okt 2021 16:13 Redigerad: 18 okt 2021 16:15
Laguna skrev:

Mm, om du kollar steg för steg, liksom kör programmet i huvudet, så ser du att k = 0 och sen ökas till 1 och sen skrivs roten ut.

hur ska jag då göra om så att Z0 blir först, ändrade lite värden och kollade men fick inte rätt

Lindehaven 820 – Lärare
Postad: 19 okt 2021 11:48
Laguna skrev:

Mm, om du kollar steg för steg, liksom kör programmet i huvudet, så ser du att k = 0 och sen ökas till 1 och sen skrivs roten ut.

@Laguna gav ett bra råd. Kolla ordningen på kodraderna i din while-loop.

Greven 65
Postad: 19 okt 2021 12:34
Lindehaven skrev:
Laguna skrev:

Mm, om du kollar steg för steg, liksom kör programmet i huvudet, så ser du att k = 0 och sen ökas till 1 och sen skrivs roten ut.

@Laguna gav ett bra råd. Kolla ordningen på kodraderna i din while-loop.

fixade problemet, tack för all hjälp!

Svara
Close