| 查看: 2285 | 回复: 6 | |||||
[求助]
如何用matlab求方程 sin(2*x)=log10(x) 的解,谢谢。 已有1人参与
|
|
方程 sin(2*x)=log10(x) 有5个解, 如何用matlab求其数值解呢,谢谢。 利用 solve('sin(2*x)=log10(x)','x') 求助,答案不对。 请高手帮忙,谢谢。 |
» 猜你喜欢
津理工大学晶体材料全国重点实验室刘红军教授课题组招收博士生一名
已经有0人回复
【原创讨论】从电子约束到物质编辑:一套可迭代的环形磁场科技树
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有121人回复
【方案分享】单环磁场+轴心控制+偏转导出电子束约束系统(可行性实验)
已经有6人回复
【修正版】单环用磁约束低速电子实验方案(简化版)
已经有0人回复
桂林理工大学物理学专业招收调剂,还有三个名额!!!
已经有22人回复
考博自荐
已经有1人回复
山东大学第二批博士研究生招生
已经有0人回复
中国科学院东莞材料科学与技术研究所-2026年博士招生-吴昊研究员-磁学与自旋电子学
已经有0人回复
《电磁学》教材推荐
已经有0人回复
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68133.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +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
感谢参与,应助指数 +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 |

2楼2015-09-24 08:43:29
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68133.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区
|
此时有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 |

3楼2015-09-24 12:33:13
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68133.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区
|
解这种多解方程,首先应观察一下零点位于的范围,比如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 |

4楼2015-09-24 12:48:38
5楼2015-09-24 16:15:16
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68133.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区

6楼2016-01-26 09:03:48
7楼2018-08-28 13:48:12












回复此楼