| 查看: 2445 | 回复: 6 | ||||
[求助]
如何用matlab求方程 sin(2*x)=log10(x) 的解,谢谢。 已有1人参与
|
|
方程 sin(2*x)=log10(x) 有5个解, 如何用matlab求其数值解呢,谢谢。 利用 solve('sin(2*x)=log10(x)','x') 求助,答案不对。 请高手帮忙,谢谢。 |
» 猜你喜欢
瑞典林雪平大学博士后招聘|PEC Water Splitting 方向
已经有130人回复
PRB投稿,Acknowledgment sent to author状态十天了
已经有3人回复
物理学I论文润色/翻译怎么收费?
已经有230人回复
PVA溶解
已经有2人回复
基金申请
已经有44人回复
CSC与新西兰维多利亚大学PhD奖学金项目
已经有0人回复
新西兰Robinson研究所 招聘CSC公派访问人员
已经有0人回复
帮我的英语口语老师找学生
已经有0人回复
什么时候开奖?
已经有11人回复
散金币祈福
已经有94人回复
月只蓝
主管区长 (职业作家)
-

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

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









回复此楼
20