er ikke helt sikker, men mener at der er commandoere der heder Cos(tal) og Sin(tal) og så videre, og hvis du skal opløfte bruger du bare ^2 som du har gjordt i din beskrivelse... og hvis du skal cos^-1(tal) kan du bruge noget der ligner dette:
radianer til grader: 1radian=180/pi grader 2*pi er omkredsen af enhedscirklen. Derfor er 2*pi =360 grader.
textvinkela.Text = Cos(60): cos(60) er et tal, mens variablen på venstre side formentlig er erklæret som en tekststreng. skriv textvinkela.Text = Cstr(Cos(60)):
Dine funktioner: Trigonometriske funktioner: Sin, Cos, Tan I Visual Basic er der desværre ikke alle de inverse trigonometriske funktioner: Der er kun den omvendte funktion til Tan. Den hedder Atn Atn(1) er lig pi/4. Derfor kan du omskrive grader til radianer på denne måde: 60 grader er 60*4*Atn(1)/180 radianer.
Hvis du vil have udregnet omvendte funktioner til Sin og Cos sker det ved at udtrykke diss funktioner ved hjælp af funktionen Atn, som jo er den omvendte funktion til Tan. Hvis deter vigtigt for dig at kunne udregne Arcsin og Arccos kan jeg finde de relevante formler frem, men jeg er nødt til at smutte nu.
At opløfte til potens:
x^n betyder x i n-te. (I matematik plejer vi at kalde Atn for ArcTan)
jeg fik alligevel tid nu: Omvendt sin også kaldet Arcsin kan i VB udtrykkes således: Hvis x er mellem -1 og 1 er værdien Atn(x/Sqr(1-x*x)) Hvis x er 1 skal værdien være pi/2 og hvis x er -1 er værdien -pi/2
Omvendt cos også kaldet Arccos kan i VB udtrykkes således: Hvis x er mellem 0 og 1 er værdien Atn(sqr(1/(x*x)-1)) Hvis x er 0 er værdien pi/2 Hvis x er -1 eller mellem -1 og 0 er værdien pi-Atn(sqr(1/(x*x)-1))
Fordi det sjælpdent bruges - og du kan jo selv lave dem, jf. ovenstående
VB kan heller ikke finde rødder i polynomier, differentiere osv. Det er ikke et matematikprogram. Men der er de basale funktioner, og med dem kan du selv lave dine egne funktioner, fx. arcsin osv.
Function Asin(x) if x>-1 and x<1 then Asin=Atn(x/Sqr(1-x*x)) elseif x=-1 then Asin=-2*Atn(1) elseif x=1 then Asin=2*Atn(1) else 'Asin er ikke defineret 'Du må selv reagere på en eller anden måde end if end function
Hvis du nu et sted bruger ordren a=Asin(0.5), vil a så have værdien pi/6.
Funktionerne i VB er simpelt nok; sin(Tal), cos(Tal) og tan(Tal). Funktionerne til invers sin, -cos og -tan er lidt mere advanceret, men jeg har lavet følgnede modul der håndterer disse. Indsæt følgende kode i et modul:
'-------------- Global Const PI = 3.14159265358979
Public Function ArcSin(Tal As Single, Optional Radianer As Boolean = True) As Single Dim Resultat As Single, Grader As Single
If Tal = 1 Then Resultat = PI / 2 Else Resultat = Atn(Tal / Sqr(-Tal * Tal + 1)) End If If Radianer = True Then ArcSin = Resultat Else Grader = Replace(Resultat, ".", ",") ArcSin = RadTilGrad(Resultat) End If End Function
Public Function ArcCos(Tal As Single, Optional Radianer As Boolean = True) As Single Dim Resultat As Single, Grader As Single
If Tal = 1 Then Resultat = PI / 2 Else Resultat = Atn(-Tal / Sqr(-Tal * Tal + 1)) + 2 * Atn(1) End If If Radianer = True Then ArcCos = Resultat Else Grader = Replace(Resultat, ",", ".") ArcCos = RadTilGrad(Resultat) End If End Function
Public Function ArcTan(Tal As Single, Optional Radianer As Boolean = True) As Single Dim Resultat As Single, Grader As Single
Resultat = Atn(Tal) If Radianer = True Then ArcTan = Resultat Else ArcTan = Resultat * (180 / PI) End If End Function
Public Function RadTilGrad(Radianer As Single) As Single RadTilGrad = Radianer * PI / 180 End Function
Public Function GradTilRad(Grader As Single) As Single GradTilRad = Grader * 180 / PI End Function '---------------
Således skal det gøres :D Hvis du ofte laver mat-programmer, kan du jo gemme modulet under "...VB98\Templates\Modules", for så kan du vælge modulet under "Add Module". -Sion
Hmm.. Jeg sidder og roder lige med at lave en asin og en acos funktion.
Min asin funktion ser ud som følgende:
Function math_asin(x) If x > -1 And x < 1 Then math_asin = (Atn(x / Sqr(1 - x * x))) * 4 * Atn(1) / 180 ElseIf x = -1 Then math_asin = (-2 * Atn(1)) * 4 * Atn(1) / 180 ElseIf x = 1 Then math_asin = (2 * Atn(1)) * 4 * Atn(1) / 180 End If End Function
Jeg har sat "* 4 * Atn(1) / 180" ind for at få det i grader. Indsætter jeg f.eks. 0,5 som x-værdi, får jeg et facit på 9.1385
Function math_acosin(x) If x > 0 And x < 1 Then math_acosin = (Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)) * (180 / PI) ElseIf x = 0 Then math_acosin = (PI / 2) * (180 / PI) ElseIf x >= -1 And x < 0 Then math_acosin = (PI - Atn(Sqr(1 / (x * x) - 1))) * (180 / PI) End If End Function
Den omregner også fra radianer til grader. Er der nogen fejl i denne?
Jo både x=-1 og 1 kræver særbehandling. Jeg glemte x=1. Sådan kan det f.eks. laves:
const pi=3.14159265358979 Function math_acosin(x) If x >= 0 And x < 1 Then math_acosin = (Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)) * (180 / PI) ElseIf x > -1 And x < 0 Then math_acosin = (PI - Atn(Sqr(1 / (x * x) - 1))) * (180 / PI) ElseIf x=1 then math_acosin=0 ElseIf x=-1 then math_acosin=pi End If End Function
Function math_arcsin(x) If x < 1 And x > -1 Then math_arcsin = (Atn(x / Sqr(1 - x * x))) * (180 / PI) ElseIf x = 1 Then math_arcsin = (PI / 2) * (180 / PI) ElseIf x = -1 Then math_arcsin = (-PI / 2) * (180 / PI) End If End Function
Jo i en trkant er en vinkel aldrig 0. Men Arccos(1) defineres til 0, da cos(0) er 1. Arccos er den omvendte funktion til cos, og er defineret i intervallet [-1;1] og antager værdier fra pi ned til 0.
Jo, det er helt rigtigt. Men du bør erstatte (PI / 2) * (180 / PI) med 90 og -(PI / 2) * (180 / PI) erstattes med -90. Der er jo ikke nogen grund til at bede maskinen udregne (pi/2)*(180/pi) da dette udtryk jo blot er en måde at skrive 90 på.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.