| 查看: 1516 | 回复: 7 | |||
| 当前主题已经存档。 | |||
zhangyatao木虫 (正式写手)
|
[交流]
[color=Blue]【求助】Bessel函数的Matlab解法[/color]
|
||
|
对于下面的Bessel函数,如何用Matlab求解,麻烦给出源程序或类似程序,多谢了! D*x*J1(x)=J0(x),其中D是常数。 [ Last edited by zhangyatao on 2009-4-1 at 16:51 ] |
» 猜你喜欢
面上提前没消息,有中的吗
已经有14人回复
这种情况还有戏吗
已经有12人回复
微信指数没变化,科研之友没阅读
已经有19人回复
准备明年的基金了
已经有7人回复
面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇!
已经有24人回复
2026年国自然面上资助率
已经有21人回复
基础研究怎么拉横向,学校到款任务越来越多,难以完成 拉横向,都有哪些途径啊
已经有10人回复
2027年申博
已经有3人回复
一个有机合成实验室都需要哪些设备?
已经有7人回复
HXDI做水性聚氨酯乳液,是不是特别容易出渣
已经有3人回复

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
zhangyatao(金币+8,VIP+0):程序有点错误,不过还是挺感谢你的! 4-1 15:41
sunxiao(金币+2,VIP+0):谢谢参与交流,欢迎常来仿真编程版 4-1 22:38
zhangyatao(金币+8,VIP+0):程序有点错误,不过还是挺感谢你的! 4-1 15:41
sunxiao(金币+2,VIP+0):谢谢参与交流,欢迎常来仿真编程版 4-1 22:38
|
可以先画图像看看啊 fplot('x*Bessel(x,1)-Bessel(x,0)',[-10,100]) 可以看出,方程无解,但函数随x的增大是趋近于零的 >> x=20 x = 20 >> x*Bessel(x,1)-Bessel(x,0) ans = 7.7470e-024 >> x=10000 x = 10000 >> x*Bessel(x,1)-Bessel(x,0) ans = 0 [ Last edited by fspdlh on 2009-4-1 at 15:19 ] |
2楼2009-04-01 15:16:49
zhangyatao
木虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 3307.9
- 散金: 840
- 红花: 2
- 帖子: 646
- 在线: 677.5小时
- 虫号: 325718
- 注册: 2007-03-17
- 性别: GG
- 专业: 分离过程

3楼2009-04-01 15:24:49
4楼2009-04-01 15:34:29
5楼2009-04-01 15:34:46
zhangyatao
木虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 3307.9
- 散金: 840
- 红花: 2
- 帖子: 646
- 在线: 677.5小时
- 虫号: 325718
- 注册: 2007-03-17
- 性别: GG
- 专业: 分离过程

6楼2009-04-01 15:37:28
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
zhangyatao(金币+15,VIP+0):十分感谢!另外,如果方程里面有个常数D(见编辑后的帖子),还能否得到带有常数D的数值解,谢谢哈! 4-1 16:45
sunxiao(金币+4,VIP+0):谢谢参与交流,欢迎常来仿真编程版 4-1 22:37
zhangyatao(金币+15,VIP+0):十分感谢!另外,如果方程里面有个常数D(见编辑后的帖子),还能否得到带有常数D的数值解,谢谢哈! 4-1 16:45
sunxiao(金币+4,VIP+0):谢谢参与交流,欢迎常来仿真编程版 4-1 22:37
|
function x=solvefun(a,b,tol) %-------------------------------------------------------------------------- range=a:1:b; if range(end) range=[range,b]; end tag=[abs(diff(sign(fun(range)))) 0]; range=range(find(tag>0))'; range=[range range+1]; %-------------------------------------------------------------------------- n=size(range,1); tol=tol/10; x=zeros(n,1); for i=1:n xmin=range(i,1); xmax=range(i,2); xcur=(xmin+xmax)/2; while xmax-xmin>tol if sign(fun(xmin))*sign(fun(xcur))>0 xmin=xcur; else xmax=xcur; end xcur=(xmin+xmax)/2; end x(i)=xcur; end %-------------------------------------------------------------------------- function y=fun(x) y=x.*Bessel(1,x)-Bessel(0,x); >> solvefun(0,100,1e-4) ans = 1.2558 4.0795 7.1558 10.2710 13.3984 16.5312 19.6667 22.8040 25.9422 29.0812 32.2207 35.3606 38.5007 41.6411 44.7817 47.9223 51.0631 54.2040 57.3450 60.4860 63.6271 66.7682 69.9094 73.0506 76.1918 79.3331 82.4744 85.6157 88.7570 91.8984 95.0398 98.1811 >> |
7楼2009-04-01 16:20:38
★ ★ ★ ★
sunxiao(金币+4,VIP+0):谢谢参与交流,欢迎常来仿真编程版 4-1 22:37
sunxiao(金币+4,VIP+0):谢谢参与交流,欢迎常来仿真编程版 4-1 22:37
|
function x=solvefun(a,b,D,tol) %-------------------------------------------------------------------------- range=a:1:b; if range(end) range=[range,b]; end tag=[abs(diff(sign(fun(range,D)))) 0]; range=range(find(tag>0))'; range=[range range+1]; %-------------------------------------------------------------------------- n=size(range,1); tol=tol/10; x=zeros(n,1); for i=1:n xmin=range(i,1); xmax=range(i,2); xcur=(xmin+xmax)/2; while xmax-xmin>tol if sign(fun(xmin,D))*sign(fun(xcur,D))>0 xmin=xcur; else xmax=xcur; end xcur=(xmin+xmax)/2; end x(i)=xcur; end %-------------------------------------------------------------------------- function y=fun(x,D) y=D.*x.*Bessel(1,x)-Bessel(0,x); |
8楼2009-04-01 16:55:01










回复此楼