MATLAB程序小问题

有方程1/f^0.5=4log10(re*f^0.5)-0.4在re从2500到12500的取值范围内,可以分别计算出f的值定义方程,用fzero,for,及flot画出... 有方程1/f^0.5=4log10(re*f^0.5)-0.4
在re从2500到12500的取值范围内,可以分别计算出f的值
定义方程,用fzero,for,及flot画出re与f的图像

我的程序如下
定义方程:
function y=vonkarman(f)
global re
y=4*log10(re*f^0.5)-0.4-1/(f^0.5);
end

画图:
for i=2500:12500
re(i)=i;
re=i;
f(i)=fzero(@vonkarman,0.01);
end
plot(re,f)

为什么总是出错呢?
??? Operands to the || and && operators must be convertible to logical scalar values.

Error in ==> fzero at 309
elseif ~isfinite(fx) || ~isreal(fx)

谢谢各位大侠了~
展开
 我来答
dukinkin
推荐于2016-01-29 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:924万
展开全部

vonkarman=@(re,f) 4*log10(re*f^0.5)-0.4-1/(f^0.5);

%可以用匿名函数定义

%也可以将函数写成m文件

%但是要有(re,f)两个输入参数,不要用global re

re=2500:12500;

f=zeros(size(re));

for i=1:length(re)

    f(i)=fzero(@(f) vonkarman(re(i),f),0.01);

end

plot(re,f);


追问
作业要求函数必须写成M文件==
不过我定义function y=fun(re,f)时
会显示f没有定义,如果re在后面则re没有定义
追答
function y=vonkarman(re,f)
y=4*log10(re*f^0.5)-0.4-1/(f^0.5);
end

%以上内容写到函数文件vonkarman.m里面保存

%以下在命令行运行,或者在另外一个脚本m文件里保存运行
re=2500:12500;
f=zeros(size(re));
for i=1:length(re)
f(i)=fzero(@(f) vonkarman(re(i),f),0.01);
end
plot(re,f);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式