问题标签 [numerical-methods]

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.

0 投票
3 回答
999 浏览

math - 龙格-库塔。解决不易分离的初值问题

我们应该编写一个程序来使用 4 阶 Runge-Kutta 数值求解以下初始值问题。该算法不是问题,我可以在完成后发布我的解决方案。

问题是,将它干净地分离成我可以放入 Runge-Kutta 的东西。

知道这叫什么类型的 ODE?或解决此问题的方法?与数学相比,我对 CS 技能和编程数值方法更有信心……所以对这个问题的任何见解都会有所帮助。

更新:如果有人对解决方案感兴趣,代码如下。我认为这是一个有趣的问题。

0 投票
7 回答
2480 浏览

assembly - 在微控制器上近似两个平方和的平方根

我正在努力在 8 位微控制器 (HCS08) 上以汇编方式实现 FFT 算法,以获得乐趣。算法完成后,我将拥有一个 8 位实数/虚数对的数组,并且我想要找到每个值的大小。也就是说,如果x很复杂,我想找到

现在我可以使用一个 16 位寄存器和一个 8 位寄存器。我想只是将它们平方,相加,然后取结果的平方根,但这带来了一个问题:两个 8 位数字的平方和的最大可能值为 ~130k,大于一个 16 位寄存器可以保存的最大值(65.5k)。

我想出了一个计算 16 位数字的整数平方根的子程序,这似乎工作得很好,但显然我不能保证使用适合 16 位的值。我现在的想法是有一种算法可以直接近似我需要的东西,但我似乎找不到任何东西。任何想法将不胜感激。

总结一下:假设我有一个包含两个 8 位分量的向量,我想找到向量的长度。在不实际计算平方和平方根的情况下如何近似这个?

谢谢!

0 投票
3 回答
590 浏览

optimization - Haskell 的有限差异,或如何禁用潜在的优化

我想实现以下天真的(一阶)有限差分函数:

您可能知道,有一个微妙的问题:必须确保这一点,(x + h)并且x相差一个完全可表示的数字。否则,由于涉及灾难性取消这一事实,结果会产生巨大的错误(f $ x + h) - (f x)(并且必须仔细选择h,但这不是我的问题)。

在 C 或 C++ 中,问题可以这样解决:

并且volatile修饰符禁用与变量有关的任何优化temp,因此我们确信“聪明”的编译器不会优化掉这两行。

我对 Haskell 的了解还不够,不知道如何解决这个问题。恐怕

将被 Haskell(或它使用的后端)优化掉。我怎样才能得到volatile这里的等价物(如果可能的话不牺牲懒惰)?我不介意 GHC 的具体答案。

0 投票
2 回答
9951 浏览

python - Numpy中快速计算大数集标准差的方法

最好(最快)的方法是什么?

问题

这产生了我认为正确的答案,但显然在 N = 10e6 时它非常缓慢。我想我需要保持 Xi 值,这样我才能正确计算标准偏差,但是有什么技术可以让这个运行得更快吗?

0 投票
1 回答
5144 浏览

c - OpenMP 和归约()

我只有 3 个功能,一个是控制功能,接下来的 2 个功能是使用 OpenMP 以不同的方式完成的。但是函数 thread1 给出的分数比 thread2 和 control 还要高,我不知道为什么?

以下是简单的回答:

更新:

好的,我试图更快地做到这一点,而不是两次计算周期的值。

但经过几次测试后,我发现分数接近正确值,但不相等。有时其中一个线程无法启动。当我不使用 OpenMp 时,该值是正确的。

0 投票
4 回答
6053 浏览

c - 来自数字配方的 LU 分解不起作用;我究竟做错了什么?

我已经从提供的源代码中复制并粘贴了 C 的数字配方用于就地 LU 矩阵分解,问题是它不起作用。

我确定我在做一些愚蠢的事情,但希望有人能够指出我正确的方向;我整天都在努力,看不出我做错了什么。

回复后更新:该项目已完成并正在运行。感谢大家的指导。

WolframAlpha说答案应该是

我越来越:

到目前为止,我已经找到了至少 3 个不同版本的“相同”算法,所以我完全糊涂了。

PS是的,我知道至少有十几个不同的库可以做到这一点,但我更感兴趣的是了解我做错了什么而不是正确答案。

PPS,因为在LU分解中,较低的结果矩阵是统一的,并且使用(我认为)实现的Crouts算法,数组索引访问仍然是安全的,L和U都可以就地相互叠加;因此为此的单个结果矩阵。

0 投票
4 回答
359 浏览

arrays - 将数组中的最大数调整为第二个数组中的最小数的逻辑

大家好

将数组中的最大数调整为第二个数组中的最小数的逻辑

我有一个数组“A”

我希望第二个数组朝着“相反”的方向前进,所以当数组“A”中的数字变高时,数组“B”中的数字应该变低

数组“B”应该是什么样子的示例(再次参考 A)

我尝试使用这种逻辑,但它当然会让一切变得积极

但这不起作用我正在使用matlab,但是如果有人知道正确的逻辑,我可以将其转换为matlab语法

蒂亚

这些数字代表信号的不同幅度,因此当一个信号阵列 A 的幅度上升时,另一个信号阵列 B 的幅度应该下降。有“重叠”

0 投票
2 回答
1240 浏览

c - 修改rk4方法的C实现

坦率地说,我的问题是我不确定这是如何工作的。

我需要修改双 f() 函数来求解任意微分方程 d2θ/dt2 = -ω2sinθ,但实际上我不确定如何进行。

我理解的 rk4 函数 runge4() 本身;我不明白的是 f() 函数如何为谐波振荡器返回正确的值。

有人请至少解释一下 f() 函数背后的逻辑吗?

原始代码如下。

0 投票
3 回答
297 浏览

c - 用于高斯消除的内存管理

在处理器 0 中创建一个矩阵并分散到其他处理器。矩阵是对称密集矩阵。这就是它在处理器 0 中初始化的原因。

以这种方式创建一个矩阵:

A(i,j) 定义为:

N 必须为 100,000 才能测试算法。

这里的问题是:如果 N=100,000,那么所需的内存大约是 76GB。您建议如何存储 A 矩阵?

PS:当 N<20.000 并且集群是分布式内存系统(每个处理器 2GB RAM)时,算法工作得很好

0 投票
2 回答
808 浏览

numerical-methods - 在由离散点包围的区域上,函数与给定点集(有限和离散)处已知值的数值积分?

令 D 为由一系列点 {x_i,y_i} (1<=i<=N) 界定的区域。(该区域不必是凸的,并且这些点应该沿着边界曲线。)

令 f 是在 D 上定义的函数,但我们只知道它在给定点集(有限和离散)上的值,例如 {x'_i,y'_i,f(x'_i,y'_i)} (1<= i<=N')。(给定的数据集不需要在 D 中“密集”。)

如何进行 f 对 D 的数值积分?

这是我的想法:
1)首先我们应该通过这些点系列之间的线段来近似 D 的边界。
2)然后我们应该对给定的数据集做一些插值。然而,二维插值并不总是可行的。然后我就卡住了。

你能帮忙吗?谢谢你。