| 查看: 2470 | 回复: 6 | ||||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||||
[求助]
如何用matlab求方程 sin(2*x)=log10(x) 的解,谢谢。 已有1人参与
|
||||
|
方程 sin(2*x)=log10(x) 有5个解, 如何用matlab求其数值解呢,谢谢。 利用 solve('sin(2*x)=log10(x)','x') 求助,答案不对。 请高手帮忙,谢谢。 |
» 猜你喜欢
基金申请
已经有44人回复
CSC与新西兰维多利亚大学PhD奖学金项目
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有225人回复
新西兰Robinson研究所 招聘CSC公派访问人员
已经有0人回复
帮我的英语口语老师找学生
已经有0人回复
什么时候开奖?
已经有13人回复
散金币祈福
已经有94人回复
青基已中
已经有1人回复
散金币祈福
已经有185人回复
求助,如何提取ELK的rt-TDDFT在某一时刻的自旋密度分布和电子密度分布
已经有1人回复
5楼2015-09-24 16:15:16
月只蓝
主管区长 (职业作家)
-

专家经验: +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










回复此楼
20