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

9 views (last 30 days)
hixoran falona
hixoran falona on 28 Oct 2022
Answered: vubaen on 28 Oct 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.
错误与问题较多,请教高手前辈,十分感谢!

Accepted Answer

vubaen
vubaen on 28 Oct 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)

More Answers (0)

Categories

Find more on 编程 in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!