加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

RuntimeWarning:在double_scalars应用程序中遇到无效值

发布时间:2022-11-25 23:00:52 所属栏目:应用 来源:网络
导读: 您的代码遇到了“除以零”错误。试着说服自己:
>>> def f(x, y):
... return ((x**(2))*y)/((x**(4))+(y**(4)))
...
>>> I, di = 100, 0.01
>>> x = np.linspace(-I, I, int(I/di) +

您的代码遇到了“除以零”错误。试着说服自己:

>>> def f(x, y):
...     return ((x**(2))*y)/((x**(4))+(y**(4)))
...
>>> I, di = 100, 0.01
>>> x = np.linspace(-I, I, int(I/di) + 1)
>>> w = np.zeros(len(x))
>>> i = len(x)//2 + 1
>>> i
5001
>>> f(x[i-1], w[i-1])

专利权无效程序_应用程序无效_应用锁登小米帐号无效

nan

在上面的交互会话中,当i接受for循环中的值5001时,f(x[i-1], w[i-1])产生nan。这个问题有几种解决办法。例如,为了避免NaN值,可以在执行除法之前检查f()返回的分数分母是否为零。如果是,则应返回您选择的常规值(例如0),而不是除法的结果。下面的代码片段通过实现了这种方法:

def f(x, y):
    return (0 if x==0 and y==0 else float(x**2*y)/(x**4 + y**4))

或者,您可以通过在脚本中包含以下代码来禁用运行时警告(但如果这样做,则需要注意潜在的风险):

import warnings
def f(x, y):

专利权无效程序_应用程序无效_应用锁登小米帐号无效

with warnings.catch_warnings(): warnings.simplefilter('ignore') return ((x**(2))*y)/((x**(4)) + (y**(4)))

建议的解决方法避免了运行时警告,但没有使代码按预期工作。实际上,计算出的解w是一个所有元素都为零的向量。我想您的代码不能正常工作的原因是您没有将w[0]的初始值分配给0不同的值。

例如应用程序无效,如果只是在For循环之前添加这一行:

w[0] = 0.5

你得到的是曲线而不是平面图。

Plot of w(x)

希望这有帮助!

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!