• Keine Ergebnisse gefunden

How did you test your implementation? Save the source code, split into a header file cdouble.h and cdouble.c, into the directoryserie07

N/A
N/A
Protected

Academic year: 2021

Aktie "How did you test your implementation? Save the source code, split into a header file cdouble.h and cdouble.c, into the directoryserie07"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Dirk Praetorius, Wintersemester 2017/18

Michele Ruggeri 07.12.2017

Ubungen zur Vorlesung¨

Einf¨uhrung in das Programmieren f¨ur TM Serie 7

Aufgabe 7.1. Write a structurecdoubleto store the real parta∈Rand the imaginary partb∈Rof a complex numbera+bi∈Casdoublevariables. The imaginary unitisatisfies the identityi2=−1; see

https://en.wikipedia.org/wiki/Complex_number.

Implement the functions

• cDouble* newCDouble(double a, double b),

• cDouble* delCDouble(cDouble* z)

as well as the mutator functions

• void setCDoubleReal(cDouble* z, double a),

• double getCDoubleReal(cDouble* z),

• void setCDoubleImag(cDouble* z, double b),

• sowiedouble getCDoubleImag(cDouble* z).

How did you test your implementation? Save the source code, split into a header file cdouble.h and cdouble.c, into the directoryserie07.

Aufgabe 7.2. Write the functions

• cDouble* cAdd(cDouble* z, cDouble* w),

• cDouble* cSub(cDouble* z, cDouble* w),

• cDouble* cMult(cDouble* z, cDouble* w),

• cDouble* cDiv(cDouble* z, cDouble* w),

which realize addition, subtraction, multiplication, and division of complex numbers. Moreover, imple- ment the functions

• double cNorm(cDouble* z), which computes and returns the modulus|z|=√

a2+b2of a complex number z=a+ib∈C,

• cDouble* cConj(cDouble* z), which computes and returns the conjugate z = a−ib∈ C of a complex numberz=a+ib∈C.

Use the structurecDoublefrom Exercise 7.1. In particular, access the elements of the structure by using the appropriate functions. Write a main program, which reads two complex numbers w, z ∈ C from the keyboard and prints to the screen the quantities |w|, |z|, w+z, w−z, wz, and w/z (provided that z6= 0). How did you test your implementation? Save your source code ascarithmetik.c into the directoryserie07.

Aufgabe 7.3. Write a structureCPolyfor the storage of polynomials, where the coefficients are complex numbers, i.e., p(x) =Pn

j=0ajxj withaj ∈C. The structure should contain the degreen ∈Nand the coefficients (a0, . . . , an)∈Cn+1. Use the structure from Exercise 7.1. Moreover, implement the functions newCPoly, delCPoly, getCPolyDegree, getCPolyCoefficient, and setCPolyCoefficient. How did you test your implementation? Save your source code ascpoly.cinto the directoryserie07.

(2)

Aufgabe 7.4. Write a function addCpolynomials that computes the sum r =p+q of two complex polynomialsp,qand returnsr. Use the structure from Exercise 7.3. Moreover, write a main program that reads in two polynomialsp, q and prints out the sumr=p+q. How did you test your implementation?

Save your source code asaddcpoly.c into the directoryserie07.

Aufgabe 7.5. Write a structure data-type SquareMatrix for the storage of quadratic matrices A ∈ Rn×n. The structure contains the dimensionn∈Nand the entries given asdouble*, i.e., the entries of the matrix have to be stored columnwise. In contrast to the usual indexing in C (e.g., the indexing considered in the lecture), let the indices for the matrix entriesajk of your structureSquareMatrixgo fromj, k= 1 ton (as it is common in mathematics). Moreover, implement the necessary functions to work with this structure, i.e.,newSquareMatrix,delSquareMatrix,getSquareMatrixN,getSquareMatrixEntry, and setSquareMatrixEntry. How did you test your implementation? Save the source code, split into a header filesquarematrix.handsquarematrix.c, into the directoryserie07.

Aufgabe 7.6. The Laplace formula states that, for eachj∈ {1, . . . , n}, it holds that detA=

n

X

k=1

(−1)j+k·ajk·detAjk,

whereajkare the entries ofAandAjk is the (n−1)×(n−1)-submatrix ofAobtained by removing the j-th row and thek-th column fromA. Note that the determinant of a 1×1-matrix (∈R) is the number itself. Write a recursive function double detlaplace(SquareMatrix* A), which applies the Laplace formula to compute the determinant det(A) of a matrix A ∈ Rn×n. Use the structure SquareMatrix from Exercise 7.5. How did you test your implementation? Save your source code asdetlaplace.cinto the directoryserie07.

Aufgabe 7.7. A matrixA∈Rn×n admits a normalized LU-factorization A=LU if

a11 a12 . . . a1n

a21 a22 . . . a2n

... ... ... an1 an2 . . . ann

=

1 0 . . . 0

`21 1 . .. ... ... . .. . .. 0

`n1 . . . `n,n−1 1

u11 u12 . . . u1n

0 u22 . .. ... ... . .. . .. un−1,n

0 . . . 0 unn

 .

IfAadmits a normalized LU-factorization, it holds that uik=aik

i−1

X

j=1

`ijujk fori= 1, . . . , n, k=i, . . . , n,

`ki= 1 uii

aki

i−1

X

j=1

`kjuji

fori= 1, . . . , n, k=i+ 1, . . . , n,

`ii= 1 fori= 1, . . . , n.

The remaining coefficients of L, U ∈ Rn×n are zero. This can be easily shown by using the formula for the matrix-matrix product. Write a functionSquareMatrix* computeLU(SquareMatrix* A), which computes and returns the LU-factorization of A. To use the above formulae, compute the coefficients ofL andU in an appropriate order (i.e., what you need must already be computed). Use the structure SquareMatrix from Exercise 7.5. Write a main program to test the function computeLUon a suitable example. How did you test your implementation? Save your source code ascomputeLU.cinto the directory serie07.

Aufgabe 7.8. What is the system of floating-point numbers? Which parts does a floating-point number consist of? How can you determine its value? What is the meaning of Inf, -Inf, and NaN? What is a normalized floating-point number? What is an implicit leading bit? Which are the values of the largest and the smallest positive normalized floating point number in thefloat-systemF(2,24,−126,127)?

Referenzen

ÄHNLICHE DOKUMENTE

Transmission of information about war campaigns and victories through space and time, as well as transformation of successful achievements into general political power and

Write a function void insert(tree* myTree, int content) which inserts the input value content into the tree myTree such that the search tree property from above is

Write a function int anagram(char* firstStr, char* secondStr) which checks if a given word is an anagram of a second given word.. An anagram of a word is a letter sequence which

Write a main program, which reads the vector x and its length n from the keyboard, sorts it with mergesort and prints to the screen the sorted vector.. Test your

Check via assert if b ≤ c Write a main program which reads in the bounds and calls the function armstrong.. How did you test the correctness of

Additionally, write a main program that reads in the number x, then calls the function divisor, and prints out the result.. Save your source code as teiler.c into the

Assume that an average of 4 marked exercises per EPROG exercise class yields 22.5 points and an average of 7 yields 37.5 points for the computation of your final grade (without

The Media Search system, as shown in Figure 1, is broken into six components: 1) one or more Media Servers, 2) a metadatabase that is a built on a standard relational database, 3)