24小时热门版块排行榜    

查看: 610  |  回复: 6
当前主题已经存档。

zsh8887985

[交流] 【求助】请教以下为啥出错?

新手,正在学习使用matlib,输入以下代码
>> syms d;
>> light2=@(x,y,d) 75./(4*pi*((x-d).^2+(y-2).^2+9));
>> eqn=@(d) light2(0,0,d)+light2(0,0,10-d)-light2(5,0,d)-light2(5,0,10-d);
>> light2y=@(x,y,d) 75./(4*pi*((x-5).^2+(y-d).^2+9));
>> eqny=@(d) light2y(0,0,d)+light2y(0,0,4-d)-light2y(0,2,d)-light2y(0,2,4-d);
>> dint=fzero(eqny,[0 2])
??? Error using ==> fzero
The function values at the interval endpoints must differ in sign.

但是:
>> dint=fzero(eqn,[0 2])

dint =

    1.4410
我实在搞不懂为什么,请帮忙解答,谢谢谢谢!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hyk2006

木虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
sunxiao(金币+2,VIP+0):谢谢参与,欢迎常来仿真模拟版 6-2 02:16
可能是eqny的问题,好好检查看看
2楼2009-06-01 22:33:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sitonyl

铁杆木虫 (文坛精英)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
kuhailangyu(金币+1,VIP+0):感谢参与 6-2 16:51
应该是eqny的问题,这个函数在你给的区间上并没有零点。
zz
3楼2009-06-02 08:12:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zsh8887985


sunxiao(金币+1,VIP+0):鼓励一下 6-4 02:52
谢谢楼上指教。继续请教:

这个问题的来源是解答在10*4*3的房间内确定4个100w灯泡在天花板上的安装位置使得亮度最佳。

我的想法是假设4个灯泡安装位置对称,所以可以先确认在x方向的最佳位置,然后再确认y轴方向的最佳位置,这样得到的(x,y,0)就是灯泡的安装位置。

对亮度最佳的理解是所有选择中最暗的点亮度最大。在x轴方向随着灯泡位置的不同会出现两个暗点,即(0,0)和(5,0),这样可以找到一个零解,x=1.4410.

但y轴方向没有零解,就有问题了!

是不是我的解题思路就是错的?当然,对matlib不熟也是一个原因,不知道如果把x和y同时考虑的方程怎么写。请各位大侠指教。
4楼2009-06-02 16:26:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

levone

木虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
kuhailangyu(金币+2,VIP+0):谢谢回帖交流 6-5 10:35
X = FZERO(FUN,X0), where X0 is a vector of length 2, assumes X0 is an
    interval where the sign of FUN(X0(1)) differs from the sign of FUN(X0(2)).
    An error occurs if this is not true.  Calling FZERO with an interval  
    guarantees FZERO will return a value near a point where FUN changes
    sign.
你给的fzero(eqny,[0 2])中,eqny(0)和eqny(2)结果的符号相同。
应该不同才可以。
莫愁前途无知己!
5楼2009-06-05 09:02:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

levone

木虫 (正式写手)

是不是按照距离来计算的?
莫愁前途无知己!
6楼2009-06-05 09:07:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zsh8887985

★ ★
sunxiao(金币+2,VIP+0):谢谢分享,欢迎常来 6-6 01:16
我放弃了先前的先求x,再求y的想法。但前提“四个灯泡位置对称安放”不变。

以下是新写的程序:
% define (d,t) as the position of the bulb
syms d; syms t;
illm=0;tillm=0;pd=0;pt=0;
light4=@(x,y,d,t) 100./(4*pi*((x-d).^2+(y-t).^2+9));
[x,y]=meshgrid(0:0.1:10,0:0.1:4);
for d=0:0.1:5
    for t=0:0.1:2
        tillm=min(light4(x,y,d,t)+light4(x,y,10-d,t)+light4(x,y,d,4-t)+light4(x,y,10-d,4-t));
        if illm             illm=tillm;
            pd=d;pt=t;
        end
    end
end

这个是个比较笨的办法,基本就是用了穷举的方法算出来的。有没有更好的办法来解决这个问题,请大家指教。
7楼2009-06-05 09:53:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zsh8887985 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见