24小时热门版块排行榜    

查看: 2445  |  回复: 6

八角寨

银虫 (著名写手)

[求助] 如何用matlab求方程 sin(2*x)=log10(x) 的解,谢谢。 已有1人参与

方程 sin(2*x)=log10(x) 有5个解, 如何用matlab求其数值解呢,谢谢。

利用 solve('sin(2*x)=log10(x)','x') 求助,答案不对。
请高手帮忙,谢谢。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
八角寨: 金币+9, ★★★★★最佳答案, 非常好,感谢版主。但如果是 sin(5*x)=log10(x),语句中最后的[0.1 1 2 3 4 5 6 7 8 8.5] 该如何改变?再次感谢。 2015-09-24 11:50:58
solve函数是解符号解的,既然要求数值解,用fsolve函数更合适。

clear all;clc
[x fval]=fsolve(@(x) sin(2*x)-log10(x),[0.1 1 2 3 4 5 6 7 8 8.5]);
x=round(1e6*x)/1e6;
x=unique(x)

求得五个数值解:

x =

    1.4846    3.4235    4.3651    6.7735    7.3312
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2015-09-24 08:43:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
2楼: Originally posted by 月只蓝 at 2015-09-24 08:43:29
solve函数是解符号解的,既然要求数值解,用fsolve函数更合适。

clear all;clc
=fsolve(@(x) sin(2*x)-log10(x),);
x=round(1e6*x)/1e6;
x=unique(x)

求得五个数值解:

x =

    1.4846    3.4235    ...

此时有15个解,代码如下:

clear all;clc
[x fval]=fsolve(@(x) sin(5*x)-log10(x),linspace(0.5,9.5,20));
x=round(1e6*x)/1e6;
x_answer=unique(x)
figure(1)
xx=linspace(0,10,100);
yy=sin(5*xx)-log10(xx);
plot(xx,yy,'b',[0 10],[0 0],'r')

代码绘出了该函数图形,蓝线和红线交点的个数,即解的个数。
计算结果,有15个:
x_answer =

  Columns 1 through 12

    0.6641    1.2780    1.8318    2.5988    3.0408    3.8963    4.2620    5.1858    5.4884    6.4724    6.7167    7.7592

  Columns 13 through 15

    7.9442    9.0516    9.1658
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2015-09-24 12:33:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
2楼: Originally posted by 月只蓝 at 2015-09-24 08:43:29
solve函数是解符号解的,既然要求数值解,用fsolve函数更合适。

clear all;clc
=fsolve(@(x) sin(2*x)-log10(x),);
x=round(1e6*x)/1e6;
x=unique(x)

求得五个数值解:

x =

    1.4846    3.4235    ...

解这种多解方程,首先应观察一下零点位于的范围,比如sin(2*x)-log10(x)图形显示,该方程零点位于[1,8]的范围内,那么用代码:
[x fval]=fsolve(@(x) sin(2*x)-log10(x),linspace(1,8,20));
即可获得方程所有解,不需要手动输入“语句中最后的[0.1 1 2 3 4 5 6 7 8 8.5]”。
linspace(1,8,20)中20这个数字应大于零点的个数。
比如求 sin(10*x)-log10(x),观察图形有31个解,这个时候就把该数值设得大一些,同时xx=linspace(0,10,500)中取点个数也设置为500这样的大数,因为解多了,这样做可以防止漏解:
clear all;clc
[x fval]=fsolve(@(x) sin(10*x)-log10(x),linspace(0.2,9.7,100));
x=round(1e6*x)/1e6;
x_answer=unique(x)
figure(1)
xx=linspace(0,10,500);
yy=sin(10*xx)-log10(xx);
plot(xx,yy,'b',[0 10],[0 0],'r')

可求得31个解,如下:
x_answer =

  Columns 1 through 12

    0.3601    0.6064    0.9449    1.2669    1.5516    1.9135    2.1649    2.5552    2.7814    3.1945    3.3997    3.8322

  Columns 13 through 24

    4.0192    4.4690    4.6394    5.1052    5.2602    5.7410    5.8812    6.3767    6.5024    7.0123    7.1236    7.6482

  Columns 25 through 31

    7.7445    8.2845    8.3649    8.9219    8.9842    9.5621    9.6007
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2015-09-24 12:48:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

八角寨

银虫 (著名写手)

引用回帖:
4楼: Originally posted by 月只蓝 at 2015-09-24 12:48:38
解这种多解方程,首先应观察一下零点位于的范围,比如sin(2*x)-log10(x)图形显示,该方程零点位于的范围内,那么用代码:
=fsolve(@(x) sin(2*x)-log10(x),linspace(1,8,20));
即可获得方程所有解,不需要手动输 ...

帮主知识渊博,感谢版主的耐心帮忙。
5楼2015-09-24 16:15:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
4楼: Originally posted by 月只蓝 at 2015-09-24 12:48:38
解这种多解方程,首先应观察一下零点位于的范围,比如sin(2*x)-log10(x)图形显示,该方程零点位于的范围内,那么用代码:
=fsolve(@(x) sin(2*x)-log10(x),linspace(1,8,20));
即可获得方程所有解,不需要手动输 ...

该段代码运行后,产生的图如附图1所示。
如何用matlab求方程 sin(2*x)=log10(x) 的解,谢谢。
附图1.png

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

you叫宝哥

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by 月只蓝 at 2015-09-24 12:48:38
解这种多解方程,首先应观察一下零点位于的范围,比如sin(2*x)-log10(x)图形显示,该方程零点位于的范围内,那么用代码:
=fsolve(@(x) sin(2*x)-log10(x),linspace(1,8,20));
即可获得方程所有解,不需要手动输 ...

感谢指导!
7楼2018-08-28 13:48:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 八角寨 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 没有任何消息-是不是就凉了 +9 图啦图啦 2026-08-24 10/500 2026-08-25 11:59 by 南海小哥
[基金申请] 人气不行了 +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by 孤独的英雄6
[基金申请] 2026国自然函评费到账 +19 羊腰板 2026-08-21 22/1100 2026-08-25 10:38 by popular289
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +3 苏东坡二世 2026-08-23 3/150 2026-08-25 10:35 by shisan1313
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +5 process2012 2026-08-23 7/350 2026-08-25 09:42 by huixian257
[基金申请] 我面上完蛋了 +13 且听虎啸 2026-08-20 14/700 2026-08-25 09:10 by mrkang
[基金申请] 范进中举一文的中心思想 +7 炎黄贵胄 2026-08-22 8/400 2026-08-25 08:48 by ZJTJZ
[基金申请] 只有每年这种时候来逛逛小木虫 +25 yaoyewhu2008 2026-08-20 27/1350 2026-08-25 08:01 by Equinoxhua
[基金申请] 明天应该可查了!? +5 chengyan1220 2026-08-23 5/250 2026-08-24 23:28 by 我4大白菜
[基金申请] 能否退出参与的面上项目解除限项 +21 koalala 2026-08-24 24/1200 2026-08-24 19:25 by 家与远方
[基金申请] filecode,4个jtjc了 +14 ziyangfang 2026-08-19 17/850 2026-08-24 18:37 by 哈哈蛤?
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +17 医学老男孩 2026-08-20 21/1050 2026-08-24 14:21 by refreshing11
[基金申请] 放榜前的不淡定 20+4 snowwithsea 2026-08-19 17/850 2026-08-24 10:20 by echo8914667
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
信息提示
请填处理意见