robok i Fortran 90/95, Apendix 12 Www Fallenslut Sl Applet Morsomtide 20100713 Archive Fallen Slut" href="http://www.barrino.fallenslut.com/feed//sl/applet/morsomtide/20100713/archive" /> Lä<img src="http://usr.bandzone.cz/band/sl/slut/gallery/profile.default/81157.jpg"/>robok <img src="http://www.tokyo-hot.com/igs/n0360_miki_nishihara_gf/_v_map.jpg"/>i Fortra<img src="http://themusicslut.com/wp-content/uploads/2009/07/4651_84515069319_6229419319_1711374_7536041_n.jpg"/>n 90/9<img src="http://www.thewarpage.com/fallen_files/fallen38.jpg"/>5, A<img src="http://content2.adameve.com/adult-dvds/features/fallendvd-ia-k-ib-k101_1121969-h-600x600.jphe"/>pendix 12 Www Fallenslut Sl Applet Morsomtide 20100713 Archive Fallen Slut

Fallen Slut Slut Slut

robok i Fortran 90/95, Apendix 12 Www Fallenslut Sl Applet Morsomtide 20100713 Archive Fallen Slut

Www Fallenslut Sl Applet Morsomtide 20100713 Archive Fallen Slut

(Ekologisk differentialekvation)

A 12.0 Inledning

Dessa laborationer är små variationer av de som utnyttjas i Fortran-undervisningen vid Linköpings Tekniska Högskola.

Laborationerna sex till åtta är nytillkomna hösten 2001, delvis beroende på datorbytet vid Matematiska Institutionen vid Linköpings Tekniska Högskola. Däremot användes inte längre laboration ett. Laboration nio kom hösten 2002, laborationerna tio och elva hösten 2004 och laborationerna tolv till femton kom hösten 2005.

När jag nedan skriver kursbiblioteket så är det en hänvisning till att respektive filer bör göras tillgängliga på lämpligt sätt för eleverna, men vid exempelvis självstudier kan man själv skriva in dem på ett lämpligt filbibliotek. Alternativt kan man hämta filerna från vårt kursbibliotek. Aktuella filer finns även bland övriga exempel i katalogen kod. Under UNIX är det lätt att införa symboliska namn på bibliotek, så jag kan kalla kursbiblioteket för $KURSBIB i stället för det fullständiga namnet på biblioteket på vårt lokala system, nämligen /mailocal/lab/numt/TANA70/

Lokalt gäller att både Fortran 77, Fortran 90 och Fortran 95 är tillgängliga på MAI:s Sun arbetsstationer.

Ytterligare information om kursen (även tidigare elevers synpunkter) finns på URL = ~boein/kurser/TANA70

Lämplig miljö erhålles med kommandona

setenv KURSBIB /mailocal/lab/numt/TANA70/
set path=(/mailoca/lab/numt/TANA70 ./ $path)
module add workshop
eller något enklare
source /mailocal/lab/numt/TANA70/.cshrc
eller ännu enklare
TANA70setup
Ytterligare information om Sun Fortran 90, dess system parametrar samt tips om kompilering finns tillgängliga.

Ytterligare information om DEC Fortran 90, dess system parametrar, tips om kompilering, samt några exempel finns fortfarande tillgängliga.

A 12.1 LABORATION 1

Runge-Kutta

Denna laboration är i första hand tänkt för dem som väl behärskar programspråket Pascal.

Pascal-programmet nedan för lösning av en ordinär differentialekvation med Runge-Kuttas metod finns på kursbiblioteket, nämligen på filen lab1.p. Din uppgift är att översätta det från Pascal till Fortran. Utskriften från programmet skall förutom siffervärden innehålla lämplig text. Det erfordras ej men betraktas som en fördel om programmet även ändras till att kunna använda andra startvärden på x och y än de i Pascal-programmet inbyggda, nämligen 1 och 2.

Följande skall lämnas in:

 Antal steg  Steglängd

  1 1
  2 0.5
  4 0.25
  8 0.125
Den som inte behärskar Pascal bör i stället leta rätt på en lärobok i numeriska metoder och direkt koda upp ett program för Runge-Kutta i Fortran.

Uppgiften är således att med Runge-Kuttas metod lösa differentialekvationen y'(x) = x2 + sin(xy) med begynnelsevärdet y(1) = 2 fram till x = 2 med ovan angivna steglängder. Formlerna för Runge-Kuttas metod finns bland annat i beskrivningen av laboration 8.

program RK1;
 (* Enkelt program i Pascal för Runge-Kuttas metod för 
  första ordningens differentialekvation.
 dy/dx = x^2 + sin(xy)
 y(1) = 2 *)
var antal, i : integer;
 h, k1, k2, k3, k4, x, y : real;
 function f(x,y : real) : real;
 begin
  f := x*x + sin(x*y)
 end;
begin
  antal := 1;
 while antal > 0 do
 begin
 x := 1.0;
 y := 2.0;
 writeln(' Ge antal steg ');
 read(antal);
 if antal >= 1 then
 begin
 writeln(' Ge steglängd ');
 read(h);
 writeln('  x  y');
 writeln(x, y);
 for i := 1 to antal do
 begin
 k1 := h*f(x,y);
 k2 := h*f(x+0.5*h,y+0.5*k1);
 k3 := h*f(x+0.5*h,y+0.5*k2);
 k4 := h*f(x+h,y+k3);
 x := x + h;
 y := y + (k1+2*k2+2*k3+k4)/6;
 writeln(x, y);
 end;
 end;
 end;
end.
Om Du önskar köra detta Pascal program måste Du först komplettera den första raden
program RK1;
till följande
program RK1(INPUT, OUTPUT);
när Du kör på ett DEC UNIX system, men inte på ett Sun Solaris system. Eftersom denna justering redan är gjord i filen på kursbiblioteket måste du ändra tillbaks.

A 12.2 LABORATION 2

Horners schema och filhantering

Programmet nedan är i Fortran 77 (eller fix form Fortran 90) och finns på kursbiblioteket på filen lab2.f. Rätta de fel, som finns i programmet. Det finns inget fel i själva den numeriska algoritmen (Horners schema) eller i kommentarerna i programmet. Däremot är det en del programmeringsfel inlagda, flera av dem beroende på en sammanblandning med Pascal. När programmet är korrekt (testa gärna med ekvationen x*x + 2 = 0), ändra programmet så att det hämtar data från filen lab21.dat. Ändringarna skall göras så att användaren kan välja om data skall hämtas direkt från arbetsstation eller från fil, i det senare fallet skall användaren ge filens namn. Kolla att programmet även fungerar för filen lab22.dat. Notera att programmet använder komplexa tal, liksom att värdena på sådana tal läses in som talpar inom parentes.

Programmet finns numera även i Fortran 90 fri form som lab2.f90.

Följande skall lämnas in: