Tag: 数学

用于有界线集合的交叉的有效算法

我有一组配对数字,需要有效地找到包含给定值的对的集合。 给出数字对的以下表示 public class Line { public double Start { get; set; } //is always < end public double End { get; set; } } Lines的集合可以像下面那样在视觉上布局(黑线) 垂直的红线是交叉标准(只是一个简单的数字,如10.123) 我正在寻找一种有效的算法,它只返回与红色相交的黑线,这是基于搜索执行的频率大于集合中Line添加频率的假设。 (显然假设集合很大) 到目前为止,我不太理想的解决方案是 将行创建时插入两个排序列表。 一个在Start排序,另一个在Ended上排序 二进制搜索起始有序列表,以查找起始大于交叉标准的第一行的索引。 (理论上所有包括和在此指数之后的线都是非交叉的) 在(2)中对最终有序列表重复类似的逻辑 比较索引并选择要解析的剩余迭代次数最少的列表 通过手动寻找交叉点迭代所选列表的其余部分

在C#中需要任意精度算术

我需要C#的浮点计算,可以正确存储可能500位/小数。 有没有内置类型,我是否必须自己创建,任何可用的库或最好的方法是什么? 谢谢

Hysteresis Round用于解决由于噪声引起的“闪烁”值

背景:我们有一个嵌入式系统,使用10位模数转换器将线性位置(0 mm – 40 mm)从电位计电压转换为数字值。 ———————— 0mm | | 40 mm ———————— 我们向用户显示以1 mm为增量的线性位置。 防爆。 1mm,2mm,3mm等 问题:我们的系统可用于电磁噪声环境,这可能导致线性位置由于噪声进入ADC而“闪烁”。 例如,当电位计为39 mm时,我们将看到如下值:39,40,39,40,39,38,40等。 由于我们每1毫米四舍五入,如果值在1.4和1.6毫米之间切换,我们将看到1到2之间的闪烁。 建议的软件解决方案:假设我们无法更改硬件,我想在舍入值时添加一些滞后以避免这种闪烁。 这样: 如果该值目前为1mm,如果原始值为1.8或更高,则只能达到2mm。 同样,如果当前值为1mm,如果原始值为0.2或更低,则只能达到0mm。 我写了以下简单的应用来测试我的解决方案。 如果我走在正确的轨道上,或者您有任何建议,请告诉我。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PDFSHysteresis { class Program { static void Main(string[] args) { double test = 0; int curr = 0; Random random […]

C#:循环查找函数的最小值

我目前有这个function: public double Max(double[] x, double[] y) { //Get min and max of x array as integer int xMin = Convert.ToInt32(x.Min()); int xMax = Convert.ToInt32(x.Max()); // Generate a list of x values for input to Lagrange double i = 2; double xOld = Lagrange(xMin,x,y); double xNew = xMax; do { xOld = xNew; xNew = […]

Hough变换问题

我用这种方式在C#中实现了Hough Transform: List forme = new List(); forme.Add(new Point(260, 307)); forme.Add(new Point(268, 302)); forme.Add(new Point(273, 299)); forme.Add(new Point(279, 295)); forme.Add(new Point(285, 292)); forme.Add(new Point(291, 288)); forme.Add(new Point(298, 283)); forme.Add(new Point(305, 280)); forme.Add(new Point(312, 277)); forme.Add(new Point(319, 274)); forme.Add(new Point(325, 271)); forme.Add(new Point(333, 268)); forme.Add(new Point(340, 264)); forme.Add(new Point(350, 259)); forme.Add(new Point(356, 256)); int width = […]

当任何数学运算在.net 4中产生’NaN’时,如何强制C#编译器抛出exception?

我有一个很复杂的源代码,我需要找到变量值设置为nan的确切位置。 所以我需要编译器在那时抛出一个exception。 之前已经问过这个问题。 我发现以下答案是一个很好的答案。 此代码在.net 3.5中运行良好。但是当我使用.net 4时,此解决方案无法正常工作。 即使我在调试器中启用“抛出exception时中断”,也无法在代码中找到exception。 任何的想法? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace ConsoleApplication2 { class Program { [System.Runtime.InteropServices.DllImport(“msvcrt.dll”)] public static extern uint _control87(uint a, uint b); [System.Runtime.InteropServices.DllImport(“msvcrt.dll”)] public static extern uint _clearfp(); static void Main(string[] args) { float zero = 0.0f – args.Length; // Want […]

如何计算两个给定点和给定距离之间的点?

我有A (35.163 , 128.001)点A (35.163 , 128.001)和B (36.573 , 128.707)点B (36.573 , 128.707) 我需要计算点在A点和B点之间的点 使用2点之间的标准距离公式,我发现D = 266.3 线AB内的每个点(黑点p1,p2,… p8)以相等的距离d = D / 8 = 33.3分开 我如何计算p1,p2,… p8的X和Y? 欢迎使用Java或C#语言的示例 或者只是指出一个公式或方法会做。 谢谢。 **上述计算实际上用于计算地图中阴影级别的虚拟点,并用于阴影区域插值目的*

从地平线获得一条线的角度

我想知道如何从水平轴X获得AB线的角度.SO中的其他问题仅在两条线之间进行。 我知道我总是可以绘制二线AC并计算,但我想知道是否有更快的方法。 编辑:我很确定我没有做过早优化。

获取矩形和直线的交点

我需要获得矩形和直线的交点。 在矩形(矩形的中心)内有B点,在外面有A点。 我需要在一个矩形边框上找到C点。 我也得到了矩形的宽度和高度。 所有这些都将是WPF应用程序,所以如果任何构建function我将非常高兴。

可以使用Math.Pow(10,n)吗?

我需要计算功率(10,n) 可以使用Math.Pow (10, n)吗? 或者我应该使用循环? for (int i = 0; i < n; i++){ x*=10; } 哪一个更好? 为什么?