24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1937  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

洛羽

木虫 (小有名气)

[求助] 如何用求解一元二次加对数函数的方程 已有1人参与

如何求解一元二次加对数函数的方程,方程如下:
Dmix0^2+Pmix+Tmix*(log(1-Dmix0)+(1-1/rmix)*Dmix0)=0
其中Dmix0为所求,Pmix、Tmix、rmix为常数,log即为ln函数。
最好是matlab求解,不是说下思路也好的。
Pmix=0.0036;Tmix=0.4881;rmix=17845是常数的一组取值。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

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

洛羽

木虫 (小有名气)

引用回帖:
2楼: Originally posted by 月只蓝 at 2015-04-02 19:07:55
function solve_eq
clear all;clc
format long
x0=0.9;
option=optimset('TolFun',1e-12);
=fsolve(@obj,x0,option)


function f= obj(x)
Pmix=0.0036;Tmix=0.4881;rmix=17845;
Dmix0=x;
f=Dmix0^2+Pmi ...

不知是否可以帮忙解释下4楼的疑问
笑笑而已
5楼2015-04-03 10:57:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
洛羽: 金币+30, ★★★★★最佳答案, thx 2015-04-03 09:55:42
CODE:
function solve_eq
clear all;clc
format long
x0=0.9;
option=optimset('TolFun',1e-12);
[x fval]=fsolve(@obj,x0,option)


function f= obj(x)
Pmix=0.0036;Tmix=0.4881;rmix=17845;
Dmix0=x;
f=Dmix0^2+Pmix+Tmix*(log(1-Dmix0)+(1-1/rmix)*Dmix0);

计算结果:
x =

   0.935003106080314


fval =

   -1.377786773559819e-013
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2015-04-02 19:07:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

洛羽

木虫 (小有名气)

引用回帖:
2楼: Originally posted by 月只蓝 at 2015-04-02 19:07:55
function solve_eq
clear all;clc
format long
x0=0.9;
option=optimset('TolFun',1e-12);
=fsolve(@obj,x0,option)


function f= obj(x)
Pmix=0.0036;Tmix=0.4881;rmix=17845;
Dmix0=x;
f=Dmix0^2+Pmi ...

[code]
function test
Pmix=0.0036;Tmix=0.4881;rmix=17845;
tic;
        Dmix0=0.9999;
        ss=1;
        while ss==1
            Dmix=Dmix0-(Dmix0^2+Pmix+Tmix*(log(1-Dmix0)+(1-1/rmix)*Dmix0))/(2*Dmix0+Tmix*(-1/(1-Dmix0)+1-1/rmix));
            if abs(Dmix-Dmix0)>=0.0001
                Dmix0=Dmix;
            else
                PRD=Dmix;
                ss=2;
            end
        end
toc;
disp(PRD);
disp(Dmix-Dmix0);
[code]
笑笑而已
3楼2015-04-03 10:45:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

洛羽

木虫 (小有名气)

CODE:
function test
Pmix=0.0036;Tmix=0.4881;rmix=17845;
tic;
        Dmix0=0.9999;
        ss=1;
        while ss==1
            Dmix=Dmix0-(Dmix0^2+Pmix+Tmix*(log(1-Dmix0)+(1-1/rmix)*Dmix0))/(2*Dmix0+Tmix*(-1/(1-Dmix0)+1-1/rmix));
            if abs(Dmix-Dmix0)>=0.0001
                Dmix0=Dmix;
            else
                PRD=Dmix;
                ss=2;
            end
        end
toc;
disp(PRD);
disp(Dmix-Dmix0);

运行上述代码时间在 0.000002~ 0.000005 seconds之间;

而用
CODE:
function solve_eq
x0=0.9999;
option=optimset('TolFun',1e-4);
tic;
[x fval]=fsolve(@SLEquation,x0,option);
toc;
disp(x);
disp(fval);

CODE:
function f=SLEquation(x)
Pmix=0.0036;Tmix=0.4881;rmix=17845;
Dmix0=x;
f=Dmix0^2+Pmix+Tmix*(log(1-Dmix0)+(1-1/rmix)*Dmix0);

代码运行时间为 0.011605 seconds.
所以用fsolve()来解反而运算时间更长?
笑笑而已
4楼2015-04-03 10:54:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见