MATLAB Approximating Integral of exp(-x) for N=10, 100, 1000

  • Thread starter Thread starter NINHARDCOREFAN
  • Start date Start date
  • Tags Tags
    Integral
AI Thread Summary
The discussion focuses on approximating the integral of the function f(x) = exp(-x) over the interval [1, 5] using numerical integration techniques with varying values of N (10, 100, 1000). The initial code attempts to implement this using MATLAB, but the user encounters an issue where multiple results are produced instead of a single integral value. The problem is identified as a result of incorrectly multiplying a scalar (exp(-n)) by a vector (x), leading to a row matrix output. The suggested solution is to modify the code to access individual elements of the x vector, specifically by changing the line to f = exp(-n) * x(n). This adjustment aims to ensure that the calculation yields a single integral approximation rather than a matrix of values.
NINHARDCOREFAN
Messages
118
Reaction score
0
Approximate the integral on f(x)=exp(-x) on the interval x=[1,5]. Choose N=10, 100, 1000.

Okay here is what I did:
% a,b limits of integration

% x variable of integration

% f integrand

% N is the number of sub-intervals

% h width of each sub-interval

% TL, TR contribution from left and right endpoints

%TI contribution from the intermediate points

a= 1;

b= 5;

N = 10;

h=(b-a)/N;

x=[a:h:b];

TL=exp(-a);

TR=exp(-b);

TI=0;

for n=2:N

f = exp(-n) * x;

TI=TI+f;

end
I=(TL+2*TI+TR)*h*.5

I =

Columns 1 through 5

0.1606 0.1948 0.2291 0.2633 0.2976

Columns 6 through 10

0.3318 0.3661 0.4003 0.4346 0.4688

Column 11

0.5031

Aren't I suppose to get only one answer? Why am I getting all this?
 
Physics news on Phys.org
My experience with MATLAB is very limited but by the looks of it you have defined x as a row matrix, meaning that f will also be a row matrix and so will TI since your answer is a function of TI yo uare bound to end up with a row matrix. I haven't really looked at the maths involved, what method for integrating did you use ?
 
NINHARDCOREFAN said:
Aren't I suppose to get only one answer? Why am I getting all this?

Code:
a= 1;
b= 5;
N = 10;
h=(b-a)/N;
x=[a:h:b];
TL=exp(-a);
TR=exp(-b);
TI=0;
for n=2:N
f = exp(-n) * x;
TI=TI+f;
end
I=(TL+2*TI+TR)*h*.5
I = {row vector}

The problem arises here:
f = exp(-n) * x;

You're multiplying exp(-n) which is a scalar times x which is a vector.

To fix this you want to access the individual cell of the x vector.

Try replacing f = exp(-n) * x; with f = exp(-n) * x(n);
 
Back
Top