24小时热门版块排行榜    

查看: 1876  |  回复: 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的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +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的回帖

洛羽

木虫 (小有名气)

引用回帖:
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的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
5楼: Originally posted by 洛羽 at 2015-04-03 10:57:31
不知是否可以帮忙解释下4楼的疑问...

您好!我没有研究过算法的效率问题,所以无法回答您。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
6楼2015-04-03 11:20:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
4楼: Originally posted by 洛羽 at 2015-04-03 10:54:50
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*Dmix ...

而且个人觉得,您设计的算法属于直接迭代法,该算法对于较为简单的方程能迅速得到结果,但因为该方法属于比较初级的方法,其也有不少劣势:1.需要人为判断方程的形式,写出合适的迭代方程,如果迭代方程形式不对,无法收敛;2.对初值的依赖性更大,您可以试试用您的代码,Dmix0的初值取为其他数值,比如0.8,您看能不能得到解;3.用这种方法求解非线性方程组,将更麻烦。

» 本帖已获得的红花(最新10朵)

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
7楼2015-04-03 11:34:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

洛羽

木虫 (小有名气)

送红花一朵
引用回帖:
7楼: Originally posted by 月只蓝 at 2015-04-03 11:34:41
而且个人觉得,您设计的算法属于直接迭代法,该算法对于较为简单的方程能迅速得到结果,但因为该方法属于比较初级的方法,其也有不少劣势:1.需要人为判断方程的形式,写出合适的迭代方程,如果迭代方程形式不对, ...

谢谢!
主要因为计算中可能会有大量循环,希望效率高点,因为对计算这块也不了解所以问问。
笑笑而已
8楼2015-04-03 12:40:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 洛羽 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0856化工专硕求调剂 +11 董boxing 2026-03-01 11/550 2026-03-01 19:04 by 18137688336
[考研] 298求调剂 +6 axyz3 2026-02-28 6/300 2026-03-01 19:00 by 18137688336
[考研] 材料学调剂 +9 提神豆沙包 2026-02-28 11/550 2026-03-01 18:15 by ms629
[考研] 材料类求调剂 +10 wana_kiko 2026-02-28 11/550 2026-03-01 18:11 by 海嵙Y
[考博] 26申博 +4 想申博! 2026-02-26 6/300 2026-03-01 17:32 by 想申博!
[考研] 321求调剂一志愿东北林业大学材料与化工英二数二 +4 虫虫虫虫虫7 2026-03-01 7/350 2026-03-01 16:52 by caszguilin
[考研] 0856材料求调剂 +4 麻辣鱿鱼 2026-02-28 4/200 2026-03-01 16:51 by caszguilin
[考研] 材料化工调剂 +9 今夏不夏 2026-03-01 10/500 2026-03-01 16:01 by hmn_wj
[考研] 307求调剂 +5 wyyyqx 2026-03-01 5/250 2026-03-01 15:21 by Fff-1
[考研] 303求调剂 +4 今夏不夏 2026-03-01 4/200 2026-03-01 14:46 by 嘟嘟小浣熊
[考研] 298求调剂 +9 人间唯你是清欢 2026-02-28 12/600 2026-03-01 14:23 by Ducount.Y
[考研] 材料284求调剂,一志愿郑州大学英一数二专硕 +10 想上岸的土拨鼠 2026-02-28 10/500 2026-03-01 14:12 by yc258
[考研] 化工299分求调剂 一志愿985落榜 +4 嘻嘻(*^ω^*) 2026-03-01 4/200 2026-03-01 13:15 by wang_dand
[考研] 311求调剂 +9 南迦720 2026-02-28 10/500 2026-03-01 10:55 by sunny81
[硕博家园] 2025届双非化工硕士毕业,申博 +3 更多的是 2026-02-27 4/200 2026-03-01 10:04 by ztg729
[考研] 272求调剂 +4 田智友 2026-02-28 4/200 2026-03-01 06:43 by 刘兵
[基金申请] 面上模板改不了页边距吧? +5 ieewxg 2026-02-25 6/300 2026-03-01 00:10 by addressing
[考研] 304求调剂 +3 52hz~~ 2026-02-28 5/250 2026-03-01 00:00 by 52hz~~
[考研] 264求调剂 +3 巴拉巴拉根556 2026-02-28 3/150 2026-02-28 21:31 by gaoxiaoniuma
[硕博家园] 【博士招生】太原理工大学2026化工博士 +4 N1ce_try 2026-02-24 8/400 2026-02-26 08:40 by N1ce_try
信息提示
请填处理意见