在解决流体力学中的一个问题时,我遇到了一种情况,那就是我必须解4个非线性方程才能得到4个未知的变量值。因此,我在scilab中使用了fsolve函数来求解方程。我的代码如下:
clc
clear
function f=F(x)
f(1)=x(1)-(0.4458*x(2)^(-2))
f(2)=x(3)-(0.26936*x(2)*(-1))
f(3)=(2.616*x(2))-(x(4)*x(1)^2)
f(4)=(0.316/(x(3)^(1/4)))
endfunction
function j=jacob(x)
j(1,1)=1;j(1,2)=0.8916*x(2)^(-3);j(1,3)=0;j(1,4)=0
j(2,1)=0;j(2,2)=0.26936*x(2)^(-2);j(2,3)=1;j(2,4)=0;
j(3,1)=-2*x(1)*x(4);j(3,2)=2.616;j(3,3)=0;j(3,4)=-1*x(1)^2;
j(4,1)=0;j(4,2)=0;j(4,3)=-2/x(3)/log(10);j(4,4)=(-0.5*x(4)^(-1.5))-(1/x(4)/log(10));
endfunction
x0=[1 1 2000 1];
[x,v,info]=fsolve(x0,F,jacob);
disp(x);错误:
x,v,info=fsolve(x0,F,jacob);--由scilab参数函数返回的错误98变量是不正确的。在由以下调用的exec文件的第17行:
exec(‘D:\桌面文件\Ajith\TBC\SCILAB代码\第08章\fsolve.sce’,-1)
问题的详细信息:-
实际问题:1 atm和35℃的受热空气将以0.35m3/s的速度在150米长的圆形塑料管道中输送。如果管道中的水头损失不超过20m,则确定管道的最小直径?
书名:流体力学: Y.A.Cengel和J.M.Cimbala的基础和应用。
页码和问题号:第345页,示例8-4
书名: 0-07-247236-7
教科书链接:edition.PDF
在我的程序中: x(1)是速度,x(2)是直径,x(3)是雷诺数,x(4)是摩擦系数。
预期答案: x(1)=6.24,x(2)=0.267,x(3)=100800,x(4)=0.0180。
我对错误的思考:
发布于 2019-06-14 09:16:40
在阅读了书中对这个问题的描述之后,只有一个非平凡方程(第三个),所有其他的方程都直接给出了D函数的其他未知数。下面是确定直径的代码:
function out=F(D)
V = 0.35/%pi/D^2*4;
Re = V*D/1.655e-5;
f = 20/(150/D*V^2/2/9.81);
out = 1/sqrt(f) + 2*log10(2.51/Re/sqrt(f));
endfunction
D0 = 1;
[D,v,info]=fsolve(D0,F);
disp(D)https://stackoverflow.com/questions/56591609
复制相似问题