Area under gaussian curve
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
masoud avaznejad
am 13 Dez. 2020
Kommentiert: Star Strider
am 14 Dez. 2020
Hi guys
I want the value of area_under_curve to be exactly 30000 from 8.5 to 17
Is this way true to use integral?
Using matlab R2019b
clc;
clear;
close all;
gauss = @(x,mu,sig,amp,vo)amp*exp(-(((x-mu).^2)/(2*sig.^2)))+vo;
x = linspace(8.5,17,1000000);
mu = 12;
sig = 1.19895;
amp = 10000;
vo = 0;
gauss = gauss(x,mu,sig,amp,vo);
plot(x, gauss/1000, 'g-', 'LineWidth',.1)
gauss = @(x)amp*exp(-(((x-mu).^2)/(2*sig.^2)))+vo;
arear_under_crve = integral(gauss,8.5,17);
0 Kommentare
Akzeptierte Antwort
Star Strider
am 13 Dez. 2020
Define ‘gauss’ as:
gauss = @(x,amp) amp*exp(-(((x-mu).^2)/(2*sig.^2)))+vo;
and:
arear_under_crve = @(amp) integral(@(x)gauss(x,amp),8.5,17);
then:
amp = fsolve(@(amp) arear_under_crve(amp) - 30000, 1)
produces:
amp =
9999.98895298012
.
2 Kommentare
Star Strider
am 14 Dez. 2020
Depending on what you have set for your format, it could round up to 10000. (I used format long g to display it.) It might also give slilghtly different results with different MATLAB versions. I am using R2020b, Update 3.
I would trust the integral and fsolve result. The trapz function is useful if you have vectors you want to integrate, however integral is more accurate considering that you have defined your code in terms of functions (specifically, anonymous functions).
The trapz result would also depend on the resolution of the vectors you created from your function. The argument and function results would have to have very fine resolution (very long vectors with small increments) to equal the integral and fsolve result.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Numerical Integration and Differentiation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!