鱼C论坛

 找回密码
 立即注册
查看: 1349|回复: 9

迭代求解方程

[复制链接]
发表于 2024-1-18 08:24:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 子飞鱼 于 2024-1-18 08:38 编辑

一个处理实际问题的方程,想通过迭代求正数根(因为是实际生活的问题,负数根或虚数根没有意义)。
方程如下所示:
a*X/b = 1 + B/X +C/(X**2) + D/(X**5) + (E -0.0001713155/(X**2))/(b**3 * X**2) * exp(-0.0128542/(X**2))

其中:X为未知数,a与b为已知的常数。B,C,D,E均与b有关。
B = 0.3664405 - 0.3434066/b + 0.2346731/(b**2) -0.4924378/(b**3)-0.1333935*b**1.1
C = -0.06230325 +0.01194191/b +0.02720183/(b**3) + 0.04049407*b**1.1
D = 0.00001082989 - 0.000003051937/b + 0.000001428566*b**1.1
E = 0.1112586 - 0.07506711 * b**1.1

a的取值范围是 0<a<30 , b的取值范围是 0<b<13
我以往都是给X一个初值,比如0.5,通过方程右边的表达式求出一个值,再根据这个值反推出方程左侧的X值;继续用这个X值求方程右侧的值,再反推方程左侧的值。直到上一次的X值与本次求出的X值的差值小于我设定的误差范围,迭代结束。
但是现在当a = 15, b=5的时候 或者a>13,b>4的时候 就没法迭代出结果。经过若干次迭代后 上一次的X的迭代值值与本次的X迭代值的差值是一个固定值,不随着迭代次数的增加而改变,不收敛。
请问该如何设置迭代过程能避免出现上面的问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-1-18 17:14:47 | 显示全部楼层
有大神从数学的角度帮忙给分析下原因么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-20 08:49:13 | 显示全部楼层
有数学大神给看看么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:18:25 | 显示全部楼层
子飞鱼 发表于 2024-1-20 08:49
有数学大神给看看么?

我知道一个大神
@Fishc
你来解决一下这个数学问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:18:42 | 显示全部楼层
stumblemodel 发表于 2024-01-20 18:18
我知道一个大神
@Fishc
你来解决一下这个数学问题


当然没问题,我会尽力帮你解决数学问题的!

请告诉我你遇到了什么数学问题,让我来帮助你解答。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:19:57 | 显示全部楼层
@Fishc
解决这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:20:07 | 显示全部楼层


嗨!请问有什么问题需要解决呢?告诉我,我会尽力帮助你。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:20:52 | 显示全部楼层
一个处理实际问题的方程,想通过迭代求正数根(因为是实际生活的问题,负数根或虚数根没有意义)。
方程如下所示:
a*X/b = 1 + B/X +C/(X**2) + D/(X**5) + (E -0.0001713155/(X**2))/(b**3 * X**2) * exp(-0.0128542/(X**2))
复制代码


其中:X为未知数,a与b为已知的常数。B,C,D,E均与b有关。
B = 0.3664405 - 0.3434066/b + 0.2346731/(b**2) -0.4924378/(b**3)-0.1333935*b**1.1
复制代码
C = -0.06230325 +0.01194191/b +0.02720183/(b**3) + 0.04049407*b**1.1
复制代码
D = 0.00001082989 - 0.000003051937/b + 0.000001428566*b**1.1
复制代码
E = 0.1112586 - 0.07506711 * b**1.1
复制代码


a的取值范围是 0<a<30 , b的取值范围是 0<b<13
我以往都是给X一个初值,比如0.5,通过方程右边的表达式求出一个值,再根据这个值反推出方程左侧的X值;继续用这个X值求方程右侧的值,再反推方程左侧的值。直到上一次的X值与本次求出的X值的差值小于我设定的误差范围,迭代结束。
但是现在当a = 15, b=5的时候 或者a>13,b>4的时候 就没法迭代出结果。经过若干次迭代后 上一次的X的迭代值值与本次的X迭代值的差值是一个固定值,不随着迭代次数的增加而改变,不收敛。
请问该如何设置迭代过程能避免出现上面的问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:23:35 | 显示全部楼层
stumblemodel 发表于 2024-1-20 18:20
一个处理实际问题的方程,想通过迭代求正数根(因为是实际生活的问题,负数根或虚数根没有意义)。
方程如 ...

@Fishc
解一下这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:23:53 | 显示全部楼层
stumblemodel 发表于 2024-01-20 18:23
@Fishc
解一下这个问题


当然可以,请告诉我你遇到的问题是什么?我会尽力帮助你解决。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表