Numerican Integration in Matlab
Mostra commenti meno recenti
I need some help solving numerical integration.
The integral is:
fun = @(x) (x .* (exp(x) ./ (exp(x) - 1).^2) .* ((asind(0.0003 .* T .* x)).^2 ./ sqrt(1 - (0.0003 .* T .* x).^2))); Note: asind = sin^-1(....) --> (I am not sure if this is correct)
C = @(T) integral(fun, 0, 517.39 ./ T);
The limit of x is from: x = 0 to x = (500/T)
T ranges from (1 - 1000) (which is T = logspace(0, 3))
Can anyone help me solve this integral. I want to plot a loglog plot of (C as a function of T). I am getting some errors which I am not able to overcome.
Thanks in advance.
Raj.
Risposta accettata
Più risposte (1)
Francesco Tricarico
il 13 Ott 2020
Dear Raj,
To improve code readibility, i suggest to use the the code form when you post a message in MATLAB Central.
Here's is the working version of your commands:
fun = @(x,T) (x .* (exp(x) ./ (exp(x) - 1).^2) .* ((asind(0.0003 .* T .* x)).^2 ./ sqrt(1 - (0.0003 .* T .* x).^2)));
C = @(T) integral(@(x)fun(x,T),0,517.39./T);
You forgot to declare T as a variable in the fun definition and in the C the problem is direct consequence of that oversight.
Bye,
Francesco
2 Commenti
Francesco Tricarico
il 13 Ott 2020
Ah,
to evaluating C for an array of values, i recommand to use arrayfun in that case, instead of redefine fun this aim.
For example, use that lines after the commands in my previous message:
X = logspace(0,3);
Y = arrayfun(C,X);
plot(X,Y)
Hope it works!
Raj Patel
il 13 Ott 2020
Categorie
Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!