for循环或while循环?

1视图(30天)
玛丽亚楚
玛丽亚楚 2015年6月9日
评论道: dpb 2015年6月10日
嗨我需要编写一个程序,但我不知道如何编程。我需要找到一个长度(l > 0)这样b1和b2是相等的。b1和b2是函数依赖的l p(变量),w e t值,我已经有了。我需要使用增量迭代和显示l和0.001 b1。请帮助我!:(
e = 1800 t = 120
第一个例:p = 1000w = 0
第二个例:p = 0w = 12.5
第三例:p = 500w = 12.5
p =输入(的点荷载:);
w =输入(的分布式负载:);
e =输入(的法向应力:);
t =输入(的剪切应力:);
信谊l b1 b2
l = 0:100000
l = l + 0.001
b1 = ((3 * (p * l + 0.5 * w * l * l)) / (32 * e)) ^ (1/3);
b2 = ((3 * (p + w * l)) / (16 * t)) ^ (1/2);
如果b1 = = b2
显示l
显示b1
显示b2
结束
结束

接受的答案

dpb
dpb 2015年6月9日
  1. 不需要信谊除非你试图解决一个象征性的解决方案;找到一个数值解它不是任何使用
  2. 在Matlab将循环构造l = 0: deltaL: l
其中deltaL是增量和L的上限。但是要注意,不能保证在该决议会有一个确切的解决方案,你想写的 如果 作为
如果abs (b1 b2) < e
在哪里 e 收敛是一个错误。即使在这里,你真的不知道你要接近任意方案所以健壮性测试差异的变化迹象,然后给你一个边界的位置。
但是,在Matlab中,做这样的事情的方法是使用 fzero
> > e = 1800;t = 120;
> > p = 1000;w = 0;
> > f = @ (l) ((3 * (p * l + 0.5 * w * l * l)) / (32 * e)) ^ (1/3) - ((3 * (p + w * l)) / (16 * t)) ^ (1/2);
> > L1 = fzero (f, 50)
L1 =
37.5000
> >
一般来说,写程序
  1. 读取输入的值不是常数
  2. 设置这些值的匿名函数
  3. 调用fzero()函数的定义
  4. 根据需要重复的情况下。
2的评论
dpb
dpb 2015年6月10日
虽然你可能更大的/更重要的事情,:)我要注意,在上面的序列替代更多的编码函数,而是使它一般是包括匿名函数的系数作为额外参数;然后在玩得到的值传递到上面的评价而不是硬编码的值时存在的函数定义。

登录置评。

更多的答案(0)

类别

找到更多的在循环和条件语句帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!