Tag: 数学

将用户输入字符串转换为数学函数

出于我想要做的目的,我需要将用户输入作为字符串并将其转换为未评估的函数。 例如,如果用户输入是“x ^ 2 * sin(x)”,我需要一个带有双输入x的函数并返回 Math.Pow(x, 2)*Math.Sin(x) 我需要函数,我不能传入x的值,我将多次调用函数(可能数百个),所以每次进行计算时我都无法解析字符串。 我该如何实现? 我从问题转换为数学方程式? 没有标准的方法来做到这一点。 但是我对如何“保存”数学公式有点迷茫,有没有办法用数学表达式创建委托? 至少,我需要它来识别基本的代数方程,幂,指数和触发函数。 此外,虽然我使用了单个变量x的函数示例,但我希望能够解析多个变量的函数。

计算二项式系数的算法

我需要一种计算组合的方法,而不会耗尽内存。 这是我到目前为止所拥有的。 public static long combination(long n, long k) // nCk { return (divideFactorials(factorial(n), ((factorial(k) * factorial((n – k)))))); } public static long factorial(long n) { long result; if (n <= 1) return 1; result = factorial(n – 1) * n; return result; } public static long divideFactorials(long numerator, long denominator) { return factorial(Math.Abs((numerator – […]

数学计算检索两点之间的角度?

可能重复: 如何计算两点相对于水平轴的角度? 我一直在寻找这个年龄,这真的很烦我,所以我决定只问… 如果我有两个点(即x1,y1和x2,y2),我想计算这两个点之间的角度,假设当y1 == y2且x1> x2时角度为180度…… 我有以下代码,我一直在使用(使用高中的知识),我似乎无法产生预期的结果。 float xDiff = x1 – x2; float yDiff = y1 – y2; return (float)Math.Atan2(yDiff, xDiff) * (float)(180 / Math.PI); 在此先感谢,我变得非常沮丧……

.NET“十进制”算术是否独立于平台/架构?

我最近询问了System.Double ,并被告知计算可能因平台/架构而异。 不幸的是,我找不到任何信息告诉我是否同样适用于System.Decimal 。 我可以保证在独立于平台/架构的情况下获得与任何特定decimal计算完全相同的结果吗?

n点与最佳拟合曲线的近似

我有一个n点(2D)列表:P1(x0,y0),P2(x1,y1),P3(x2,y2)…点满足每个点都有唯一坐标的条件,以及每个点的坐标xi ,yi> 0和xi,yi是整数。 任务是编写一个算法来近似这些点 到曲线y = | Acos (Bx) | y = | Acos (Bx) | 最合适(接近或等于100%) 因此系数A和B尽可能简单。 我想用C#编写一个程序,但对我来说最大的问题是找到合适的算法。 有没有人可以帮我这个?

两个大数字之间的差异C#

对于小数字,已经有解决这个问题的方法: 这里: 2个数字之间的差异 这里: C#函数找到两个数字的增量 这里: 如何在C#中找到2个值之间的差异? 我将总结所有人的答案: Math.Abs(a – b) 问题是当数字很大时,这会给出错误的答案(通过溢出)。 更糟糕的是,如果(a – b) = Int32.MinValue则Math.Abs因exception而崩溃(因为Int32.MaxValue = Int32.MinValue – 1 ): 发生了System.OverflowException 的HResult = 0x80131516 消息= 否定二进制补码数的最小值 无效 。 来源= mscorlib程序 StackTrace:在System.Math.Abs​​(Int32值)的System.Math.Abs​​Helper(Int32值)处 它的特殊性质导致难以重现的错误。 也许我错过了一些众所周知的库函数,但有没有办法安全地确定差异?

C#Maths给出了错误的结果!

我理解这个问题背后的原理,但是让我头疼的是认为这在整个应用程序中都会发生,我需要找到解决方案。 double Value = 141.1; double Discount = 25.0; double disc = Value * Discount / 100; // disc = 35.275 Value -= disc; // Value = 105.824999999999999 Value = Functions.Round(Value, 2); // Value = 105.82 我用双打代表很小的数字。 不知何故,在计算141.1-35.275中,结果的二进制表示给出了一个仅为0.0000000000001的数字。 不幸的是,由于我正在舍入这个数字,这给出了错误的答案。 我已经阅读过使用Decimals而不是Doubles但我不能用Decimal替换Double的每个实例。 有没有更简单的方法来解决这个问题?

具有多边的有向图的循环枚举

如何在多边有向图中找到所有cyles ? 图示例1: 周期: 1-2-6 1-2-3-4 1-2-3-4-5-6 1-2-6-5-3-4 3-4-5 5-6 图示例2(多边4/5): 周期: 1-2-3 1-4 1-5 笔记: 我不想检测一个循环 (布尔结果),我想列出所有循环 。 任何强连接组件算法都不足以解决我的问题(在两个示例中都只找到一个组件)。 我在C#中使用QuickGraph实现,但我很高兴看到任何语言的算法。

从字符串数学表达式中提取变量

我想用c#从数学表达式中提取变量。 我写了这段代码,它的工作正常: List Variables = new List(); string temp = string.Empty; Console.WriteLine(“Please enter ur expression”); string Expression = Console.ReadLine().Trim(); int Index; for (Index = 0; Index 0) { Variables.Add(temp); temp = string.Empty; } } } if (temp.Length > 0) { Variables.Add(temp); } foreach (string item in Variables) { Console.WriteLine(item); } Console.ReadKey(); 我必须从表达式中检测SIN和COS,因此我将从变量中删除SIN和COS。 这是好方法吗? 是否可以使用正则表达式或更好的方法来执行此操作? 这段代码需要重构吗? […]

组合两个整数以创建唯一编号

早上好, 我正在寻找一种方法来组合两个整数来创建一个唯一的数字,我有两个表,我需要组合成一个具有唯一数字的第三个表, 这些是我的表: Table A SchoolID ClassId 107 56644231 107 56644532 107 320110212 Table B SchoolID ClassId 108 566442310 108 56644532 108 50110212 我需要将这些字段导出到第三个表,该表将类ID和学校ID组合到一个名为classID的字段中。 我需要能够将这些数字组合在一起,然后才能将它们组合在一起,以便将schoolid和classid分开以进行更新。 我想连接字符串’schoolid + ’00’ + ‘classid’因为我知道schoolid将始终是一个3位数字,但我正在寻找其他方式或许数学,我不必使用字符串强制转换。 有数学方法可以做到这一点吗? 或者是为了做到这一点,最好的方法是使用字符串? 我正在使用C#来编写解决方案。 谢谢,