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*
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
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.
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?
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.
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
Hur ser koden ut nu ?
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)?
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.
Vilka värden vill du att k ska anta?
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
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.
Låter bra. Hur ser koden ut nu?
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
Vad får du för error?
Det ser bra ut, förutom att du får skjuta in print-satsen också.
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
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 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
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.
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!