24小时热门版块排行榜    

查看: 807  |  回复: 6

利维坦6021

新虫 (初入文坛)

[求助] 【求助】使用fortran95牛顿法求根

最近被一个超越方程困扰了很久,因为对fortran不太熟悉,因此求教各位如何使用fortran语言求这个方程的根呢?
公示在图中,其中p为常数。
在网上搜到的程序包有点看不明白,希望各位不吝赐教

【求助】使用fortran95牛顿法求根
捕获.PNG
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

scoot

新虫 (初入文坛)

2楼2017-09-15 18:08:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijf517

木虫 (小有名气)

这个方程这么简单,还搜什么程序包啊。自己写代码,十行内搞定。标准的牛顿迭代法。选个合适的初值x0,然后x_(k+1)=x_k-f‘_k。随便找本数值分析的书都会讲得很清楚。

发自小木虫Android客户端
3楼2017-09-16 06:25:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ylsxz2012

铜虫 (初入文坛)

引用回帖:
3楼: Originally posted by lijf517 at 2017-09-16 06:25:12
这个方程这么简单,还搜什么程序包啊。自己写代码,十行内搞定。标准的牛顿迭代法。选个合适的初值x0,然后x_(k+1)=x_k-f‘_k。随便找本数值分析的书都会讲得很清楚。
...

的确是最简单的。一般微积分书上都有。给您更正一个小小的笔误。
x_(k+1)=x_k-f‘_k*dx,
这里dx是步长。
4楼2017-09-16 08:57:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ylsxz2012

铜虫 (初入文坛)

引用回帖:
3楼: Originally posted by lijf517 at 2017-09-16 06:25:12
这个方程这么简单,还搜什么程序包啊。自己写代码,十行内搞定。标准的牛顿迭代法。选个合适的初值x0,然后x_(k+1)=x_k-f‘_k。随便找本数值分析的书都会讲得很清楚。
...

我刚才应该是dt不是dx,你用x做因变量了,没有仔细看。呵呵。
x_(k+1)=x_k-x‘_k*dt
dt步长。
5楼2017-09-16 09:01:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijf517

木虫 (小有名气)

引用回帖:
5楼: Originally posted by ylsxz2012 at 2017-09-16 09:01:54
我刚才应该是dt不是dx,你用x做因变量了,没有仔细看。呵呵。
x_(k+1)=x_k-x‘_k*dt
dt步长。...

谢谢指正,不过也不是dt或dx,这个迭代过程与步长无关。应该为x_(k+1)=x_k-f(x_k)/f’(x_k)。其中,f(x)=0为带求解的方程。

发自小木虫Android客户端
6楼2017-09-16 15:01:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ylsxz2012

铜虫 (初入文坛)

引用回帖:
6楼: Originally posted by lijf517 at 2017-09-16 15:01:16
谢谢指正,不过也不是dt或dx,这个迭代过程与步长无关。应该为x_(k+1)=x_k-f(x_k)/f’(x_k)。其中,f(x)=0为带求解的方程。
...

嗯,牛顿法是求根。我那个有步长的是求函数值,不是牛顿法。呵呵,我犯了个方法错误,虽然两个公式都用一个公式推导。谢谢指正,也免得误导其他初学者。
7楼2017-09-17 01:39:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 利维坦6021 的主题更新
信息提示
请填处理意见