MTH202 Worksheet 4¶
In [1]:
import numpy as np
Problem 1¶
You are organizing a French cuisine party. You need to cook one starter, one main dish, and one dessert. You are uncertain of what to make among the following lists:
Starter
- Vegetarian salad
- Mushroom soup
- Grilled scallop
Main dish
- Beef steak
- German sausages
- Roasted duck
- Grilled sea bass
Dessert
- Strawberry sorbet
- Custart tart
Use for loops to list all possible course combinations.
In [2]:
Starters = ["Vegetarian salad", "Mushroom soup", "Grilled scallop"]
Mains = ["Beef steak", "German sausages", "Roasted duck", "Grilled sea bass"]
Desserts = ["Strawberry sorbet", "Custart tart"]
for starter in Starters:
for main in Mains:
for dessert in Desserts:
print(f"(Starter: {starter}, Main dish: {main}, Dessert: {dessert})")
(Starter: Vegetarian salad, Main dish: Beef steak, Dessert: Strawberry sorbet) (Starter: Vegetarian salad, Main dish: Beef steak, Dessert: Custart tart) (Starter: Vegetarian salad, Main dish: German sausages, Dessert: Strawberry sorbet) (Starter: Vegetarian salad, Main dish: German sausages, Dessert: Custart tart) (Starter: Vegetarian salad, Main dish: Roasted duck, Dessert: Strawberry sorbet) (Starter: Vegetarian salad, Main dish: Roasted duck, Dessert: Custart tart) (Starter: Vegetarian salad, Main dish: Grilled sea bass, Dessert: Strawberry sorbet) (Starter: Vegetarian salad, Main dish: Grilled sea bass, Dessert: Custart tart) (Starter: Mushroom soup, Main dish: Beef steak, Dessert: Strawberry sorbet) (Starter: Mushroom soup, Main dish: Beef steak, Dessert: Custart tart) (Starter: Mushroom soup, Main dish: German sausages, Dessert: Strawberry sorbet) (Starter: Mushroom soup, Main dish: German sausages, Dessert: Custart tart) (Starter: Mushroom soup, Main dish: Roasted duck, Dessert: Strawberry sorbet) (Starter: Mushroom soup, Main dish: Roasted duck, Dessert: Custart tart) (Starter: Mushroom soup, Main dish: Grilled sea bass, Dessert: Strawberry sorbet) (Starter: Mushroom soup, Main dish: Grilled sea bass, Dessert: Custart tart) (Starter: Grilled scallop, Main dish: Beef steak, Dessert: Strawberry sorbet) (Starter: Grilled scallop, Main dish: Beef steak, Dessert: Custart tart) (Starter: Grilled scallop, Main dish: German sausages, Dessert: Strawberry sorbet) (Starter: Grilled scallop, Main dish: German sausages, Dessert: Custart tart) (Starter: Grilled scallop, Main dish: Roasted duck, Dessert: Strawberry sorbet) (Starter: Grilled scallop, Main dish: Roasted duck, Dessert: Custart tart) (Starter: Grilled scallop, Main dish: Grilled sea bass, Dessert: Strawberry sorbet) (Starter: Grilled scallop, Main dish: Grilled sea bass, Dessert: Custart tart)
Problem 2¶
Use while loop to find the smallest positive integer $x$ in which $\dfrac{x^{2} + x\sin(x)}{2 + x} \geq 100$.
(Note: Use np.sin(x) for $sin(x)$)
In [3]:
x = 0
while (x**2 + x*np.sin(x))/(2+x) < 100:
x += 1
print(f"x = {x}, (x^2 + x sin(x))/(2+x) = {(x**2 + x*np.sin(x))/(2+x)}")
x = 102, (x^2 + x sin(x))/(2+x) = 101.01415704537074
Problem 3¶
Suppose that $A = [a_{ij}]$ is an $m \times n$ matrix and $B = [b_{ij}]$ is an $n \times r$ matrix. The product $AB = [c_{ij}]$ is an $m \times r$ matrix whose entry $c_{ij}$ is defined by $$ c_{ij} = a_{i1}b_{1j} + a_{i2}b_{2j} + \dots + a_{in}b_{nj}. $$
Write, using for loops, computing all entries of $AB$.
(Note: Check the correctness with A @ B.)
In [4]:
A = np.array([
[1, 0, 0, -1, 3, 5],
[2, 1, 5, 2, 0, -2],
[3, 5, 0, 4, -3, 1]])
B = np.array([
[1, 11],
[2, -2],
[5, 0],
[0, -1],
[1, 0],
[0, 6]])
Method 1¶
In [5]:
assert A.shape[1] == B.shape[0] # Check if AB can be defined.
m = A.shape[1]
C_rows, C_cols = (A.shape[0], B.shape[1])
C = np.zeros((C_rows, C_cols))
for i in range(C_rows):
for j in range(C_cols):
for k in range(m):
C[i,j] += A[i,k]*B[k,j]
print(f"AB =\n{C}")
AB = [[ 4. 42.] [29. 6.] [10. 25.]]
Method 2¶
In [6]:
assert A.shape[1] == B.shape[0] # Check if AB can be defined.
m = A.shape[1]
C_rows, C_cols = (A.shape[0], B.shape[1])
C = np.zeros((C_rows, C_cols))
for i in range(C_rows):
for j in range(C_cols):
C[i,j] = np.dot(A[i,:], B[:,j])
print(f"AB =\n{C}")
AB = [[ 4. 42.] [29. 6.] [10. 25.]]