24小时热门版块排行榜    

CyRhmU.jpeg
查看: 616  |  回复: 6

8Bit黑白漫

新虫 (初入文坛)

[求助] 求助,matlab定义的循环函数错在哪里已有1人参与

大神帮我看看,这个函数的定义错在哪里了。

function concen= LibrConcen(P,T )

    x1=40;
    x2=70;
    A0=-2.00755;
    B0=124.937;
    A1=0.16976;
    B1=-7.7165;
    A2=-0.003133362;
    B2=0.152286;
    A3=0.0000197668;
    B3=-0.0079509;
    C=7.05;
    D=-1603.54;
    E=-104095.5;
    delta=D^2-4*E*(C-log10(P));   
    delta=sqrt(delta);
    temref=-2*E/(D+delta)-273.15;
            
        while (1)
            x3=0.5*(x1+x2);
            f1=B0+temref*A0-T+(B1+temref*A1)*x1+(B2+temref*A2)*x1^2+(B3+temref*A3)*x1^3;
            f2=B0+temref*A0-T+(B1+temref*A1)*x2+(B2+temref*A2)*x2^2+(B3+temref*A3)*x2^3;
            f3=B0+temref*A0-T+(B1+temref*A1)*x3+(B2+temref*A2)*x3^2+(B3+temref*A3)*x3^3;
            if (f1*f3>0)
                x1=x3;
            else
                x2=x3;
            end
            if(abs(f3)<=10^(-6))
                break
            else
                continue
            end
        end
     concen=x3/100;

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

8Bit黑白漫

新虫 (初入文坛)

2楼2016-10-18 16:55:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
条件 不需要括起来

发自小木虫Android客户端
3楼2016-10-18 18:44:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

8Bit黑白漫

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by yz457694 at 2016-10-18 18:44:51
条件 不需要括起来

去掉的话,也还是不行...运行不显示结果
求助,matlab定义的循环函数错在哪里



发自小木虫IOS客户端
4楼2016-10-18 19:24:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

没有报错,左下角有个busy对吧,说明程序还在运行,可能死循环了,ctrl+c强制结束,然后可以逐句执行调试一下,看看哪里判断出了问题

发自小木虫Android客户端
5楼2016-10-18 19:46:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

引用回帖:
4楼: Originally posted by 8Bit黑白漫 at 2016-10-18 19:24:11
去掉的话,也还是不行...运行不显示结果

...

二分法求多项式的零点?这方法不太好吧,我看了看,你赋的初值 第一次运算就做不下去了,f1,f2,f3一直小于零,你把这个区间的图像做出来就发现这个区间根本就没有零点,所以会无限循环下去。
CODE:
%作图
clear,clc
x=40:70;
P=0.84;
T=0.9;
A0=-2.00755;
B0=124.937;
A1=0.16976;
B1=-7.7165;
A2=-0.003133362;
B2=0.152286;
A3=0.0000197668;
B3=-0.0079509;
C=7.05;
D=-1603.54;
E=-104095.5;
delta=D^2-4*E*(C-log10(P));   
delta=sqrt(delta);
temref=-2*E/(D+delta)-273.15;
y=B0+temref*A0-T+(B1+temref*A1).*x+(B2+temref*A2)*x.^2+(B3+temref*A3)*x.^3;
plot(x,y)

建议:matlab有求零点的函数,fzero和fsolve,可以试试,方便的话结合图像来看
求助,matlab定义的循环函数错在哪里-1
1.jpg

6楼2016-10-18 23:34:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

8Bit黑白漫

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by yz457694 at 2016-10-18 23:34:38
二分法求多项式的零点?这方法不太好吧,我看了看,你赋的初值 第一次运算就做不下去了,f1,f2,f3一直小于零,你把这个区间的图像做出来就发现这个区间根本就没有零点,所以会无限循环下去。

%作图
clear,clc
...

谢谢,我再试试看

发自小木虫IOS客户端
7楼2016-10-19 08:55:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 8Bit黑白漫 的主题更新
信息提示
请填处理意见