Projekt: Basketbollkast

Relevanta dokument
READ (*, 100) X,Y,Z,T,U,V 100 FORMAT (6F5.2) för att läsa in talen

2.2. Ett enkelt Fortran-program

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

Introduktion till vetenskapliga beräkningar II, Tom Sundius

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

15 februari 2016 Sida 1 / 32

Lösningsförslag till inlämningsuppgift 3 i Beräkningsprogrammering Problem 1) function condtest format compact format long

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 26 november 2015 Sida 1 / 28

4.3. Programmering i MATLAB

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 2

Institutionen för Matematik TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA DAG: Fredag 30 augusti 2002 TID:

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

Beräkningsverktyg HT07

Inlämningsuppgift 4 NUM131

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

Pascal... Pascal. Pascal... Pascal...

TANA17 Matematiska beräkningar med Matlab

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 13:e januari klockan

2. (a) Skissa grafen till funktionen f(x) = e x 2 x. Ange eventuella extremvärden, inflektionspunkter

Där a = (1, 2,0), b = (1, 1,2) och c = (0,3, 1) Problem 10. Vilket är det enda värdet hos x för vilket det finns a och b så att

2.4. Teckensträngar och logiska uttryck

Styrteknik 4.5/7.5 hp distans: Tidskretsar, räknare

MMA132: Laboration 2 Matriser i MATLAB

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng. Använd bifogat formulär för dessa 6 frågor.

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab

Introduktion till Komplexa tal

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

12. Relationer och funktioner

Facit Tentamen i Beräkningsvetenskap I (1TD393 - nya versionen, 5hp!)

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

) + γy = 0, y(0) = 1,

MMA132: Laboration 1 Introduktion till MATLAB

1. För vilka värden på konstanterna a och b är de tre vektorerna (a,b,b), (b,a,b) och (b,b,a) linjärt beroende.

4 Numerisk integration och av differentialekvationer

Linjärisering, Jacobimatris och Newtons metod.

Regressions- och Tidsserieanalys - F3

Välkomna till NUMPK09: DN1212 Numeriska metoder och grundläggande programmering för K2 och Bio3, 9 hp

Föreläsning 3, Linjär algebra IT VT Skalärprodukt

Periodiska decimalbråk

TANA17 Matematiska beräkningar med Matlab

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Uppgifter till lektion 1. Statistisk Programmering. Programmeringsspråk. Kompilerande språk. Använda R

DN1212 för M: Projektrapport. Krimskramsbollen. av Ninni Carlsund

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

SF1626 Flervariabelanalys

Tentamen PC-teknik 5 p

2 Laborationsuppgifter, upptagetsystem

Introduktion till MATLAB

Mekanik Föreläsning 8

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 2 juni 2014

En kort text om programmering i C.

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 13 jan 2014

Newtons metod. 1 Inledning. CTH/GU LABORATION 3 MVE /2014 Matematiska vetenskaper

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Några saker till och lite om snabbare sortering

Kontinuerliga listor. Fält (listor) Kontinuerliga listor... Kontinuerliga listor...

TSBB14 Laboration: Intro till Matlab 1D

Deklarationer/definitioner/specifikationer

TMV225 Inledande Matematik M

2 Matrisfaktorisering och lösning till ekvationssystem

Här är ett antal uppgifter, en del tagna från gamla tentamina, som handlar om basbyte. respektive B = uttryckta i basen A

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

Matematik 2 Digitala övningar med TI-82 Stats, TI-84 Plus och TI-Nspire CAS

Laboration 6. Ordinära differentialekvationer och glesa system

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

12. Relationer och funktioner

2. För vilka värden på parametrarna α och β har det linjära systemet. som satisfierar differensekvationen

Tentamen: Lösningsförslag

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

Teknisk beräkningsvetenskap I 5DV154

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

Samtliga deluppgifter i denna uppgift använder följande differentialekvation. Deluppgift a görs för hand

15 september, Föreläsning 5. Tillämpad linjär algebra

Tentamen, del 2 DN1240 Numeriska metoder gk II för F

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

KTH 2D1240 OPEN vt 06 p. 1 (5) J.Oppelstrup

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Visa/Dolj knappar i Webeditor 8

SF1669 Matematisk och numerisk analys II Lösningsförslag till modelltentamen DEL A

Vetenskapsdagen 2016 SciLab för laborativa inslag i matematik eller fysik

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

17.1 Kontinuerliga fördelningar

TANA17 Matematiska beräkningar med Matlab

Kap Krökning i allmän parametrisering. Endast sid 619 och Exempel 2 sid 621. Teori: Sid 619. Härledning av v a = v 3 κ ˆB så att κ = v a /v 3

Campus och distans Flervariabelanalys mag ATM-Matematik Mikael Forsberg och Yury Shestopalov (Mikael Forsberg)

Newtons metod i en och flera variabler

Transkript:

Projekt: Basketbollkast av Grupp 3: Mikael B, Jörgen H, Sofie J, Johannes L, Anton N, Jenny P och Rasmus W för kursen Beräkningsprogrammering, NUM131 Sida 1 av 22

7 6 1 2 3 4 5 height (m) 4 3 Sida 2 av 22 2 1 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 distance (m) z 0 = 0.2 s, α 0 = 77, z = 88.264 ms, α = 42.868.

12 10 8 height (m) 6 4 Sida 3 av 22 2 0 0 1 2 3 4 5 6 7 distance (m) Korgen 1 2 3 4 z 0 = 3.5 s, α 0 = 70, z = 3.554 s, α = 86.826.

gauss.f90 Sida 4 av 22 Subrutiner och funktioner i programmet p3 och deras relationer.

Interfaces: subroutine rootz31(f, x0, tol, maxiter, xst, ierr) implicit none real(kind=8), intent(in) :: x0(2), tol integer, intent(in) :: maxiter real(kind=8), intent(out) :: xst(2) integer, intent(out) :: ierr external f end subroutine rootz31 real(kind = 8) function pyts(x) implicit none real(kind = 8), intent(in) :: x(2) end function pyts Sida 5 av 22 subroutine jacobi(f, fx, x, jret) implicit none real(kind = 8), intent(in) :: fx(2), x(2) real(kind = 8), intent(out) :: jret(2,2) external f end subroutine jacobi

Interfaces: (forts) subroutine MyG(z0alpha0, xy, printing) implicit none real(kind=8), intent(in) :: z0alpha0(2) real(kind=8), intent(out) :: xy(2) logical, intent(in) :: printing end subroutine MyG subroutine eulexpl(yprim, ts, y0, divs, t, Y) implicit none real(kind=8), intent(in) :: ts(2), y0(5) integer, intent(in) :: divs real(kind=8), intent(out) :: t(divs+1), Y(divs+1, 5) external yprim end subroutine eulexpl Sida 6 av 22

Interfaces: (forts) subroutine DG(t, G, Gd) implicit none real(kind=8), intent(in) :: t, G(5) real(kind=8), intent(out) :: Gd(5) end subroutine DG real(kind=8) function implicit none real(kind=8), intent(in) :: s end function F Sida 7 av 22

Interfaces: (forts) subroutine gauss(a, b, x, r) implicit none real(kind=8), intent(in) :: A(2,2), b(2) real(kind=8), intent(out) :: x(2) integer, intent(out) :: r end subroutine gauss subroutine pivot(a, m, Aret) implicit none real(kind=8), intent(in) :: A(2, 3) integer, intent(in) :: m real(kind=8), intent(out):: Aret(2, 3) end subroutine pivot integer function maxindex(y) real(kind=8), intent(in) :: y(:) end function maxindex Sida 8 av 22

Interfaces: (sista) subroutine baksub(u, b, x, ierr) implicit none real(kind=8), intent(in) :: U(2,2), b(2) real(kind=8), intent(out) :: x(2) integer, intent(out) :: ierr end subroutine baksub Sida 9 av 22

p3: write (*, *) Ange startvärdet z0 read (*, *) z0 write (*, *) Ange begynnelsevinkeln i grader read (*, *) alphadeg alpha0 = alphadeg*pi/180! Räknar om vinkeln från grader! till radianer x0(1) = z0 x0(2) = alpha0! Sätter in startvärdena i en vektor open(unit = 15, file= matg.m, status= unknown, & & action= write, iostat=oerr) write (15, *) G=[ call rootz31(myg, x0, tol, maxiter, xst, ierr) write (15, *) ]; close(15) write (*, *) Värdena för x- och y-koordinater är& & skrivna i filen matg.m. Sida 10 av 22

p3: (forts) z = xst(1) alphast = xst(2)! Får ut de slutliga värdena i form av! en vektor alphastdeg = alphast*180/pi! Räknar om vinkeln från! radianer till grader write (*, *) Bollen måste skickas iväg med vinkeln, & & alphastdeg, grader för att träffa korgen write (*, *) Tiden det tar för bollen att nå korgen & &är, z, sekunder. Sida 11 av 22

subroutine rootz31(f, x0, tol, maxiter, xst, ierr): tol2 = tol**2 x = x0 do i = 1, maxiter call f(x, fx, printing) call jacobi(f, fx, x, jx) call gauss(jx, fx, deltax, r) x = x - deltax if (pyts(deltax) < tol2) then ierr = 0 xst = x return end if end do Sida 12 av 22 ierr = 1

real(kind = 8) function pyts(x): real(kind = 8), intent(in):: x(2) pyts = x(1)*x(1) + x(2)*x(2) Sida 13 av 22

subroutine jacobi(f, fx, x, J): E(1,1) = 1 E(1,2) = 0 E(2,1) = 0 E(2,2) = 1 do i = 1, n xplushe = x + h*e(:, i) call f(xplushe, fxplushe, printing) J(:, i) = (fxplushe - fx)/h end do Sida 14 av 22

subroutine MyG(z0alpha0, xy, printing): z0 = z0alpha0(1) alpha0 = z0alpha0(2) G0(1) = x0 G0(2) = y0 G0(3) = z0 G0(4) = s0*cos(alpha0);! vx0, alpha0 from ground plane G0(5) = s0*sin(alpha0);! vy0 ts = (/ 0, 1 /) call eulexpl(dg, ts, G0, divs, t, G) if (printing) then do i = 1, size(g, 1) write (unit=15, fmt= (f20.14), advance= no ) & & G(i, 1) if (mod(i, 3) == 0) then write (15, *)... end if end do write (15, *) ; Sida 15 av 22

subroutine MyG(z0alpha0, xy, printing): (forts) do i = 1, size(g, 1) write (unit=15, fmt= (f20.14), advance= no ) & & G(i, 2) if (mod(i, 3) == 0) then write (15, *)... end if end do write (15, *) ; end if xy(1) = G(size(G, 1), 1) - x_b xy(2) = G(size(G, 1), 2) - y_b Sida 16 av 22

subroutine eulexpl(yprim, ts, y0, divs, tret, Yret): h = (ts(2) - ts(1))/divs! h är steglängden! skapar en vektor t med tidpunkter do i = 1, divs+1 tret(i) = (i-1)*h+ts(1) end do Yret(1, :) = y0!tilldelning av initialvärde do i = 1, divs Ya = Yret(i,:)!(a = aktuell) call yprim(tret(i), Ya, Yd) Yret(i+1, :) = Yret(i, :) + Yd*h end do Sida 17 av 22

subroutine DG(t, G, Gd): x = G(1) y = G(2) z = G(3) vx = G(4) vy = G(5) xd = vx * z yd = vy * z s = sqrt(xd**2 + yd**2) alpha = acos(xd / s)! Gd = 0 Gd(1) = xd Gd(2) = yd Gd(3) = 0 Gd(4) = - * z * cos(alpha) Gd(5) = - * z * sin(alpha) - gravity Sida 18 av 22 contains

real(kind=8) function : F = (1.0/2.0) * rho * c_w * (pi/4) * d**2 * s**2 Sida 19 av 22

subroutine gauss(a, b, x, r): det = A(1,1)*A(2,2) - A(1,2)*A(2,1) if(abs(det) < tol) then stop Fel i funktionen gauss. Singulär matris end if x(1) = (b(1)*a(2,2) - b(2)*a(1,2))/det x(2) = (b(2)*a(1,1) - b(1)*a(2,1))/det Sida 20 av 22 r = 2

Genomförandeplan Fungerande MATLAB-prototyp Översättning till Fortran 95 - Konstruktion av interfaces Skriva Fortran-program-, subrutin- och funktionsinterfaces Konstruktion av skelett av intefaces Test av varje enskilt program & subrutin Hopsättning av fungerande skelett + test MATLAB för att visa resultat Sida 21 av 22

7 6 1 2 3 4 12 5 10 height (m) 4 3 height (m) 8 6 2 4 1 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 distance (m) 2 0 0 1 2 3 4 5 6 7 distance (m) Korgen 1 2 3 4 gauss.f90 Sida 22 av 22 Trevlig sommar!