Array of integrals within loop
显示 更早的评论
Hello everyone!
For the last few days, I am stuck with a problem with parametrized integration in GNU Octave. I would like to to evaluate an integral of some f(x) function that contains an exponential constant parameter alpha:
eq1 = @(x) 1 ./ (x.^ 2 + 2 .* x * exp(alpha) .+ 1);
eq2 = integral(f,0,inf)
The problem comes when I want to check and plot how the result will look over the defined range of the parameter alpha, so, I would like to get an array of eq2(alpha).
I have defined the range, k. Let's assume alpha will change from -1.0 to 1.0 by 0.1:
k = -1.0:0.1:1.0;
and then alpha will be a matrix with k-values:
for n = length(k)
alpha(k) = n;
end
I would expect the outcome in form of matrix containing calculated integrals with diffrent value of alpha(k). Unfortunately, I am not able to put function
eq1(alpha(k)) = @(x) 1 ./ (x.^ 2 .+ x .* exp(alpha(n)) .+ 1)
within the for loop and integrate it as
eq2(k) = int(eq1(k))
I tried to get a symbolical equation and it works, but this form is not satisfying me enough. I also tried to create a function with loop, but also without success. Do you have in mind the solution that could help me construct and evaluate such an array of integrals? Thank you in advance.
2 个评论
Is this a typo?
for n = length(k)
% 1:length(k) is required
alpha(k) = n;
end
But you cannot use the floating point values of the vector k as an index.
There is no .+ operator.
You did not define f in eq2 = integral(f,0,inf) .
Please post some running code. "Does not satisfy me enough" and "but also without success" are not clear enough. We cannot guess, what the problem is.
Kamil Mickiewicz
2022-4-11
回答(1 个)
Jan
2022-4-8
alpha = -1.0:0.1:1.0;
for k = 1:numel(alpha)
f = @(x) 1 ./ (x.^ 2 + 2 .* x * exp(alpha(k)) + 1);
eq2(k) = integral(f, 0, inf);
end
类别
在 帮助中心 和 File Exchange 中查找有关 Octave 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!