Minimum feladat: Teljes feladat: Minimum feladat: Teljes feladat: Minimum feladat:

Hasonló dokumentumok
main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Programozás 6. Dr. Iványi Péter

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

INFORMATIKA tétel 2019

INFORMATIKA tétel 2018

INFORMATIKA javítókulcs 2016

Programozás I. gyakorlat

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

int tokeletes(int szam) { int i,oszto=0; for(i=1; i<szam; i++) { if(szam %i == 0) { oszto+=i; }

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

INFORMATIKA tétel 2017

Line aris f uggv enyilleszt es m arcius 19.

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Programozás alapjai 9.Gy: Struktúra 2.

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

1. Alapok. Programozás II

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

10. gyakorlat Tömb, mint függvény argumentum

Baran Ágnes, Burai Pál, Noszály Csaba. Gyakorlat Differenciálegyenletek numerikus megoldása

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Programozás I. 5. Előadás: Függvények

Robotok inverz geometriája

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Országzászlók (2015. május 27., Sz14)

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

1. Írjunk programot mely beolvas két számot és ellenőrzi hogy mindkét szám zérus-e:

Programozás C nyelven (9. ELŐADÁS) Sapientia EMTE

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

Programozás alapjai 8.Gy: Program struktúra

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Példák tematikus csoportosításban

Programozás 5. Dr. Iványi Péter

malloc free malloc free int sum(int a[4]) { return a[0] + a[1] + a[2] + a[3]; }

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Megoldott programozási feladatok standard C-ben

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Programozás alapjai 1. (BMEVIEEA100)

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

7. gyakorlat Sorozatok, Fájlkezelés

Differenciálegyenletek numerikus integrálása április 9.

Fiznum második rész hosszabb feladatsor. Pál Bernadett. Határozzuk meg a 13. feladatban szereplő rendszer sajátfrekvenciáit!

Programozás II. 2. Dr. Iványi Péter

2. Alapfeltevések és a logisztikus egyenlet

Megoldott programozási feladatok standard C-ben

Matematika III. harmadik előadás

7/8. gyakorlat Karaktertömbök és sztringkezelés

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

Programozás I gyakorlat. 10. Stringek, mutatók

Inga. Szőke Kálmán Benjamin SZKRADT.ELTE május 18. A jegyzőkönyv célja a matematikai és fizikai inga szimulációja volt.

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Elemi alkalmazások fejlesztése I. Olvassunk be egy fájlból egész számokat egy tömbbe. Keressük meg a tömb valamely

117. AA Megoldó Alfréd AA 117.

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

BME MOGI Gépészeti informatika 5.

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

A C programozási nyelv VI. Parancssori argumentumok File kezelés

10. Előadás. Megyesi László: Lineáris algebra, oldal. 10. előadás Sajátérték, Kvadaratikus alak

Információs Technológia

(kidolgozta: Dr. Nagy Zoltán egyetemi adjunktus)

Algoritmusok pszeudókód... 1

BASH script programozás II. Vezérlési szerkezetek

Maximum kiválasztás tömbben

0-49 pont: elégtelen, pont: elégséges, pont: közepes, pont: jó, pont: jeles

értékel függvény: rátermettségi függvény (tness function)

Programozás Minta programterv a 1. házi feladathoz 1.

Felvételi tematika INFORMATIKA

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Norma Determináns, inverz Kondíciószám Direkt és inverz hibák Lin. egyenletrendszerek A Gauss-módszer. Lineáris algebra numerikus módszerei

Mátrixok 2017 Mátrixok

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Adatszerkezetek és algoritmusok

Bevezetés a programozásba I.

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

1. Jelölje meg az összes igaz állítást a következők közül!

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

Tartalomjegyzék Algoritmusok - pszeudókód

Numerikus matematika

Vezérlési szerkezetek

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Algoritmusok pszeudókód... 1

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Programozás I. gyakorlat

Lagrange egyenletek. Úgy a virtuális munka mint a D Alembert-elv gyakorlati alkalmazását

Informatika feladatmegoldó verseny. Kiss Elemér Szakkollégium február 19. Dr. Kovács Lehel István

Példatár a Programozás 1 tárgyhoz

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Átírás:

Megjegyzések: Ez a dokumentum a 2017-es tavaszi fiznum2 gyakorlat házi feladatait, és annak általam beadott megoldásait tartalmazza. Összesen 150 pontot kaptam rájuk, a vizsgázáshoz 120-ra volt szükség. Amennyiben a további években is ugyanezek a feladatok szükségesek a tárgy teljesítéséhez, senkinek nem ajánlom, hogy ezeket a kódokat adja be, mivel nagyon egyszerűen kideríthető a másolás. Csupán azért töltöttem fel, hogy segítséget nyújthasson a mire gondolt a költő, amikor kiírta a feladatokat mondatra. A feltöltés idejében a kódok gond nélkül fordultak, remélem segítenek a sajátod megalkotásában, ha elakadtál. Elírások természetesen előfordulhatnak. 1. feladat: Egyszerű mátrixműveletek Minimum feladat: Írjunk olyan programot, amely parancssorban megadott MxN méretű mátrixot (pl. matrix.dat) és egy N elemű oszlopvektort (pl. vector.dat) fájlból beolvas, összeszorozza őket, és az eredményvektort kiírja a standard outputra! A parancssor M=5, N=3 esetén így nézhet ki: matmul 5 3 matrix.dat vector.dat Teljes feladat: Írjuk meg a mátrixot fájlból betöltő függvényt úgy, hogy az ne várja előre a mátrix méretét, hanem találja ki a fájlban levő oszlopok és sorok számából. A fájl formátumára nincsen sok megkötés, a lényeg, hogy ránézésre mátrixot tartalmazó szöveges állomány legyen. Készítsünk a programhoz különböző próbafájlokat, amikkel a helyes működése tesztelhető. Figyelem: a fájlt csak egyszer és csak szekvenciálisan szabad végigolvasni, valamint a fájl tetszőlegesen nagy lehet! 2. feladat: Gauss-elimináció Minimum feladat: Írjunk olyan programot, amelyik beolvas egy NxN méretű valós mátrixot (szöveges, szóközzel, illetve soremeléssel elválasztott fájlokból), eredményként pedig kiírja a mátrix inverzét! Algoritmusként használjuk a Gauss- eliminációt sor- és oszlopcserékkel! A program detektálja, ha az invertálandó mátrix szinguláris! Tervezzük meg modulárisan a programot, úgy, hogy egy lineárisegyenlet- megoldó algoritmus függvényként legyen hívható! Teljes feladat: A Gauss-elimináció implementálása után használjuk mátrix inverzének meghatározására a LAPACK csomag szingulárisérték-dekompozíció függvényét. Hasonlítsuk össze az SVD algoritmus eredményét a Gauss- eliminációéval néhány mátrix esetében! Teszteljük a két algoritmus sebességét különböző méretű mátrixokra! Próbáljuk ki az SVD-t szinguláris és közel szinguláris mátrixokra. 3. feladat: Polinomillesztés Minimum feladat: Írjunk olyan programot, amely az előző feladatban kidolgozott, lineáris egyenletrendszereket megoldó kódot felhasználva általános N változós polinomillesztést hajt végre a lineáris legkisebb négyzetek módszerével! A program parancssori paraméterként várja a független változók számát, az illesztendő polinom rendjét, valamint a bemenő adatokat tartalmazó fájl nevét. A program írja ki a képernyőre az illesztési paramétereket, valamint egy fájlba az eredeti mérési értékeket és az illesztett polinom által adott becsléseket az eredeti bemeneti fájl minden adatpontjára. Készítsünk ábrát, melyről leolvasható a polinomillesztés jósága! Készítsünk saját adatfájlokat az algoritmus tesztelésére, majd futassuk a programot az alább letölthető adatfájlokra

(5 változó). Az alapfeladathoz nem szükséges a többváltozós polinomok vegyes tagjait (pl. xy, xy 2 stb.) figyelembe venni. A bemenő adatokat tartalmazó fájl formátuma: Szöveges fájl, mely soronként N + 2 számot tartalmaz, ahol N a független változók száma. Az első N szám ennek megfelelően a független változók értéke, az (N+1). a függő változó mért értéke, az (N+2). szám pedig a mérés abszolút hibája. A kimenő fájl formátuma: Szöveges fájl, mely soronként két számot tartalmaz: a mérési értéket (az eredeti fájl (N+1). oszlopából), illetve a becsült értéket (az eredeti fájl első N oszlopát a polinomba helyettesítve). A kimeneti fájl annyi sorból álljon, mint a bemeneti fájl. Nem kötelező feladat (jegybe nem számít bele): Valósítsunk meg nem lineáris függvényillesztést MCMC módszerrel, Metropolis-Hastings-algoritmussal. A program teszteléséhez készítsünk saját adatfájlokat. Próbálkozzunk Gauss- illesztéssel! 4. feladat: Differenciálegyenlet megoldása Minimum feladat: Írjunk olyan programot, amelyik az explicit Euler-módszer segítségével megoldja a Föld- Hold- rendszer mozgásegyenletét. Ábrázoljuk a kapott eredményeket. Nézzük meg, hogy tapasztalható-e eltérés az analitikus megoldástól sok periódus után! A feladat megoldása során dolgozzunk síkban, geocentrikus koordinátákban (a Föld a 0,0 pontban van rögzítve). Ábrázoljuk a Hold pályáját, valamint a rendszer teljes energiáját az idő függvényében. Föld tömege: 5.9736 10 24 kg Hold tömege: 7.349 10 22 kg Apogeum távolsága: 405.500 km Sebesség apogeumban: 964 m/s Perigeum távolsága: 363.300 km Sebesség perigeumban: 1076 m/s Gravitációs állandó: 6.67384 10-11 m 3 kg -1 s -2 Teljes feladat: Integráljuk a mozgásegyenletet egyszerű, valamint adaptív lépéshosszszabályozott negyedrendű Runge-Kutta-módszerrel! A program legyen teljesen általános, ne legyen megkötés az integrálandó változók számára. Használjunk függvénypointereket! Próbáljuk ki a programot a Lorenz-féle egyenletrendszer, vagy a kettős inga egyenleteinek megoldására! Ábrázoljuk az eredményeket!

1. feladat: (50/50 pont, teljes megoldás) #include <stdio.h> #include <stdlib.h> #include <math.h> double* matrixbe(char** argv, int* msize) char c; int temp = 1; int max = 0; double* matrix = (double*)malloc(sizeof(double)); FILE* matrixfile = fopen(argv[1], "r"); while (fscanf(matrixfile, "%lf%c", &matrix[*msize], &c) > 0) (*msize)++; if (max!= 0 && (*msize) > max) fclose(matrixfile); free(matrix); return 0; if (c == '\n' && temp == 1) matrix = (double*)realloc(matrix, (*msize) * (*msize) * sizeof(double)); temp = 0; max = (*msize) * (*msize); if (c == ' ' && temp == 1) matrix = (double*)realloc(matrix, ((*msize) + 1) * sizeof(double)); *msize = (int)sqrt(*msize); fclose(matrixfile); return matrix; double* vectorbe(char** argv, int* vsize) char c; double* vector = (double*)malloc(sizeof(double)); FILE* vectorfile = fopen(argv[2], "r"); while (fscanf(vectorfile, "%lf%c", &vector[*vsize], &c) > 0) (*vsize)++; if (c == '\n') vector = (double*)realloc(vector, ((*vsize) + 1) * sizeof(double)); fclose(vectorfile); return vector;

double* multiplication(double* matrix, double* vector, int vsize) double* finalvector = (double*)malloc(vsize * sizeof(double)); for (int i = 0; i < vsize; i++) double temp = 0; for (int j = 0; j < vsize; j++) temp += matrix[i * vsize + j] * vector[j]; finalvector[i] = temp; return finalvector; void vectorprint(double* vector, int size) printf("%lf\n", vector[i]); int main(int argc, char** argv) int msize = 0; int vsize = 0; double* matrix = matrixbe(argv, &msize); if (matrix == 0) printf("mátrix nem kvadratikus!"); return 1; double* vector = vectorbe(argv, &vsize); if (msize!= vsize msize == 0 vsize == 0) printf("a tagok méreteik miatt nem szorozhatóak össze."); return 1; double* finalvector = multiplication(matrix, vector, vsize); vectorprint(finalvector, vsize); free(matrix); free(vector); free(finalvector); return 0;

2. feladat: (40/70 pont, alap feladat megoldása) #include <stdio.h> #include <stdlib.h> #include <math.h> #include <stdbool.h> double* Abe(char** argv, int* size) int tempsize = 0; char c; bool temp = true; double* A = (double*)malloc(sizeof(double)); FILE* matrixfile = fopen(argv[1], "r"); while (fscanf(matrixfile, "%lf%c", &A[tempsize], &c) > 0) (tempsize)++; if (c == '\n' && temp) A = (double*)realloc(a, (tempsize) * (tempsize) * sizeof(double)); temp = false; if (temp) A = (double*)realloc(a, ((tempsize) + 1) * sizeof(double)); fclose(matrixfile); *size = (int)sqrt(tempsize); return A; double* Ibe(int size) double* I = (double*)malloc(size * size * sizeof(double)); for (int i = 0; i < size * size; i++) I[i] = 0; for (int i = 0; i < size * size; i += size + 1) I[i] = 1; return I; double* Vbe(char** argv, int size) double* V = (double*)malloc(size * sizeof(double)); FILE* vectorfile = fopen(argv[2], "r"); fscanf(vectorfile, "%lf ", &V[i]);

fclose(vectorfile); return V; void matrixprint(double* matrix, int size, char* nev) printf("%s\n", nev); for (int j = 0; j < size; j++) printf("%lf ", matrix[i * size + j]); printf("\n"); printf("\n"); void vectorprint(double* vector, int size, char* nev) printf("%s\n", nev); printf("x%d=%lf\n", i + 1, vector[i]); printf("\n"); void gaussjordaninvertalas(double* A, double* I, int size) int temp1; double temp2; double temp3; for (int j = 0; j < size; j++) temp1 = j; for (int i = j + 1; i < size; i++) if (A[i * size + j] > A[temp1 * size + j]) temp1 = i; if (fabs(a[temp1 * size + j]) < 0.0005) printf("\na matrix numerikusan szingularis.\n"); exit(1); if (temp1!= j) for (int k = 0; k < size; k++) temp2 = A[j * size + k]; A[j * size + k] = A[temp1 * size + k]; A[temp1 * size + k] = temp2;

temp2 = I[j * size + k]; I[j * size + k] = I[temp1 * size + k]; I[temp1 * size + k] = temp2; if (i!= j) temp3 = A[i * size + j]; for (int k = 0; k < size; k++) A[i * size + k] -= (A[j * size + k] / A[j * size + j]) * temp3; I[i * size + k] -= (I[j * size + k] / A[j * size + j]) * temp3; else temp3 = A[i * size + j]; for (int k = 0; k < size; k++) A[i * size + k] /= temp3; I[i * size + k] /= temp3; void linegyenlet(double* A, double* V, int size) double temp; for (int j = 0; j < size; j++) if (i!= j) temp = A[i * size + j] / A[j * size + j]; for (int k = 0; k < size; k++) A[i * size + k] -= temp * A[j * size + k]; V[i] -= temp / size * V[j]; V[i] /= A[i * size + i]; A[i * size + i] /= A[i * size + i];

int main(int argc, char** argv) int size = 0; if (argc >= 3) double* A = Abe(argv, &size); double* V = Vbe(argv, size); linegyenlet(a, V, size); matrixprint(a, size, "A:"); vectorprint(v, size, "Az egyenletrendszer megoldasa:"); free(a); free(v); return 0; else if (argc == 2) double* A = Abe(argv, &size); double* I = Ibe(size); gaussjordaninvertalas(a, I, size); matrixprint(i, size, "A mátrix inverze:"); free(a); free(i); return 0; else printf("nincs eleg parameter!"); return 0;

3. feladat: (30/50 pont, alap feladat megoldása) #include <stdio.h> #include <stdlib.h> #include <math.h> double* beolvasxyh(char** argv, int* sor, int fuggetlen) double temp; int index = 0; char c; double* XYH = (double*)malloc((fuggetlen + 2) * sizeof(double)); FILE* File = fopen(argv[3], "r"); while (fscanf(file, "%lf%c", &temp, &c) > 0) XYH[*sor * (fuggetlen + 2) + index] = temp; index++; if (index == fuggetlen + 2) index = 0; (*sor)++; if (c == '\n') XYH = (double*)realloc(xyh, ((*sor) + 1) * (fuggetlen + 2) * sizeof(double)); fclose(file); return XYH; void szeparal(double* XYH, double* X, double* Y, int sor, int rend, int fuggetlen) for (int i = 0; i < sor; i++) X[i * (fuggetlen * rend + 1)] = 1; for (int j = 0; j < fuggetlen; j++) for (int k = 0; k < rend; k++) X[i * (fuggetlen * rend + 1) + j * rend + k + 1] = (pow(xyh[i * (fuggetlen + 2) + j], k + 1)) / XYH[i * (fuggetlen + 2) + fuggetlen]; Y[i] = XYH[i * (fuggetlen + 2) + fuggetlen] / XYH[i * (fuggetlen + 2) + fuggetlen + 1]; double* transponalt(double* X, int sor, int oszlop) double* XT = (double*)malloc(sor * oszlop * sizeof(double)); for (int i = 0; i < sor; i++)

for (int j = 0; j < oszlop; j++) XT[j * sor + i] = X[i * oszlop + j]; return XT; double* matrixszorzas(double* XT, double* X, int sor, int oszlop) double sum = 0; double* XTX = (double*)malloc(oszlop * oszlop * sizeof(double)); for (int i = 0; i < oszlop; i++) for (int j = 0; j < oszlop; j++) for (int k = 0; k < sor; k++) sum += XT[i * sor + k] * X[k * oszlop + j]; XTX[i * oszlop + j] = sum; sum = 0; return XTX; double* vectorszorzas(double* XT, double* Y, int sor, int oszlop) double* XTY = (double*)malloc(sor * sizeof(double)); for (int i = 0; i < sor * oszlop; i += sor) double sum = 0; for (int j = 0; j < sor; j++) sum += XT[i + j] * Y[j]; XTY[i / sor] = sum; return XTY; double* illesztes(double* X, double* Y, double* XYH, int sor, int oszlop, int fuggetlen) double* Yill = (double*)malloc(sor * sizeof(double)); for (int i = 0; i < sor; i++) double sum = 0; for (int j = 0; j < oszlop; j++) sum += X[i * oszlop + j] * Y[j] * XYH[i * (fuggetlen + 2) + fuggetlen + 1]; Yill[i] = sum; return Yill;

void linegyenlet(double* XTX, double* XTY, int size) double temp; for (int j = 0; j < size; j++) if (i!= j) temp = XTX[i * size + j] / XTX[j * size + j]; for (int k = 0; k < size; k++) XTX[i * size + k] -= temp * XTX[j * size + k]; XTY[i] -= temp / size * XTY[j]; XTY[i] /= XTX[i * size + i]; XTX[i * size + i] /= XTX[i * size + i]; void kiirpolinomegyutthatok(double* XTY, int oszlop) FILE* File = fopen("polinomegyutthatok.dat", "w"); for (int i = 0; i < oszlop; i++) fprintf(file, "%lf\n", XTY[i]); fclose(file); void kiirpolinomfuggoertekek(double* Yillesztett, double* XYH, int sor, int fuggetlen) FILE* File = fopen("polinomfuggoertekek.dat", "w"); for (int i = 0; i < sor; i++) fprintf(file, "%lf %lf\n", XYH[(i * (fuggetlen + 2)) + fuggetlen], Yillesztett[i]); fclose(file); int main(int argc, char** argv) int fuggetlen = atoi(argv[1]), rend = atoi(argv[2]), sor = 0, oszlop = fuggetlen * rend + 1; double* XYH = beolvasxyh(argv, &sor, fuggetlen); double* X = (double*)malloc(sor * (fuggetlen * rend + 1) * sizeof(double)); double* Y = (double*)malloc(sor * sizeof(double)); szeparal(xyh, X, Y, sor, rend, fuggetlen); double* XT = transponalt(x, sor, oszlop); double* XTX = matrixszorzas(xt, X, sor, oszlop);

double* XTY = vectorszorzas(xt, Y, sor, oszlop); linegyenlet(xtx, XTY, oszlop); double* Yillesztett = illesztes(x, XTY, XYH, sor, oszlop, fuggetlen); kiirpolinomegyutthatok(xty, oszlop); kiirpolinomfuggoertekek(yillesztett, XYH, sor, fuggetlen); free(xt); free(y); free(yillesztett); free(xyh); free(xty); free(x); free(xtx); return 0;

4. feladat: (30/60 pont, alap feladat megoldása) #include <stdio.h> #include <stdlib.h> #include <math.h> double X(double x, double y, double Fold, double Hold, double G) return -G * Fold * Hold * x / pow(x * x + y * y, 1.5); double Y(double x, double y, double Fold, double Hold, double G) return -G * Fold * Hold * y / pow(x * x + y * y, 1.5); void Euler(double* DX, double* DY, double dt, double Fold, double Hold, double G, double Apogtav, double Apogseb, double N) double x = 0, y = Apogtav, vx = Apogseb, vy = 0, x_n1, y_n1, vx_n1, vy_n1, XX, YY; int i = 0; while (i < N) XX = X(x, y, Fold, Hold, G); YY = Y(x, y, Fold, Hold, G); x_n1 = x + vx * dt; vx_n1 = vx + XX * dt / Hold; y_n1 = y + vy * dt; vy_n1 = vy + YY * dt / Hold; x = x_n1; vx = vx_n1; y = y_n1; vy = vy_n1; DX[i] = x; DY[i] = y; i++; void KiirFileba(double* DX, double* DY, int N) FILE* File = fopen("megold.dat", "w"); int i = 0; while (i < N) fprintf(file, "%lf%lf\n", DX[i], DY[i]); i++; fclose(file); int main() const double Fold = 5.9736e24, Hold = 7.349e22, ApogTav = 4.055e8, ApogSeb = 965,

PerigTav = 3.633e8, PerigSeb = 1.076e3, G = 6.67384e-11; int N; double dt; printf("add meg dt-t, és N-t (a pontok szamat)!"); printf("\nadd meg 'dt'-t:"); scanf("%lf", &dt); printf("\nadd meg 'N'-t:"); scanf("%d", &N); double* DX = (double*)malloc(n * sizeof(double)); double* DY = (double*)malloc(n * sizeof(double)); Euler(DX, DY, dt, Fold, Hold, G, ApogTav, ApogSeb, N); KiirFileba(DX, DY, N); return 0;