天道酬勤,学无止境

math

How to implement decision variable in AMPL

I have an equation and i don't know how to implement it in AMPL for CPLEX. Here is it: enter image description here Thank you for your help!

2022-01-25 03:50:07    分类:问答    math   modeling   ampl

找到 pi 的值直到 50 位(find the value of pi till 50 digits)

问题 我想计算 PI 的值直到 50 位。 如何在 Java 中做到 50 位小数? 回答1 您无法使用默认数据类型执行此操作,因为您需要 50 位:50 / log(2) * log(10) = 166 位。 这里 BigDecimal 是您可以使用的一种类型。 但是您应该记住,22/7 只是 pi 的一个近似值,要使其正确处理 50 位数字,您需要更好的公式(例如蒙特卡洛方法、泰勒级数……)。 回答2 您正在使用双变量,而应该使用精度更高的变量。 查看BigDecimal类。 回答3 public class PiReCalc { public static final int N = 1000; // # of terms public static void main(String[] args) { BigDecimal sum = new BigDecimal(0); // final sum BigDecimal term = new BigDecimal(0); // term without sign BigDecimal sign = new BigDecimal(1.0); // sign on each term BigDecimal one = new BigDecimal(1.0); BigDecimal two = new BigDecimal(2.0

2022-01-25 01:20:56    分类:技术分享    java   math   pi

运动球从惰性球上反弹的角度(Angle that a moving ball will bounce off of an inert ball)

问题 假设有两个球,其中一个在笛卡尔坐标平面内运动,而另一个静止不动。 在某个时刻,运动球与惰性球相撞。 假设运动球沿直线运动,根据以下信息,如何推导出运动球将被推动的新角度: 移动球的中心坐标 (X0, Y0)、半径 (R0) 和撞击前的移动角度 (A0) 静止球的中心坐标 (X1, Y1) 和半径 (R1) 回答1 如果你的第二个球有无限质量: 其中 phi (经过长时间计算)是: phi= -ArcTan[ ( 2 R^2 Sin[A0] + 2 (YD Cos[A0] - XD Sin[A0]) (2 H Cos[A0] + 2 XD Sin[A0]^2 - YD Sin[2 A0])) / ((2 R^2 - XD^2 - 3 YD^2) Cos[A0] + (XD^2 - YD^2) Cos[3 A0] + 8 XD YD Cos[A0]^2 Sin[A0] + 4 H Sin[A0] (-YD Cos[A0] + XD Sin[A0])) ] 在哪里: H = (R0 + R1)^2 - ((Y0 - Y1) Cos[A0] + (X0 - X1) Sin[A0])^2 R^2 = (R0 + R1)^2 XD = X1 - X0 YD = Y1 - Y0 编辑 要确定整个轨迹,您还需要在撞击时移动球的中心坐标。 他们是: {X,Y}= {X1+Sin[A0] (

2022-01-25 00:47:51    分类:技术分享    java   math   physics   collision

C# 数学题:2 的最小幂比 X 大吗?(C# math question: smallest power of 2 bigger than X?)

问题 public int CalcBrackets(int teamCount) { int positions = 1; while (positions < teamCount) positions *= 2; return positions; } 我想要 2 的幂且大于或等于 teamCount 的最小数字。 这真的是最好的方法吗? 它看起来确实很可怕:( 回答1 如果您需要计算小于 teamCount 的 2(不是倍数)的最小幂,那么这可能是最好的方法。 取对数是一项成本高昂的操作,并且可能比简单的循环花费更多的时间。 upd这是一个使用按位运算的算法(C++)(http://aggregate.org/MAGIC/,2 的下一个最大幂部分) unsigned int nlpo2(unsigned int x) { x--; // comment out to always take the next biggest power of two, even if x is already a power of two x |= (x >> 1); x |= (x >> 2); x |= (x >> 4); x |= (x >> 8); x |= (x >> 16); return (x+1); } 首先,它将数字的所有相关位设置为 1(例如,0x3ff),然后将其递增

2022-01-25 00:40:04    分类:技术分享    c#   math

查找特定值的最长序列(finding longest sequence of a particular value)

问题 我想找到特定数字的最长序列,即 1 出现在数组中。 假设数组是{1,0,0,0,1,1,1,1,0,0,1,1}; 答案应该是 4,因为一个最多连续出现四次。 回答1 使用游程编码。 在 R 中,它只是 max(rle(x)$lengths) 回答2 从一个数字数组 A 开始,找到 A 中某个数字 N 的最长连续运行。 伪C... MaxRun = 0 /* Longest run so far */ for (i = 0; i < length(A);) { if A[i] = N { /* Potential run of N's... */ /* Scan backward for first N in run */ for (j = i; j > 0 & A[j-1] = N; j--); /* Scan forward to last N in run */ for (k = i; k < length(A)-1 & A[k+1] = N; k++); /* Check to see if longer run found... */ if (k-j+1 > MaxRun) then MaxRun = k-j+1; i = k /* jump i to last N found */ } i = i + MaxRun + 1 /* Jump by longest

2022-01-25 00:33:22    分类:技术分享    algorithm   math

How to properly add/subtract a 128-bit number (as two uint64_t)?

I'm working in C and need to add and subtract a 64-bit number and a 128-bit number. The result will be held in the 128-bit number. I am using an integer array to store the upper and lower halves of the 128-bit number (i.e. uint64_t bigNum[2], where bigNum[0] is the least significant). Can anybody help with an addition and subtraction function that can take in bigNum and add/subtract a uint64_t to it? I have seen many incorrect examples on the web, so consider this: bigNum[0] = 0; bigNum[1] = 1; subtract(&bigNum, 1); At this point bigNum[0] should have all bits set, while bigNum[1] should have

2022-01-24 22:57:23    分类:问答    c   math   int128

我可以根据算术运算编写关系运算符吗?(Can I Write Relational Operators in Terms of Arithmetic Operations?)

问题 所以我有一个相当复杂的功能: template <typename T> void foo(const int param1, const int param2, int& out_param) 给定int bar 、 const int arg1和const int arg2函数将被调用: foo<plus<int>>(arg1, arg2, bar)或foo<minus<int>>(arg1, arg2, bar) 在内部,该函数相当复杂,但我正在根据作为模板参数传递的函子类型执行不同的关系运算符。 在plus的情况下,我需要做: arg1 > arg2 bar > 0 bar > -10 在minus的情况下,我需要做: arg1 < arg2 bar < 0 bar < 10 请注意, 10在两个3秒中的符号不​​同。 我目前正在通过传递第二个模板参数( less或greater )来解决所有这些问题。但我认为将这些关系写成算术运算可能更有意义。 这甚至可能吗,还是我需要采用第二个模板参数? 回答1 T{}(0, arg1) > T{}(0,arg2); T{}(0, bar) > 0; T{}(0, bar) > -10; 基本思想是a > b当且仅当-a < -b 。 而plus(0,a)==a而minus(0,a)==-a 。 最后一个很棘手,因为我们想改变

2022-01-24 22:44:31    分类:技术分享    c++   templates   math   functor   relational-operators

找到具有无限多个解的非平方线性系统的所有解(Finding all solutions of a non-square linear system with infinitely many solutions)

问题 在这个问题中找到了一个解决方案,可以找到具有无限多个解决方案的非平方线性系统的特定解决方案。 这就引出了另一个问题: 如何使用 R 找到具有无限多个解的非平方线性系统的所有解? (关于无限组解的可能描述,请参见下文) 示例:线性系统 x+y+z=1 x-y-2z=2 等价于AX = B : A=matrix(c(1,1,1,1,-1,-2),2,3,T) B=matrix(c(1,2),2,1,T) A [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 -1 -2 B [,1] [1,] 1 [2,] 2 我们可以用以下方式描述无限的解决方案: x = 3/2 + (1/2) z y = -1/2 + (-3/2) z z in R 因此,R 可以这样描述一组解: > solve2(A,B) $principal [1] 1 2 # this means that x and y will be described $free [1] 3 # this means that the 3rd variable (i.e. z) is free in the set of real numbers $P [1] 1.5 -0.5 $Q [1] 0.5 -1.5 这意味着每个解决方案都可以通过以下方式创建: z = 236782 # any value would

2022-01-24 21:40:04    分类:技术分享    r   math   matrix   linear-algebra

SQL abs 计算 - 使用纬度和经度 - 数学!(SQL abs calculation - using latitudes and longitudes - MATH!)

问题 我有一个 sql 查询,它根据一定范围内的坐标从数据库中提取位置。 现在我试图通过一些数学的接近来对它们进行排序——但无论我在纸上写了多少次,我似乎都无法找到一个可行的解决方案。 让我们描述一些变量: $plat(地点的纬度) $plong(地点的经度) $slat(搜索位置的纬度) $slong(搜索位置的经度) 需要注意的一件大事是,我已将所有坐标转换为正数,并有另一个字段确定正数或负数 - 但为此假设我已经正确查询了附近的坐标。 为了以这种方式订购,我看到人们使用“ORDER BY abs(coord-coords)”来做一些简单的事情——但我需要的是更像: [($slat - $plat) * ($slong - plong)] - 但这会导致问题,因为如果一侧的结果计算为零 - 那么在相乘后结果也将为零 - 使其不准确。 有任何想法吗 - 回答1 纬度/经度坐标之间距离的解称为半正弦公式。 这很复杂,因为除非您的距离很短,否则您需要考虑地球的曲率。 这是一篇关于使用 PHP 和 MySQL 实现定位器应用程序的文章:Creating a Store Locator with PHP, MySQL & Google Maps 您还可以在 Stack Overflow 上找到许多其他关于计算坐标之间距离的问题:https://stackoverflow.com

2022-01-24 20:21:34    分类:技术分享    php   sql   math

Move a point toward the mouse

(I'm using processing for this but it is not necessarily relevant.) I'm looking for an algorithm that would take the point A and the point B (B being the mouse cursor position) and use them so that every frame the point A moves a little bit towards B (from -1px to 1px left/right up/down) I tried x1 += cos(atan((mouseY-y1)/(mouseX-x1))) and the same with sin for y1, but I doesn't seem to work. If someone has an idea I would appreciate it. I'm not looking for a built-in function that would do the job, I'd like to understand the math behind it. Thank you for your time.

2022-01-24 19:34:56    分类:问答    java   math   processing