| 查看: 2187 | 回复: 6 | ||||
[求助]
如何用matlab求方程 sin(2*x)=log10(x) 的解,谢谢。 已有1人参与
|
|
方程 sin(2*x)=log10(x) 有5个解, 如何用matlab求其数值解呢,谢谢。 利用 solve('sin(2*x)=log10(x)','x') 求助,答案不对。 请高手帮忙,谢谢。 |
» 猜你喜欢
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有285人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
求助NH4V4O10晶体的CIF文件
已经有0人回复
英国全奖博士招聘-深度学习与量子物理
已经有0人回复
间接带隙半导体有效质量求助
已经有0人回复
投稿chemical physical letters不送审?
已经有1人回复
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68123.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
- 金币: 68123.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
- 金币: 68123.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
- 金币: 68123.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













回复此楼