CAD教程 行业资讯 3D模型下载 Pro/E教程 CAD书店 软件下载 联系我们
技术资料 CAD招聘 发布招聘 CAD问答 设计竞赛 CAD认证 北京CAD培训
视频教程 PS教程 CAD图纸 图书推荐 Solidworks教程 CAD培训 CAD软件商

 最新视频教程Pro/ENGINEER Wildfire2.0 工业设计实例视频教程 (全套免费在线学习)   AutoCAD视频教程每日更新
 
首页 > CAD在线问答 > matlab

matlab if语句

2014-10-06 51自学网



问题描述:由于数值求解微分方程的过程中出现不符合客观事实的解,故尝试用if语句剔除不合常理的情况,具体情况为求解一个容器内液面高度的变化问题(有降雨,有排水,动态变化)
因为用数值求解微分方程,先编辑函数文件如下
function dh=jiangyu (t,h)
%降雨量的表达式
if t<=400
a=6*12*(0.122*10^(-3)-abs(0.00061*t*10^(-3)-0.122*10^(-3)))*cos(pi/9)
else
a=0
end
%液面高度微分方程中的其他部分:
b=0.7*pi*(0.05)^2*sqrt(2*9.81*h)
c=2*12*sqrt(0.15*h-h^2)
%使结果符合客观事实,增加下面的判定
z=isreal((a-b)/c)
%如果液面高度正常为大于零的数,便按所设微分方程求解
if z=1
dh=(a-b)/c
%如果液面高度小于零,且此时不再下雨,则液面不再变化
elseif z=0 and a=0
dh=0
%如果液面高度小于零,但仍然下雨,则液面将会上升,速度为下式
else
h=0.0001 and dh=(a-b)/c
end
end
再编辑脚本文件如下:
t0=0;tf=200
h0=0.001
[t,h]=ode45(@jiangyu,[t0,tf],h0);
plot(t,h,'b')
grid on
但是if语句一直报错,不知该如何修改,可能不应该用if,但是小弟初学,不太会用,还请各位多多指教

回答:function dh=jiangyu (t,h)
%降雨量的表达式
if t<=400
a=6*12*(0.122*10^(-3)-abs(0.00061*t*10^(-3)-0.122*10^(-3)))*cos(pi/9);
else
a=0;
end
%液面高度微分方程中的其他部分:
b=0.7*pi*(0.05)^2*sqrt(2*9.81*h);
c=2*12*sqrt(0.15*h-h^2);
%使结果符合客观事实,增加下面的判定
z=isreal((a-b)/c);
%如果液面高度正常为大于零的数,便按所设微分方程求解
if z==1
dh=(a-b)/c;
%如果液面高度小于零,且此时不再下雨,则液面不再变化
elseif (z==0 & a==0)
dh=0;
%如果液面高度小于零,但仍然下雨,则液面将会上升,速度为下式
else
h=0.0001;
dh=(a-b)/c;
end
end

你的判断等于要改成 ==
没有and这个用法的,用&
表并列直接回车就行了
你的c可能是虚数,注意~



 

 

matlab 多目标规划
eps在MATLAB中是什么意思
我来回答 共有条 回答
用户名: 密码:
验证码: 匿名发表
| AutoCAD | Pro/E | UG | 3Dmax | catia | solidworks | maya | photoshop | 模具设计 | 有限元 | matlab | 计算机图形学 | 室内设计 |