小编Dr.*_*ius的帖子

迭代地平滑曲线

我一整天都在尝试这样做.基本上,我有一条线和一条点.我希望线条曲线并通过该点,但我不想要平滑的曲线.我不能像我这样定义曲线中的步数(谨防粗略的mspaint绘图): 曲线

等等.我尝试了各种各样的东西,比如从初始线的中心取角度然后在角度引导的点处分割线,但是我的长度有问题.我会把初始长度除以我所处的步数,但这不太对.

谁知道这样做的方法?

谢谢.

c# algorithm geometry curve-fitting

7
推荐指数
2
解决办法
1691
查看次数

更改GraphPlot中的边缘路径以避免歧义

我有以下无向图

gr={1->2,1->3,1->6,1->7,2->4,3->4,4->5,5->6,5->7};
Run Code Online (Sandbox Code Playgroud)

我想用GraphPlot以'菱形'格式绘制.我这样做如下所述(方法1)给出以下内容:

替代文字

问题是这种表示具有欺骗性,因为顶点4和1或1和5之间没有边缘(边缘是4到5).我希望改变边缘{4,5}的路线,得到如下内容:

替代文字

我通过包含另一条边{5,4}来做到这一点,现在我可以使用MultiedgeStyle来"移动"有问题的边缘,然后通过定义EdgeRenderingFunction来消除添加的边缘,从而不显示有问题的线条.(方法2,'解决方法').至少可以说这很尴尬.有没有更好的办法?(这是我的第一个问题!)

方法1

gr={1->2,1->3,1->6,1->7,2->4,3->4,4->5,5->6,5->7};

vcr={1-> {2,0},2-> {1,1},3-> {1,-1},4-> {0,0},5-> {4,0},6-> {3,1},7-> {3,-1}};

GraphPlot[gr,VertexLabeling-> True, 
             DirectedEdges-> False,
             VertexCoordinateRules-> vcr, 
             ImageSize-> 250]
Run Code Online (Sandbox Code Playgroud)

方法2(解决方法)

erf= (If[MemberQ[{{5,4}},#2], 
         { },      
         {Blue,Line[#1]}
        ]&);

gp[1] = 
       GraphPlot[
                 Join[{5->4},gr], 
                        VertexLabeling->True, 
                        DirectedEdges->False, 
                        VertexCoordinateRules->vcr, 
                        EdgeRenderingFunction->erf, 
                        MultiedgeStyle->.8, 
                        ImageSize->250
                        ]
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

7
推荐指数
1
解决办法
377
查看次数

聚合Tally计数器

很多时候我发现自己计算出现的次数,Tally[ ]然后,一旦我放弃原始列表,必须添加(和加入)到该计数器列出来自另一个列表的结果.

这通常发生在我计算配置,事件,执行一些离散统计等时.

所以我为Tally聚合定义了一个非常简单但方便的函数:

aggTally[listUnTallied__List:{}, 
         listUnTallied1_List,
         listTallied_List] := 
 Join[Tally@Join[listUnTallied, listUnTallied1], listTallied] //. 
     {a___, {x_, p_}, b___, {x_, q_}, c___} -> {a, {x, p + q}, b, c};
Run Code Online (Sandbox Code Playgroud)

这样

l = {x, y, z}; lt = Tally@l;
n = {x};
m = {x, y, t};

aggTally[n, {}]
  {{x, 1}}

aggTally[m, n, {}]
  {{x, 2}, {y, 1}, {t, 1}}

aggTally[m, n, lt]
  {{x, 3}, {y, 2}, {t, 1}, {z, 1}}
Run Code Online (Sandbox Code Playgroud)

这个功能有两个问题:

1)表现

Timing[Fold[aggTally[Range@#2, #1] &, {}, Range[100]];]
  {23.656, Null}
(* …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

7
推荐指数
2
解决办法
430
查看次数

获取矩形和直线的交点

我需要得到矩形和直线的交点.在矩形(矩形的中心)内有B点,在外面有A点.我需要在一个矩形边框上找到C点.我也得到了矩形的宽度和高度.

在此输入图像描述

所有这些都将是WPF应用程序,所以如果任何构建功能我将非常高兴.

c# math wpf

7
推荐指数
1
解决办法
9029
查看次数

间隔重叠

假设给你一组间隔(长度不一定是整数).如何确定给定集合中任何两个间隔之间是否存在重叠?我想知道是否有间隔数的线性解决方案.

PS:不是硬件问题.在我对一家公司的采访中提到了这一点.

algorithm intervals

7
推荐指数
2
解决办法
1万
查看次数

从Web导入Mathematica中的表 - 空单元格问题

我使用:
data=Import["http://weburl/","Data"]
从一个站点导入数据.在该页面上有表格.这将创建嵌套列表,您可以轻松地以表格形式获取数据.例如:
Grid[data[[1]]]
会给出这样的东西:

Player Age Shots Goals
  P1    24    10    2 
  P2    22     5    0
  P3    28    11    1
  ...
Run Code Online (Sandbox Code Playgroud)

现在,这是问题所在.如果html表中的一个单元格为空,例如"Age"的条目,那么在html中,这将是这样的:<td></td>.Mathematica根本不包括在列表中,甚至不包括例如"Null"值.相反,这一行只是由长度为3的列表表示,数据将被移动一列,因此您将获得"镜头"代替"年龄"和"目标"代替"镜头"和"目标" "会空的.例如,一个年龄未知的"P4"(html表中的空单元格),有10个镜头并且得分为0的目标将被导入为长度为3的列表而不是4并且移动一个:

Player Age Shots Goals
  P1    24    10    2 
  P2    22     5    0
  P3    10     0  
  ...
Run Code Online (Sandbox Code Playgroud)

这会带来一个难题,因为如果您有一些空字段,那么您无法从列表中分辨出它属于哪一列.在Mathematica中导入时,有没有办法在html表中的空单元格上放置"Null"?例如,列表中的P4元素将如下所示:
data[[1,5]]
{"P4","Null",10,0}
而不是:
{"P4",10,0}

import wolfram-mathematica

7
推荐指数
2
解决办法
998
查看次数

什么是Mathematica的圆柱分解的计算复杂性

数学" CylindricalDecomposition实现称为圆柱代数分解的算法.Wolfram MathWorld关于圆柱代数分解的文章称,这种算法"在计算上对于复杂的不等式变得不可行".

这句话可以更精确吗?具体来说,时间和空间如何与多元多项式的变量的次数和数量相关?时间和空间是否依赖于其他参数?

algorithm wolfram-mathematica time-complexity space-complexity

7
推荐指数
1
解决办法
462
查看次数

如何使用权重标记图边

警告!当Mathematica v 8.0是最酷的孩子时,我发布了这个问题.从版本9.0.1开始,该错误已得到解决

The help for EdgeLabels 状态:

在此输入图像描述

然而:

CompleteGraph[4,
 EdgeWeight -> Range@6,
 VertexShapeFunction -> "Name",
 EdgeLabels -> "EdgeWeight"]
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

所以,没有Edge Labels ......我想这是一个bug.

我使用了一个讨厌的结构,如:

adj = {{\[Infinity], 1, 1, 1, 1}, {1, \[Infinity], 2, 2, 2}, 
       {1, 2, \[Infinity], 2, 2}, {1, 2, 2, \[Infinity], 2}, 
       {1, 2, 2, 2, \[Infinity]}};

WeightedAdjacencyGraph[adj,
    VertexShapeFunction -> "Name", 
    EdgeLabels -> 
     MapThread[Rule,{EdgeList@#,AbsoluteOptions[#, EdgeWeight]/.{_ -> x_}-> x}], 
    GraphHighlight -> FindEdgeCover[#]]  
                                        &@ WeightedAdjacencyGraph[adj]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

好主意?

wolfram-mathematica mathematica-8

7
推荐指数
2
解决办法
4883
查看次数

Mathematica If-then vs.Implies

我是Mathematica(v8)的新手,并且正在使用它来编写命题逻辑.

我想知道运营商IfImplies运营商之间的区别.例如,
If[p,q]Implies[p,q]返回qp=True(如预期).

但是当我尝试获得满意度时,我得到以下结果:

SatisfiabilityInstances[If[p, q], {p, q}]
(*
  {{True, True}}
*)  
Run Code Online (Sandbox Code Playgroud)

除非我要求更多实例:

SatisfiabilityInstances[If[p, q], {p, q}, All]
Run Code Online (Sandbox Code Playgroud)

SatisfiabilityInstances :: boolv:"如果[p,q]不是布尔值{False,True}.

然而:

SatisfiabilityInstances[Implies[p, q], {p, q}, All]   
Run Code Online (Sandbox Code Playgroud)

返回预期的:

(* {{True, True}, {False, True}, {False, False}} *)
Run Code Online (Sandbox Code Playgroud)

造成这种差异的原因是什么?

boolean-logic if-statement wolfram-mathematica

7
推荐指数
1
解决办法
1353
查看次数

用于查找具有任意数量变量的任意数量线性方程的任何解的库

我必须找到任意数量的给定线性方程的任何解决方案(可能存在很多或没有),其中包含任意数量的变量.在Java中.什么库和方法使用?要实施什么?我想尽可能地做到最好.

java math linear-equation algebra

6
推荐指数
1
解决办法
3686
查看次数