24小时热门版块排行榜    

查看: 2146  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 洛羽 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +35 医学老男孩 2026-08-13 83/4150 2026-08-17 20:08 by 医学老男孩
[基金申请] 感觉是下周放榜了 +4 angus9576 2026-08-17 8/400 2026-08-17 17:26 by angus9576
[基金申请] filecode=后面第一个是大写字母 +8 wangze12014 2026-08-14 10/500 2026-08-17 17:05 by xter9665
[基金申请] 时间戳变了,能看出什么问题? +4 基诺咪客 2026-08-17 4/200 2026-08-17 16:10 by Vivilian
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +12 Ldrop2023 2026-08-13 15/750 2026-08-17 15:02 by 小豌豆_发芽
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[基金申请] 时间戳又变了8-15 +13 archvillain 2026-08-15 25/1250 2026-08-16 20:13 by zhaosm1982
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 6/300 2026-08-16 20:07 by 奶牛小黑
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +3 Tide man 2026-08-14 3/150 2026-08-16 17:47 by jurkat.1640
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 26/1300 2026-08-16 12:35 by 启萌科技
[基金申请] 有时候,自然基金真的不能太认真 (我的申报经验) +10 majunge000 2026-08-11 12/600 2026-08-16 08:18 by xli1984
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 什么时候出结果,有咨询渠道??? +3 Tide man 2026-08-11 3/150 2026-08-11 17:54 by kudofaye
信息提示
请填处理意见