大家好,我一直在尝试使用MATLAB的FSOLVE功能来解决流体管道问题,其中我已经将未知变量缩小为5.我已经遇到了“FSOLVE停止的错误,因为它超出了函数评估限制”并提供我复杂的答案。任何人都可以看到代码本身的问题吗?假设方程是对的吗?
我使用了函数句柄,并在另一个脚本中调用它。(我预先没有多少编程背景)
功能f = FluidSsolver(x)
dv = x(1);
v1 = x(2);
f1 = x(3);
f2 = x(4);
f3 = x(5);
rho = 999.1;
mu = 1.138 * 10 ^ -3;
g = 9.81;
za = 2.1;
zb = 9.1;
l1 = 25.1;
l2 = 25.1;
l3 = 25.1;
d1 = 3/100;
D2 = 4/100;
D3 = 5/100;
n = 0.68;
dw = 8000;
epsilon = 0;
A1 = PI * D1 ^ 2 * 0.25;
A2 = PI * D2 ^ 2 * 0.25;
A3 = PI * D3 ^ 2 * 0.25;
re1 =(rho * v1 * d1)/ mu;
V2 = SQRT((F1 * L1 * D2)/(F2 * L2 * D1))* V1;
V3 = SQRT((F1 * L1 * D3)/(F3 * L3 * D1))* V1;
Re2 =(rho * v2 * d2)/ mu;
Re3 =(rho * v3 * d3)/ mu;
F(1)= DW * n - rho * g * dv *((zb-za)+ f1 *(l1 / d1)*(v1 ^ 2 /(2 * g)));
F(2)= 1 /(SQRT(F1))+ 2 * log10(((epsilon / d1)/3.7)+(2.51 /(re1 * sqrt(f1)))))))));
F(3)= 1 /(SQRT(F2))+ 2 * log10(((epsilon / d2)/3.7)+(2.51 /(re2 * sqrt(f2)))))))));
F(4)= 1 /(SQRT(F2))+ 2 * log10(((epsilon / d3)/3.7)+(2.51 /((re3 * sqrt(f3)))))))))));
F(5)= DV - V1 * A1 - V2 * A2 - V3 * A3;
结尾
至于函数,我在以下不同脚本中有初始猜测:
Fun = @fluidssolver.
FSOLVE(乐趣,[0.5,5,0.12,0.12,0.12])