Omvandling från Asin(x)+Bcos(x) till ≈ Csin(x+v)

## Beskrivning av uppgiften (Matematik 4)

Målet med denna övning är att eleverna ska få en liten introduktion i programmering med hjälp av Python, men ändå komma fram till ett verktyg som går att använda.
Men det lilla programmet ska även vara ett hjälpmedel för dem att denna typ av trigonometriska uppgifter, eller del av dito uppgifter.

Uppgiften går ut på att göra ett program som en funktion av typen y=Asin(x)+Bcos(x) till y=Csin(x+v)

## Lösningsförslag, olika varianter

**Har valt att göra två varianter.**
Den första är en väldigt kort version, men som ändå dels kommer fram till ett resultat men även kort tar upp flera viktiga delar inom programmeringen.
Den andra innehåller lite mera ”lull lull” som felkontroll av inmatningen och uppdelning v programmet i olika del funktioner.

**Jag vill med den enkla versionen att eleverna ska komma i kontakt med.**
 Inmatning
 Variabler (olika typer av dessa som string, integer, float)
 Olika matematiska funktioner i Python
 Avrunda
 Roten ur och kvadrat
 Trigonometriska funktioner

**Jag vill med den något mer utvecklade versionen (ver2) att eleverna även ska komma i kontakt med.**
 Uppdelning i olika funktioner
 Skicka med variabel värden mellan olika funktioner

### Version 1

```
from math import \*

def main():
    print ("Konvertera ASin(x)+BCos(x) till CSin(x+v)")
    A = float(input("Mata in A: -->"))  #Inmatning av talen A och B
    B = float(input("Mata in B: -->"))

    #beräknings delen
    C = sqrt((B\*B)+(A\*A))
    C = round(C,1)
    v = degrees(atan(B/A))
    v = int(round(v,0))

    #Utskrifts delen
    print ('C är roten ur (B\*B)/(A\*A): -->',C)
    print ('Invers för tan(B/A) är ',v)
    print ('Här har du den konverterade formen " ,C,'Sin(x +',v,')')

main()

```

### Version 2

```
from math import \*

def main():

    print ("Konvertera ASin(x)+BCos(x) till CSin(x+v)")
    print ("Där både A och B är större än noll")

    (A,B) = inmatning()     #Startar funktionen för inmatning samt felkontroll vid dito
    (C,v) = berakning(A,B)  #Startar funktionen berakning skickar med innehållet i variblerna A och B
                            #resultatet av funktionen kommer att hamna i variablerna C och v
    utskrift(C,v,A,B)       #Startar funktionen som skriver ut resultaten

def inmatning():            #Inmatningen samt kontroll av inmatningen, blir korrekt utifrån bestämda förutsättningar

    while True:
        try:                #En kontroll om det blir error vidd inmatning av A och B
            A = float(input("Mata in A: -->"))
            B = float(input("Mata in B: -->"))
        except:             #Om felaktig inmatning av A eller B så info text samt nytt försök
            print("Mata in bara siffror om decimalt använd punkt . ")
        else:               #Om korrekt inmatning vad gäller att det är siffror så kontroll att A och B är högre än noll
            if A < 0 or B < 0:
                print("Både A och B måste vara större än 0 fär att omvandlingen ska fungera")
            else:           #Om ok inmatning, siffror som är högre än noll så fortsätter programmet
                break

    return (A,B)#Hoppar tillbaka till (main) tar med sig variablerna A och B

def berakning(A,B):#Beräkningarna genomförs så att konverteringen kan göras

    C = sqrt((B\*B)+(A\*A))   #Beräknar roten ur summan av A^2 och B^2
    C = round(C,1)          #Avrundar rotberäkningen till en decimal
    v = degrees(atan(B/A))  #beräknar inverstangens av B/A samt konverterar till grader i ställer för radianer
    v = int(round(v,0))     #Avrundar vinkeln samt gör den till integer för att slippa .0 decimalen

    return (C,v); #Hoppar tillbaka till (main) tar med sig variablerna C och v

def utskrift(C,v,A,B):  #Skriver ut de olika beräkningsdelarna samt den nya formen

    print ('C är roten ur (B\*B)/(A\*A): -->',C)
    print ('Invers för tan(B/A) är ',v)
    print (C,'Sin(x +',v,')')
    print ("")
    print (A,'Sin(x) +',B,'Cos(x) ≈',C,'Sin(x +',v,')')

main()

```