Splinebilen och andra rymdytor



Relevanta dokument
Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

SF1669 Matematisk och numerisk analys II Bedömningskriterier till tentamen Torsdagen den 4 juni 2015

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

Interpolation. 8 december 2014 Sida 1 / 20

Numeriska metoder, grundkurs II. Dagens program. Gyllenesnittminimering, exempel Gyllenesnittetminimering. Övningsgrupp 1

TAIU07 Matematiska beräkningar med Matlab

2D1210, Numeriska Metoder, GK I för V 2.

TANA09 Föreläsning 8. Kubiska splines. B-Splines. Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

Omtentamen i DV & TDV

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

Kurvanpassning. Kurvanpassning jfr lab. Kurvanpassning jfr lab

f(x + h) f(x) h f(x) f(x h) h

0.31 = f(x 2 ) = b 1 + b 2 (x 3 x 1 ) + b 3 (x 3 x 1 )(x 3 x 2 ) = ( ) + b 3 ( )(

SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A. r cos t + (r cos t) 2 + (r sin t) 2) rdrdt.

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

Kurvor och ytor. Gustav Taxén

Föreläsningen ger en introduktion till differentialekvationer och behandlar stoff från delkapitel 18.1, 18.3 och 7.9 i Adams. 18.

MMA127 Differential och integralkalkyl II

Laboration 6. Ordinära differentialekvationer och glesa system

Tentamen i Teknisk-Vetenskapliga Beräkningar

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

Numeriska metoder, grundkurs II. Dagens program. Exempel Kubiska splines. Ögna igenom de gamla övningsanteckningarna.

Numerisk Analys, MMG410. Lecture 12. 1/24

Del I: Lösningsförslag till Numerisk analys,

Föreläsning 5. Approximationsteori

MMA132: Laboration 2 Matriser i MATLAB

SF1669 Matematisk och numerisk analys II Bedömningskriterier till tentamen Måndagen den 16 mars 2015

SF1664 Tillämpad envariabelanalys med numeriska metoder Lösningsförslag till tentamen DEL A

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

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

Institutionen för Matematik, KTH Torbjörn Kolsrud

Bose-Einsteinkondensation. Lars Gislén, Malin Sjödahl, Patrik Sahlin

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

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

Sammanfattning (Nummedelen)

= e 2x. Integrering ger ye 2x = e 2x /2 + C, vilket kan skrivas y = 1/2 + Ce 2x. Här är C en godtycklig konstant.

formulera och lösa problem med hjälp av matematik samt värdera valda strategier och metoder,

Ordinära differentialekvationer,

För studenter i Flervariabelanalys Flervariabelanalys MA012B ATM-Matematik Mikael Forsberg

FÖRSÄTTSBLAD TILL TENTAMEN. ELLER (fyll bara i om du saknar tentamenskod): Datum: 16 januari Bordsnummer:

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

} + t { z t -1 - z t (16-8)t t = 4. d dt. (5 + t) da dt. {(5 + t)a} = 4(5 + t) + A = 4(5 + t),

Matlab övningsuppgifter

Approximation av funktioner

Omtentamen i DV & TDV

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

OH till Föreläsning 5, Numme K2, Läsa mellan raderna. Allmän polynom-interpolation, S Ch 3.1.0

Numerisk Analys, MMG410. Lecture 13. 1/58

Figur 1: Postföretagets rektangulära låda, definitioner.

SF1626 Flervariabelanalys Tentamen Måndagen den 16 mars 2015

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

Laboration 2 Ordinära differentialekvationer

SF1626 Flervariabelanalys Bedömningskriterier till tentamen Måndagen den 16 mars 2015

Interpolation Modellfunktioner som satisfierar givna punkter

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

Lösningar till Tentamen i Beräkningsvetenskap II, 5.0 hp, Del A. 1. (a) ODE-systemet kan skrivas på formen

Polynomanpassning i MATLAB

3.6 De klassiska polynomens ortogonalitetsegenskaper.

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

A = D. r s r t dsdt. [(1 + 4t 2 ) 3/2 1]dt (1) där det sista steget fås genom variabelbytet u = 1 + 4s 2. Integralen. (1 + 4t 2 ) 3/2 dt

DN1240, numo08 Stefan Knutas, Fredrik Båberg, B.10: Nalle-Maja gungar

TANA17 Matematiska beräkningar med Matlab

F 4 Ch Numerisk integration, forts.; Ch.4 Numerisk derivering.

Kurs DN1215, Laboration 3 (Del 1): Randvärdesproblem för ordinära differentialekvationer

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

a = a a a a a a ± ± ± ±500

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

Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

SF1626 Flervariabelanalys Tentamen Tisdagen den 12 januari 2016

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

Projekt Finit Element-lösare

R AKNE OVNING VECKA 1 David Heintz, 31 oktober 2002

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER. 1 Inledning. 2 Eulers metod och Runge-Kuttas metod

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

Elektromagnetiska fält och Maxwells ekavtioner. Mats Persson

HANDLEDNING TILL LABORATION I GEOMETRI

Kurvlängd och geometri på en sfärisk yta

Laboration 1 i SF1544: Öva på Matlab och konstruera en optimal balk Avsikten med denna laboration är att:

2D1240 Numeriska metoder gk II för T2, VT Störningsanalys

Beräkningsmetoder för superellipsens omkrets

Uppgift 1 R-S. Uppgift 2 R-M. Namn:...

med tillgång till värden på f: vi anser att vi kan evaluera f för alla x i (a,b) och använder kvadraturformler av typen n

Rapportexempel, Datorer och datoranvändning

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

OH till Föreläsning 5, Numme K2, GNM Kap 4-4.4A / GKN Kap 4.1A,(D),E Interpolation. Läsa mellan raderna. Allmän polynom-interpolation

Matlab övningsuppgifter

SF1513 NumProg för Bio3 HT2013 LABORATION 4. Ekvationslösning, interpolation och numerisk integration. Enkel Tredimensionell Design

DN1212 Numeriska Metoder och Grundläggande Programmering DN1214 Numeriska Metoder för S Lördag , kl 9-12

Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism. Inledning. Fysikalisk bakgrund

ODE av andra ordningen, och system av ODE

Tentamen i Beräkningsvetenskap II, 5.0 hp,

CHALMERS Finit Elementmetod M3 Institutionen för tillämpad mekanik. Teorifrågor

Envariabelanalys 5B1147 MATLAB-laboration Derivator

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Euler-Mac Laurins summationsformel och Bernoulliska polynom

Transkript:

Splinebilen och andra rymdytor eller Golfbanorna och företagsbilen Michael Litton & Farid Bonawiede

Rapporten behandlar konstruktion av splineytor och numerisk integration. Metoder och tillförlitlighet diskuteras. Resultaten är till stor del grafiska då uppgiften är av sådan natur. Rapporten är utformad som ett rollspel där Michael Litton och Farid Bonawiede agerar konsulter åt ett företag. Detta föredrag har givit oss uppdraget att lösa ett par uppgifter. Innehåll Bakgrund. Golfbanan.............................. Bilen................................ Problem. Uppdraget............................. Metoder. Naturliga splines.......................... Bikubisk interpolation....................... Integration av rymdytor....................... Trapetsregeln......................... Dubbelintegraler..................... Resultat 5. Golfbanorna............................ 5. Bilarna.............................. 6 5 Tillförlitlighetsanalys 7 6 Slutsatser 7 7 Bilaga: MATLAB kod 9

Bakgrund. Golfbanan Företaget har nyligen bestämt sig för att konstruera ett par golfbanor. De behöver hjälp med att beräkna den mängd jord som krävs för att skapa de olika golfbanorna. Företaget är beläget i Danmark där marken kan antas vara helt slät. Vi har erhållit en lista beskrivande höjderna hos de olika kullarna på banorna.. Bilen Vi har också fått i uppdrag att konstruera den nya företagsbilen. Ett lite mera sportigt utsee är efterfrågat. Problem. Uppdraget För att optimera arbetet mot företaget bestämde vi oss för att konstruera en funktion som hanterade golfbanor av godtyckligt usee, landscape(z,dt). Det valda utvecklingsverktyget är MATLAB. Då man beskriver en golfbana i form av höjder hos olika kullar är det lämpligt att skapa en matris innehållande höjderna. Utifrån denna matris kan ett landskap konstruerats. För att sedan beräkna mängden jord som krävs behöver vi ta reda på volymen som landskapet täcker. Problemet är således att Skapa en höjdmatris Välj en lämplig metod för landskapskonstruktion Välja en lämplig metod för att ta reda på mängden jord som golfbanan kommer att kräva Det är önskvärt att övergångarna mellan kullarna är mjuka så att golfspelarna inte riskerar att göra sig illa under en runda. Det är därför lämpligt att använda sig av naturliga splines för att skapa landskapet. Då vi önskar skapa vårt landskap ställs vi inför problemet: Hur interpolation genom n stycken par av (x i, y i, z i ) punkter skall göras. Vi känner inte till lutningarna i någon punkt. Kan detta göras? Metoder De två metoder som används för att lösa problemet innefattar dels splines för att beskriva ytan och karossen samt volymsintegration med trapetsmetoden.

. Naturliga splines Metoden bygger på interpolation med kubiska splines som beskrivs på s. i []. Då vi använder oss av denna metod och med a kravet kontinuerliga första- och andra derivator erhåller vi enbart n ekvationer, men vi vill lösa ett ekvationssystem med n obekanta. Vi lägger då till två stycken krav, de naturliga villkoren, för att lösa problemet. Andraderivatorna i ändpunkterna sätter vi lika med noll. Vi har nu n stycken ekvationer och kan då beräkna lutningarna. Sedan använder man sig av hermiteinterpolation, [] s. 8, för att rita upp kruvan.. Bikubisk interpolation För att skapa en rymdyta interpolerar man i två steg, först i x-led och sedan i y-led. Det spelar ingen roll i vilket ordning man gör det, resultatet blir detsamma. Golfbanan beskrivs av en 7 5 matris och vi väljer att interpolera i steg om, längdenheter. Börjar vi i x-led kommer vi mellan varje höjd erhålla fyra stycken nya värden, sammanlagt 6 stycken, alltså en fås en 7 matris tillsammans med våra fem höjdvärden. Sedan använder man den nya matrisen och interpolerar i y-led. Återigen erhåller vi fyra stycken nya värden mellan varje höjd, sammanlagt stycken. Resultatet blir en matris. För att rita upp den använder vi oss av kommandot surf(z), där Z är matrisen innehållande höjderna. Minskas steglängden blir ytan jämnare men matrisen blir större och beräkningarna tar längre tid.. Integration av rymdytor.. Trapetsregeln För att ta reda på mängden jord som krävs behöver vi beräkna volymen under ytan vi har skapat oss. Detta gör vi genom att använda trapetsregeln för för splines. En beskrivning av trapetsregeln hittas på s. 57 i []. Emellertid så är den speciell i splinefallet och man kan visa att xn f(x)dx = h n (y i + y i+ ) + h n (k i k i+ ) = T (h) h x (k N k ) i= i= Beviset finns på s. 6 i []. Nu då vi känner till detta samband krävs lite kunskap om numerisk behandling av dubbelintegraler innan vi kan ta reda på vilken mängd jord som krävs... Dubbelintegraler När vi skapade rymdytan gjorde vi det i två steg, ett liknande tillvägagångssätt tillämpas när vi beräknar volymen. Principen är att man först skapar sig

ett antal skivor i x-led, imensionell integration, och sedan sveper o ver dom i y-led. Det blir en imensionell integration till. Eftersom vi redan har en uppdelning i x- och y-led beho ver vi inte go ra den annars no dva ndiga separationen. I x-led har vi stycken skivor med z-va rden tillho rande var skiva. Fo rst integrerar vi o ver var och en av dessa och sparar resultatet, kalla det gi. Da refter sa uytnyttjar vi va ra gi i formeln fo r trapetsintegration och kan bera kna volymen under ytan. Volymen = nx x + gi i=. g + gnx + h (knx + k ) Resultat Golfbanorna Nedan redovisas bilder pa den fo rsta golfbanan och na gra andra modeller. Axlarnas skalor a r inte likadana i alla figurer. Mindre volym inneba r billigare golfbana. Golfbana Matris 5 7 6 6. 5 5.. 9 9 Volym 6 5..5 78.956 v.e.5 v.e 7.5578 v.e

Golfbana Matris. Volym 9.776 v.e Bilarna Ha r a r en skiss o ver den a ldre fo retagsbilen som skall fo rba ttras. Framparti Bakparti Hela bilen Pa grund av Farid Bonawiedes olyckliga insjuknande la mnades bilen ute i det fina va rva dret i na gra dagar. 6

5 Tillförlitlighetsanalys Analysen består av två delar, en visuell och en numerisk. I den förstnämnda kontrollerar vi att det inte förekommer några jack, konstiga eller överdrivna lutningar i landskapet. Vid en symmetrisk matris skall också detta återges i landskapet. För att kontrollera att vi utför integrationen korrekt använder vi oss av en enkel yta, ett horisontellt plan, samt MATLABs inbyggda trapetsintegration. Eftersom vi använder oss av Hermites interpolationsformel blir beräkningarna välkonditionerade och det behövs såldes inte utföras någon experimentell störningsanalys. Detta är emellertid nödvändigt om vi inte hade arbetat med splines. Tabell : Integrationer vid olika steglängder Steglängd (dt) T (h) h (k N k )/ T (h).5 79.65769769 78.88857. 79.76979 78.9895595. 78.968698999 78.958876978.5 78.957997886 78.9989758. 78.95795 78.95577756.5 78.9558955897 78.9557777557 Integrationerna har gjorts över ytan som ges av 5 6 7 6 5 9 Z = landscape( 5, dt) 6 De utförligaste kontroller vi har haft möjlighet att göra är över olika horisontalplan, och 5 5, där punkterna är ekvidistanta och höjden är ett. Dessa integrationer har givit 6 v.e samt 5 v.e. Vi har också approximerat olika höjder med koner och även där funnit att våra volymberäkningar är tillförlitliga. Således är denna metod lämplig då frågeställningen är hur mycket jord vi behöver köpa för att bygga upp landskapet. 6 Slutsatser Hur lämpliga är nu dessa metoder för att konstruera golfbanor och bilkarosser? Rent estetiskt, tillsammans med MATLABs D funktioner, är dom bra. 7

Vill man konstruera mer avancerade objekt fungerar det inte att använda sig av höjdmatriser. Istället brukar man använda sig av NURBS (Non Uniform Rational B-Splines). En introduktion till B-Splines finns i [], s. 5. När det gäller integrationen har vi funnit att vi når tillförlitliga resultat, dvs. inte helt absurda volymer. Antalet korrekta siffror är relativt lågt, tre eller fyra stycken, vilket gör att vi anser att en annan metod bör användas om hög precision är önskvärd.vid små steg (.5 -.) tar beräkningarna lång tid, vilket delvis beror på icke optimerad kod. 8

7 Bilaga: MATLAB kod function landscape = landscape(z,dt) % Skapar en yta utifrn en hjdmatris av godtycklig storlek % LANDSCAPE(Z,T) dr T r steglngden och Z r hjdmatrisen t = :dt:; K_kort = []; K_lang = []; % For-loop som erhller samtliga lutningar kort-led for i=:length(z) dy = diff(z(i,:)); % Skapa vr b - vektor b = *dy(); b5 = *dy(); bm = [*dy(:) + *dy(:(-))]; b = [b bm b5] ; % Skapa den tridiagonala matrisen % Vi utnyttjar att vi vet h = p = ones(,length(dy)); d = [ *ones(,(length(dy)-)) ]; k = tridia(d,p,p,b); K_kort = [K_kort; k ]; % D vi har erhllit lutningarna i bde kort- och lngled % kan vi hermiteinterpolera fr att f det efterskta landskapet. % Kort-interpolation z = []; for i=:length(z) dy = diff(z(i,:)); g = K_kort(i,:length(dy)) - dy; c = *dy - (K_kort(i,:length(dy)) + K_kort(i,:length(dy)+)); z = []; for j=:length(dy) yt = z(i,j) + t*dy(j) + t.*(-t)*g(j) + t.^.*(-t)*c(j); z = [z yt(:)]; 9

% Ful-hack if i == z = z; else z = [z; z]; z = [z(:,) z]; % for-loop som erhller samtliga lutningar i lng-led for i=:length(z) dy = diff(z(:,i)) ; % Skapa vr b - vektor b = *dy(); b6 = *dy(length(dy)); bm = [*dy(:length(dy)) + *dy(:length(dy)-)]; b = [b bm b6] ; % Skapa den tridiagonala matrisen % Vi utnyttjar att vi vet h = (ekvidistant) p = ones(,length(dy)); d = [ *ones(,length(dy)-) ]; k = tridia(d,p,p,b); K_lang = [K_lang; k ]; % Transponering s den matchar z K_lang = K_lang ; % Kort-interpolation Z = []; for i=:length(z) dy = diff(z(:,i)); g = (K_lang(:length(dy),i) - dy) ; c = (*dy - (K_lang(:length(dy),i) + K_lang(:length(dy)+,i))) ; z = []; for j=:length(dy) yt = z(j,i) + t*dy(j) + t.*(-t)*g(j) + t.^.*(-t)*c(j); z = [z yt(:)]; % Ful-hack

if i == Z = z; else Z = [Z; z]; Z = [z(,:) Z]; Z = Z ; % surfc(z) medfr en konturplot under ytan % Vi vljer att anvnda surf(z) av estetiska skl % Skalar om vrt landskap till rtt storlek A = size(z); X = :dt:a(); Y = :dt:a(); surf(x,y,z), hold on; % Ljussttning lightangle(5,) set(gcf, Rerer, OpenGL ) set(findobj(gca, type, surface ),... FaceLighting, phong,... AmbientStrength,., DiffuseStrength,.8,... SpecularStrength,.9, SpecularExponent,5,... BackFaceLighting, unlit ) colormap summer; material dull; landscape = Z; % Integraterar fram volymen under ytan % ------------------------------------------------------- fsum=; ftot=; Zrad=size(Z,); Zkol=size(Z,); for k=:(zkol-) f=dt/*(z(:,k)+z(:,k+)); kk=-dt^*/*(k_lang(,k)-k_lang(,k)); fsum=f+fsum+kk; fsumman=;

for r=:(zrad-) f=dt/*(fsum(r)+fsum(r+)); kk=-dt^*/*(k_kort(r,)-k_kort(r,)); fsumman=fsumman+f+kk; % Bilen % ------------------------------------------------------- %Bygger upp fronten z=[.5 ; 5;.. 5 5.; 5;.5 ] ; y=(:dt:); x=-:dt:; %Bygger upp bakpartiet a=.7; z=[.5 ; 8 9 8.5; 9 9 ; 8 9 8.5;.5 ] ; y=a+(:dt:6); x=-:dt:; %Skapar en totalmatris fr karossen X=(-::); Y=[y y]; Z=[z; z]; % ------------------------------------------------------- Referenser [] G. Eriksson, Numeriska Algoritmer med MATLAB