24小时热门版块排行榜    

查看: 2447  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 八角寨 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +7 苏东坡二世 2026-08-23 7/350 2026-08-27 18:14 by 瞬息宇宙
[基金申请] 基金不中,共勉 +10 eulota 2026-08-26 10/500 2026-08-27 17:23 by lqllinqiaoli
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +7 process2012 2026-08-23 10/500 2026-08-26 19:23 by hmhminy
[基金申请] 系统查不到 +10 董八千 2026-08-26 10/500 2026-08-26 16:30 by Equinoxhua
[基金申请] 范进中举一文的中心思想 +9 炎黄贵胄 2026-08-22 10/500 2026-08-26 15:40 by semaglutide
[基金申请] 2026国自然函评费到账 +22 羊腰板 2026-08-21 25/1250 2026-08-26 15:00 by zuocuiping
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +4 yuleib84 2026-08-26 5/250 2026-08-26 13:40 by yuleib84
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
[基金申请] 没有任何消息-是不是就凉了 +9 图啦图啦 2026-08-24 10/500 2026-08-25 11:59 by 南海小哥
[基金申请] 建议基金发布提前给出明确的时间点 +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
信息提示
请填处理意见