Numerical integration (integral, trapz) in MATLAB - Time & Space Complexity
When we use numerical integration in MATLAB, we want to know how the time it takes changes as we use more points.
We ask: How does the work grow when the input size grows?
Analyze the time complexity of the following code snippet.
x = linspace(0, 10, n);
y = sin(x);
result = trapz(x, y);
This code calculates the integral of the sine function using the trapezoidal rule with n points.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Summing areas of trapezoids between points.
- How many times: The operation repeats once for each pair of points, about n-1 times.
As we increase the number of points n, the number of trapezoids to sum grows roughly the same.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 9 |
| 100 | 99 |
| 1000 | 999 |
Pattern observation: The work grows linearly as n grows.
Time Complexity: O(n)
This means the time to compute the integral grows in direct proportion to the number of points.
[X] Wrong: "Using more points will only add a tiny bit of time, so it's almost free."
[OK] Correct: Each extra point adds work because the trapezoidal sum must include it, so time grows steadily with points.
Understanding how numerical methods scale helps you explain efficiency clearly and shows you can think about real problems beyond just writing code.
"What if we used a method that doubles the points each step, how would the time complexity change?"
Practice
integral primarily do?Solution
Step 1: Understand the purpose of
Theintegralintegralfunction in MATLAB is used to calculate the area under a curve defined by a function between two limits.Step 2: Compare with other options
Options A, B, and C describe different MATLAB functions or operations unrelated to numerical integration.Final Answer:
Calculates the numerical integral of a function over a specified interval -> Option BQuick Check:
integral= numerical integration [OK]
- Confusing integral with symbolic math functions
- Thinking integral plots graphs
- Mixing integral with derivative functions
sin(x) from 0 to pi using integral in MATLAB?Solution
Step 1: Identify correct function handle syntax
In MATLAB,integralrequires a function handle, written as@functionName. So@sinis correct.Step 2: Check argument format
The limits are given as separate arguments, so0, piis correct. Other options misuse syntax by passing strings or symbolic expressions.Final Answer:
integral(@sin, 0, pi) -> Option AQuick Check:
Use @ for function handle in integral [OK]
- Passing function as string instead of handle
- Using symbolic expressions instead of function handle
- Putting limits inside brackets as one argument
x = 0:0.5:2;
y = x.^2;
area = trapz(x, y);
disp(area);
Solution
Step 1: Calculate y values
Given x = [0 0.5 1 1.5 2], y = x.^2 = [0 0.25 1 2.25 4].Step 2: Apply trapezoidal rule with trapz
trapz approximates integral as sum of trapezoids:
Area ≈ 0.5*((0+0.25)/2 + (0.25+1)/2 + (1+2.25)/2 + (2.25+4)/2)
= 0.5*(0.125 + 0.625 + 1.625 + 3.125) = 0.5*5.5 = 2.75Final Answer:
2.75 -> Option DQuick Check:
trapz(x,y) ≈ 2.75 [OK]
- Forgetting to square x for y
- Using incorrect step size in calculation
- Mixing up trapz and integral outputs
x = linspace(0,1,5);
y = x.^3;
result = trapz(y, x);
Solution
Step 1: Check trapz argument order
trapz expects x values first, then y values. Here, arguments are reversed.Step 2: Validate other parts
linspace with 5 points is valid; .^3 is correct for element-wise cube; trapz works with vectors.Final Answer:
Arguments to trapz are reversed; should be trapz(x, y) -> Option CQuick Check:
trapz(x,y) correct argument order [OK]
- Swapping x and y in trapz
- Thinking linspace points count causes error
- Misunderstanding element-wise power operator
x = 0:0.1:1 and y = sin(2*pi*x) + 0.1*randn(size(x)). Which method is best to estimate the integral of the underlying sine wave over [0,1]?Solution
Step 1: Understand data and goal
The data y includes noise, so exact function integral is not possible from data alone.Step 2: Choose appropriate method
Usingtrapz(x, y)approximates the integral from discrete noisy data points effectively.Step 3: Evaluate other options
Useintegral(@(t) sin(2*pi*t), 0, 1)for exact integral uses exact function without noise, not data-based; Usetrapz(y, x)ignoring x order reverses arguments; Use symbolic integration on noisy data is invalid for numeric noisy data.Final Answer:
Use trapz(x, y) to approximate integral from noisy data -> Option AQuick Check:
trapz(x,y) best for noisy data integration [OK]
- Using integral on noisy data without function
- Swapping arguments in trapz
- Trying symbolic integration on numeric noise
Ready to prove it?
Pass the test and this pattern moves unknown
