How to integrate functions inside a loop
1 次查看(过去 30 天)
显示 更早的评论
Hello, I am a beginner in matlab and I am trying to integrate a function where the independent variable is x, from 0 to infinity, for a range of values of en1. Here is my attempt:
a = dlmread('density.txt');// this is a two column matrix with 40 points
en1 = a(:,1);
int1 = a(:,2);
El = 0;
Tl = 0.41;
Em = -918.85;
Tm = 0.17;
Ea = -13.95;
Q = zeros(size(en1));
for k = 1:length(en1)
f = @(x,k) (int1(k))/(((en1(k)-x-El).^2+((Tl)^2)./4)*((en1(k)-x-Ea-Em)^2+((Tm)^2)/4));;
Q = quadgk(f,0,Inf);
end
I am quite lost here and would greatly appreciate it if someone can help.
0 个评论
采纳的回答
Andrei Bobrov
2016-10-19
编辑:Andrei Bobrov
2016-10-19
a = dlmread('density.txt');
en1 = a(:,1);
int1 = a(:,2);
El = 0;
Tl = 0.41;
Em = -918.85;
Tm = 0.17;
Ea = -13.95;
f = @(x) int1./(((en1-x-El).^2+Tl^2./4).*((en1-x-Ea-Em).^2+Tm^2/4));
Q = integral(f,0,inf,'ArrayValued',true);
or
en1 = a(:,1);
int1 = a(:,2);
El = 0;
Tl = 0.41;
Em = -918.85;
Tm = 0.17;
Ea = -13.95;
f = @(x,k) int1(k)./(((en1(k)-x-El).^2+Tl^2./4).*((en1(k)-x-Ea-Em).^2+Tm^2/4));
Q = zeros(numel(int1),1);
for k = 1:length(en1)
Q(k) = quadgk(@(x)f(x,k),0,Inf);
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!