如何使用循环语句求积分上限未知数。

9 Ansichten (letzte 30 Tage)
hixoran falona
hixoran falona am 28 Okt. 2022
Beantwortet: vubaen am 28 Okt. 2022
目的:通过以上画圈方程,求 I*与b的关系。
f(x)与g(x),分别服从N~(5,0.25),N~(4,0.16)的正态分布。
已将其余的参数赋值,因此自己编写的代码为(代码中I*由t代表):
syms b double
r=1:1:6;
result=zeros(size(r));
for i=1:length(r)
t=r(i);
fun_1= @(x) 0.5.*(x-b).*normpdf(x,5,0.5);
fun_2= @(x) x.*normpdf(x,5,0.5);
fun_3= @(y) y.*normpdf(y,4,0.4);
fun_4= @(x) (b+0.5.*(x-b)).*normpdf(x,5,0.5);
fun_5= @(y) (b+0.4.*(y-b)).*normpdf(y,4,0.4);
fun_6= @(y) 0.6.*(y-b).*normpdf(y,4,0.4);
fun_7=integral(fun_1,b,6.5).*100.*(8-t)./8.*(1-(integral(fun_2,0,b)-integral(fun_3,0,b)+integral(fun_4,b,6.5)-integral(fun_5,b,5.2))./0.5)...
+integral(fun_6,b,5.2).*(100.*(4.5.*(integral(fun_2,0,b)+integral(fun_4,b,6.5))-5.*(integral(fun_3,0,b)+integral(fun_5,b,5.2)))./2.25)...
+12.5.*t.*(1-(integral(fun_2,0,b)-integral(fun_3,0,b)+integral(fun_4,b,6.5)-integral(fun_5,b,5.2))./0.5)-400;
[b,fval] = fzero(fun_7,0.1);
double(b)
end
运行结果:Error using integral (line 85)
A and B must be floating-point scalars.
错误与问题较多,请教高手前辈,十分感谢!

Akzeptierte Antwort

vubaen
vubaen am 28 Okt. 2022
syms r0 double
r=1:1:6;
result=zeros(size(r));
for i=1:length(r)
t=r(i);
fun_1= @(x) x.*normpdf(x,5,0.5);
fun_2= @(x) normpdf(x,5,0.5);
fun_3= @(y) y.*normpdf(y,4,0.4);
fun_4= @(y) normpdf(y,4,0.4);
pfa = @(r0) arrayfun(@(r0) 0.5.*(integral(fun_1,r0,6.5)-r0.*integral(fun_2,r0,6.5)).*100.*(8-t)./8.*(1-(integral(fun_1,0,r0)-integral(fun_3,0,r0)+0.5.*(integral(fun_1,r0,6.5)-r0.*integral(fun_2,r0,6.5))-(0.4.*integral(fun_3,r0,5.2)+0.6.*r0.*integral(fun_4,r0,5.2)))./0.5)...
+(0.6.*integral(fun_3,r0,5.2)-0.6.*r0.*integral(fun_4,r0,5.2)).*(100.*(4.5.*(integral(fun_1,0,r0)+0.5.*integral(fun_1,r0,6.5)+r0.*0.5.*integral(fun_2,r0,6.5))-5.*(integral(fun_3,0,r0)+0.4.*integral(fun_3,r0,5.2)+r0.*0.6.*integral(fun_4,r0,5.2)))./2.25)...
+12.5.*t.*(1-(integral(fun_1,0,r0)-integral(fun_3,0,r0)+0.5.*(integral(fun_1,r0,6.5)-r0.*integral(fun_2,r0,6.5))-(0.4.*integral(fun_3,r0,5.2)+0.6.*r0.*integral(fun_4,r0,5.2)))./0.5)-400, r0);
r0 = fzero(pfa,0);
result(i)=vpa(r0);
end
result(i)

Weitere Antworten (0)

Kategorien

Mehr zu 编程 finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!