Finding a definite integral
Show older comments
I want to find the definite integral
,where u and kare both a 1x100 vector and
.I want to use the Matlab command "integral" to do it. But to use it, I need the integrand to be a fucntion. The u and k I have are not functions. Is there any way to find this integral? Any help wil be appreciated.
2 Comments
u and k are both functions of x. But I only know the values of u and k at some points of x.
you can interpolate missing values for u and k by only limited values of x
u = randn(1, 100); % assuming all known values for x
K = randn(1, 100); % assuming all known values for x
X = linspace(0,1,101);
f = @(x) 1.5*exp(-2*(1-x));
for k = 1:length(X)-1
F(k) = integral(f,0,X(k+1));
end
S = (u+K)*F.' % integral sum
Star Strider
on 5 Dec 2023
Moved: Star Strider
on 6 Dec 2023
The vectors —
u = [0.1600 0.1600 0.1599 0.1599 0.1597 0.1596 0.1594 0.1592 ...
0.1590 0.1587 0.1584 0.1581 0.1577 0.1573 0.1569 0.1564 ...
0.1559 0.1554 0.1548 0.1542 0.1536 0.1529 0.1523 0.1515 ...
0.1508 0.1500 0.1492 0.1483 0.1475 0.1465 0.1456 0.1446 ...
0.1436 0.1426 0.1415 0.1404 0.1393 0.1381 0.1369 0.1357 ...
0.1344 0.1331 0.1318 0.1304 0.1290 0.1276 0.1261 0.1247 ...
0.1231 0.1216 0.1200 0.1184 0.1167 0.1151 0.1133 0.1116 ...
0.1098 0.1080 0.1062 0.1043 0.1024 0.1005 0.0985 0.0965 ...
0.0945 0.0924 0.0903 0.0882 0.0860 0.0838 0.0816 0.0793 ...
0.0771 0.0747 0.0724 0.0700 0.0676 0.0651 0.0627 0.0601 ...
0.0576 0.0550 0.0524 0.0498 0.0471 0.0444 0.0417 0.0389 ...
0.0361 0.0333 0.0304 0.0275 0.0246 0.0216 0.0186 0.0156 ...
0.0125 0.0095 0.0063 0.0032 0];
k = [0.7543 0.7543 0.7541 0.7537 0.7532 0.7525 0.7517 ...
0.7507 0.7496 0.7483 0.7469 0.7453 0.7436 0.7417 ...
0.7397 0.7375 0.7352 0.7328 0.7301 0.7274 0.7245 ...
0.7214 0.7182 0.7148 0.7113 0.7076 0.7038 0.6998 ...
0.6957 0.6914 0.6870 0.6824 0.6777 0.6728 0.6677 ...
0.6626 0.6572 0.6517 0.6461 0.6403 0.6343 0.6282 ...
0.6219 0.6155 0.6089 0.6022 0.5953 0.5883 0.5811 ...
0.5737 0.5662 0.5585 0.5507 0.5427 0.5346 0.5263 ...
0.5178 0.5092 0.5004 0.4915 0.4824 0.4731 0.4637 ...
0.4541 0.4444 0.4345 0.4244 0.4142 0.4038 0.3933 ...
0.3825 0.3717 0.3606 0.3494 0.3380 0.3265 0.3148 ...
0.3029 0.2909 0.2786 0.2663 0.2537 0.2410 0.2281 ...
0.2150 0.2018 0.1884 0.1748 0.1611 0.1472 0.1331 ...
0.1188 0.1044 0.0898 0.0750 0.0600 0.0449 0.0295 ...
0.0140 -0.0016 0];
.
Accepted Answer
More Answers (2)
Assuming that u and k are constant vectors:
u = randn(1, 100);
k = randn(1, 100);
syms x
f = (u+k)*int(1.5*exp(-2*(1-x)), [0 1])
double(f)
Hi Sharon,
It seems like we want to compute the following integral
syms x u(x) k(x) w(x)
I = int((u(x)+k(x))*w(x),x,0,1,'Hold',true)
w(x) has a known form
w(x) = 1.5*exp(-2*(1-x));
which can be substituded into the expression for I
I = subs(I)
Suppose for now we know the functional form of u(x) and k(x), for example
u(x) = x, k(x) = x^2
Sub those expressions into I and evaluate the integral
I = subs(I)
release(I)
Now, compute the integral numerically, assuming those same known expressions for u(x) and k(x)
clear
w = @(x) 1.5*exp(-2*(1-x));
u = @(x) x;
k = @(x) x.^2;
integral(@(x) (u(x)+k(x)).*w(x),0,1)
Same result.
But in this question we only have u and k evaluated at discrete set of values of x. For example
xval = linspace(0,1,100);
u = u(xval);
k = k(xval);
Now, to evaluate the integral we need to have some way to approximate u(x) and k(x) based on those vectors of points in order to evaluate the integrand. Here, I'm using interp1 with linear interplolation, but you may want to explore other options after plotting u and k and testing various options, which could be different for u(x) and k(x), to make sure the interpolated values are a a good approximation to the functions u(x) and k(x) (hopefully you have some idea what they should look like). The key is that the interpolation has to be performed in the evaluation of the integrand.
integral(@(x) (interp1(xval,u,x)+interp1(xval,k,x)).*w(x),0,1)
Categories
Find more on Numerical Integration and Differentiation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!