| 查看: 2184 | 回复: 6 | ||||
[求助]
如何用matlab求方程 sin(2*x)=log10(x) 的解,谢谢。 已有1人参与
|
|
方程 sin(2*x)=log10(x) 有5个解, 如何用matlab求其数值解呢,谢谢。 利用 solve('sin(2*x)=log10(x)','x') 求助,答案不对。 请高手帮忙,谢谢。 |
» 猜你喜欢
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有221人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
月只蓝
主管区长 (职业作家)
-

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












回复此楼