问题标签 [non-linear]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何用 Python 求解非线性微分系统?
我有一个非线性差分系统:
- (1)
f''(t)=r(f(t))
和 - (2)
g''(t)=s(f(t),g(t))
where s(f(t),g(t))
may be s(f(t),g(t))=f(t)*g(t)
or s(f(t),g(t)) = cos(f(t))*sin(g(t))
... 我们知道 g 和 s。我想用 Python 解决这个系统,但我不知道怎么做。第一个方程可以很容易地求解,scipy.integrate.odeint
但我不知道如何求解整个系统。
algorithm - 找到 x1² + x2² + ... + xn² = 1 的所有可能解的算法
是否有任何算法可以找到该方程的所有可能解:
x1² + x2² + ... + xn² = 1
其中 xi > 0 且 n >= 2
为了限制解决方案,我们可以将 x 的小数点固定为 1。例如:
如果 n = 2,找到所有满足 x1² + x2² = 1 的元组 (x1, x2) 此函数的返回类似于(将小数点固定为 1):
对于 n = 2,这很容易,但我需要对 n > = 2 进行概括。
python - 在 Python 中生成数字序列(曲线)
我正在尝试生成一个 120 个数字的非线性序列,范围在 7 到 20 之间。
我已经尝试过使用numpy geomspace和logspace,这给了我几乎相同的结果。它可以满足我的要求,但是可以说产生的“曲线”不够“尖锐”。
我需要控制上升和下降。缓慢的开始和结束时的快速加速和/或反之亦然。例如,结果应该是这样的:
或者
结果序列不在我的脑海中,只是为了给出一个想法。
r - 有没有办法解决R中的方程?
我正在尝试用 R 写一个方程,然后解决它。我对 R 相当陌生,所以这可能是一个基本问题,但我无法理解谷歌提供的几个包上的 CRAN 注释。
我的等式:
F- b ln(|1+ (F/b)|) - 0.05t = 0
我正在尝试求解 F,并在 R 中有其他方程/变量已经定义了 b 和 t。
我想我要问的是,我如何将这个公式翻译成 R 中的东西,然后为 F 求解?
d3.js - D3 每个轴上不同的缩放系数
我试图弄清楚如何在 d3 中的 X 轴和 Y 轴上创建不同的缩放因子。它似乎是用两个轴的单个缩放因子创建的,基本上我想知道是否有办法将它们分开。
基础很简单:d3 中对 x 轴和 y 轴上的均匀缩放效果提供了出色的支持。关闭一个轴的缩放也很容易。但是我找不到创建这种中间效果的方法。目标是使每个鼠标滚轮缩放事件的 y 轴缩放比 x 轴缩放 10 倍。
我没有要显示的实际代码,因为我不知道这是否可能。也许一个有用的提示是,我使用的是 D3 版本 5。使用了通常的或多或少标准化的缩放代码。
r - 使用 mle2 进行有误差的参数估计并进行预测
我mle2
用来估计非线性模型的参数,我想要估计参数估计周围的误差(标准误差)。同样,我想使用该模型然后使用 newdata 进行预测,并且在此过程中的几个步骤中我遇到了问题(错误)。
这是数据:
首先,我必须为我的非线性模型设置几个关于动物在温度方面的表现的固定参数
定义x
变量(温度)
为非线性模型创建函数
创建负对数似然函数
模型性能使用mle
2 -maximum likelihood estimator
这给了我参数估计值,但不是错误估计值(标准错误)warning message: In sqrt(diag(object@vcov)) : NaNs produced
。然而,参数估计很好,让我做出有意义的预测。
我尝试了许多不同的优化器和方法,并得到了关于无法计算标准的相同错误。错误,通常带有关于无法反转粗麻布的警告。或者我对我的参数的估计非常不稳定,这没有意义。
如果我使用:
我的每个参数都有 95% 的间隔,但我无法将它们合并到我可以用来制作如下图的预测方法中,我使用nls
模型和predict()
:
如果我mle2()
通过将模型公式嵌入mle2
函数来重新创建模型:
我对我的参数进行了无意义的估计,但我仍然没有得到错误估计。
我的问题是,任何人都可以看到我的模型(模型函数和似然函数)有什么问题,或者我做错了什么吗?我有一种感觉,我可能写错了似然函数,但我尝试了各种分布和不同的方式,但我可能完全搞砸了。
或者有没有一种方法可以让我对我的参数的误差进行估计,以便我可以使用它们在图表中可视化我的模型预测的误差?
谢谢,
赖利
PS。我决定制作一个仅包含点估计值的图表,然后是没有错误的趋势线,但我想在每个点估计值上放置 95% CI 的条形图,但是 confint() 给了我非常小的 CI '甚至没有出现在图表上,因为它们比我使用的点字符小,哈。
modelica - 非线性电感的梯形积分
我已经用Modelica对非线性电感器进行了建模,但是梯形积分无法解决电路,不胜感激有人可以帮我解决电路。
我准备了如下示例:
请通过求解器梯形运行示例,StopTime = 0.1,Interval = 2e-05
python - 如何在 Gekko 中构建过程模拟器,了解时间常数和稳态值
我有一个非常复杂的非线性动力系统,我从 CFD(计算流体动力学)知道每个时间实例的时间常数和稳态响应。我如何 (1) 使用此信息构建流程模拟器?(2) 如果我知道测量的输入和输出以及稳态值,我如何调整时间常数值?
c++ - 在非线性有限元代码中有效地使用 Eigen 进行重复稀疏矩阵组装
我正在尝试使用 Eigen 有效地组装用于非线性有限元计算的刚度矩阵。
从我的有限元离散化中,我可以准确地提取我的稀疏模式。因此我可以使用:
正如http://eigen.tuxfamily.org/dox/group__SparseQuickRefPage.html中所建议的那样。
我在这里提出的问题是:
由于非线性特性,我必须经常重新填充我的矩阵。因此,我是否应该将所有贡献存储在一个三元组中并
mat.setFromTriplets(...)
一次又一次地重复使用?如果我重用
mat.setFromTriplets(...)
我是否可以以某种方式利用这样一个事实,即我总是以相同的顺序为组件评估我的元素矩阵,因此我在三元组中的索引永远不会改变,而只会改变值。因此,可以避免“在内存中搜索”,因为我可以将放置它的位置存储在新数组中?如果
mat.coeffRef(i,j)
更快,我可以利用上述事实吗?一个额外的问题:(较低优先级)是否可以有效地存储和组装具有相同稀疏模式的 3 个矩阵,即如果我必须循环执行?例如一个矩阵包装器,其中我有一个 SparseMatrix 来获取矩阵为 M1=mat[0]、M2=mat[1]、M3=mat[2],其中 mat[i] 返回第一个矩阵和 M1、M2 和M3 例如
SparseMatrix<double> M1(1000,1000)
.-
一般设置如下(对于问题 1.-3。仅出现 M1):
谢谢你和问候,亚历克斯
更新:
谢谢您的回答。最初,我访问非零的顺序是非常随意的。但是由于我对迭代方案感兴趣,所以我考虑记录这种随机排序并构建一个处理此问题的运算符。这个运算符可以从最初构造的三元组构造(至少在我看来)。
我将运算符P
视为在适当位置具有 1 和 0 的矩阵。
问题仍然存在,这是否是一个更有效的程序?
UPDATE-2:基准:
我试图在代码片段中构建我的想法。我首先生成一个随机三元组列表。该列表被构造为获得 95% 的稀疏度,此外,列表中的一些值被复制以模仿三元组列表中的重复项,这些重复项写入稀疏矩阵中的相同位置。然后根据不同的概念插入这些值。第一个是setfromtriplet
方法,第二个和第三个尝试利用已知的结构。
第二种和第三种方法记录了三元组列表的排序。然后利用此信息直接将值写入纯mat1.coeffs()
向量中。
如果我在 i5-6600K 3.5Ghz 和 16GB 内存上运行此示例,我最终会得到以下结果。这是以秒为单位的时间。
前三列表示不同方法的计算时间,第 4 到第 6 列表示不同预处理步骤的时间。
对于 100000 行和列的大小,我的 Ram 相对较快地变满,因此应小心处理最后一个表条目。这里最快的方法从 2 变为 3。
我的问题是这种方法是否朝着提高效率的正确方向发展?这是一个完全错误的方向吗,因为例如对于 10000 大小的情况,0.48 秒的组装时间似乎有点高?
此外,预处理步骤变得非常昂贵,是否有更好的方法来构建矩阵的排序?最后一个问题是以正确的方式进行基准测试吗?
谢谢你的时间,亚历克斯