小编Dr.*_*ius的帖子

在Mathematica中的两个单独的绘图命令中使用微分方程的解

我尝试在两个单独的绘图命令中使用NDSolve的答案时遇到了问题.为了说明这个问题,我将使用一个简单的微分方程和一个绘图命令.如果我写这样的东西:

{Plot[x[t], {t, 0, 10}], x[4]} 
/. NDSolve[{x'[s] == - x[s], x[0] == 1}, x, {s, 0, 10}]
Run Code Online (Sandbox Code Playgroud)

它解决了方程并且没有问题地计算x [4],但是情节变空了,我不知道为什么.

在我的实际问题中,我的方程是一个非常复杂的系统,用于几个函数,而不是x [4]我绘制了求解函数的参数图.我最终打算将所有这些包含在Manipulate语句中,所以我不希望NDSolve语句出现多次(花费太长时间)而且我不能提前计算它(因为它有很多参数).


编辑:我想澄清并扩展我的问题:我实际想要做的是通过以下方式将我的绘图语句包含在Manipulate语句中:

Manipulate[{Plot[x[t], {t, 0, 10}], x[4]} 
/. NDSolve[{x'[s] == - a*x[s], x[0] == 1}, x, {s, 0, 10}]
,{{a,1},0,5}]
Run Code Online (Sandbox Code Playgroud)

由于只有Manipulate语句为参数a赋值,因此我无法事先计算出NDSolve的答案.另外,由于我的实际方程系统非常复杂且非线性,我不能使用符号函数DSolve.

对不起,如果以前不清楚.

plot wolfram-mathematica differential-equations

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

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

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

java math linear-equation algebra

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

FindDivisions []无法正常工作

FindDivisions []被添加到Mma v7中,似乎是一种很好的方法来获得灵活的图表.例如,请参阅此问题及其答案.

用法示例:

f[fd_] := Join[
   {#, #, {.07, 0}, Directive[Black, Thickness[.01]]} & /@ fd[[1]],
   {#, #, {.05, 0}, Directive[Black, Thin]}           & /@ Flatten[fd[[2]]]];
plot[pr_List] :=  
     Plot[Sin[x], Evaluate@Join[{x}, pr], Ticks -> {f[FindDivisions[pr, {2,5}]]}]

plot[{0, 10}]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

一切似乎都是对的.
但是有一个小问题:

f[fd_] := Join[
   {#, #, {.03, 0}, Directive[Red, Thickness[.01]]} & /@  fd[[1]], 
   {#, #, {.05, 0}, Directive[Black, Thin]}         & /@  Flatten[fd[[2]]]];
plot[pr_List] :=
  Plot[Sin[x], Evaluate@Join[{x}, pr], Ticks -> {f[FindDivisions[pr, {2,5}]]}]
plot[{0, 10}]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如您所见,红色和黑色的蜱是叠加的.那是因为

FindDivisions[{0, 2}, {2, 4}]
(*
-> …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

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

EdgeRenderingFunction和VertexRenderingFunction帮助

我正在尝试构建一个LayeredGraphPlot,其中一些节点连接到其他节点,如树.我想有自由选择每个边缘的厚度,颜色,是否存在标签.

我还想自由地显示一些顶点名称并将一些顶点显示为"点".我似乎无法理解EdgeRenderingFunction和VertexRenderingFunction如何使我能够做到这一点.

我是mathematica的新手.我点击了有关Wolfram帮助页面的更多信息,但它似乎有一个模糊的描述而不是精确的语法,其次是一些可爱但无益(对我而言)的例子(与数学工作中的matlab相比,帮助提供了精确的语法..至少在我的脑海里).
我已经查阅了大约10本数学书籍(史密斯和布拉奇曼,mathematica揭秘等等),但它们似乎都只用一两个例子来表面覆盖函数,并没有提供最通用的语法.

有人可以帮忙解决这个问题,我也很欣赏如何学习mathematica的技巧吗?我是个聪明人,学习如何使用命令我不会有太多麻烦.

LayeredGraphPlot [{1-> 2,1-> 3,2> 4,3> 5,3-> 6}]

例如,我想:

  1. 抑制除顶点4,5和6之外的所有顶点名称.
  2. 颜色为蓝色,边缘厚度为3-> 6,2-> 4和1-> 3
  3. 所有其他边缘都是红色和薄的

wolfram-mathematica

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

为什么InverseFunction [0&] @ 0返回33/10?

在32位Linux上的Mathematica 8.0.1.0中,表达式

InverseFunction[0 &]@0
Run Code Online (Sandbox Code Playgroud)

回报33/10.(对于其他整数和有理数值也是如此;我用它0作为例子.)

根据以下文件InverseFunction:

正如在没有唯一值的函数中所讨论的那样,许多数学函数没有唯一的反转.在这种情况下,InverseFunction [f]只能表示f的可能反转之一.

由于常量函数0&将返回0而不管其输入如何,它具有无限多个反函数(每个函数仅在0处定义).如此定义,这个答案在规范范围内.

谜团是,为什么它给出33/10而不是任何其他价值

wolfram-mathematica mathematica-8

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

使用copula分布的和的分位数太慢

尝试使用具有Beta边缘的内置copula分布(Clayton,Frank,Gumbel)创建两个相关随机变量之和的分位数表.尝试NProbabilityFindRoot各种方法 - 不够快.我需要探索的copula-marginal组合的一个例子如下:

nProbClayton[t_?NumericQ, c_?NumericQ] := 
        NProbability[  x + y <= t, {x, y}  \[Distributed]    
               CopulaDistribution[{"Clayton", c}, {BetaDistribution[8, 2], 
                                                   BetaDistribution[8, 2]}]]
Run Code Online (Sandbox Code Playgroud)

对于使用的数值概率的单一评估

nProbClayton[1.9, 1/10] // Timing // Quiet
Run Code Online (Sandbox Code Playgroud)

我明白了

{4.914, 0.939718}
Run Code Online (Sandbox Code Playgroud)

在Vista 64bit Core2 Duo T9600 2.80GHz机器上(MMA 8.0.4)

要获得总和的分位数,请使用

FindRoot[nProbClayton[q, 1/10] == 1/100, {q, 1, 0, 2}// Timing // Quiet
Run Code Online (Sandbox Code Playgroud)

用各种方法

( `Method -> Automatic`, `Method -> "Brent"`, `Method -> "Secant"` ) 
Run Code Online (Sandbox Code Playgroud)

花大约一分钟才能找到一个分位数:时间是

{48.781, {q -> 0.918646}}
{50.045, {q -> 0.918646}}
{65.396, {q -> 0.918646}}
Run Code Online (Sandbox Code Playgroud)

对于其他copula-marginal组合,时间稍微好一些. …

performance wolfram-mathematica mathematica-8

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

如何将12个圆圈均匀地放在一个大圆圈中

这是我需要解决的研究设计中的一个现实问题.请帮忙.

在3厘米2的大圆圈(面积= 3厘米2,这个大圆的计算半径= 9.77毫米)中,我需要放置12个小孔(所有相同尺寸).它们应均匀分布,彼此间距为4mm,并且应尽可能靠近大圆的边缘.如何定位这些小孔以及如何计算小孔的半径?

谢谢

algorithm math geometry

5
推荐指数
2
解决办法
2112
查看次数

如何绘制正多边形,使一条边与X轴平行?

我知道要从中心点绘制正多边形,您可以使用以下内容:

for (int i = 0; i < n; i++) {  
    p.addPoint((int) (100 + 50 * Math.cos(i * 2 * Math.PI / n)),
               (int) (100 + 50 * Math.sin(i * 2 * Math.PI / n))
              );
}
Run Code Online (Sandbox Code Playgroud)

但是,无论如何都要更改此代码(不添加旋转)以确保始终绘制多边形,以使最上边或最下边与180度线平行?例如,通常,上面的代码为五边形或正方形(分别为n = 5和4)会产生类似于:

http://i.stack.imgur.com/Nv6Xf.gif http://i.stack.imgur.com/or967.gif

我正在寻找的是:

http://i.stack.imgur.com/Tfxs1.gif http://i.stack.imgur.com/BIORA.gif

是否有任何数学方法可以实现这一目标?

math graphics geometry polygon

5
推荐指数
1
解决办法
4306
查看次数

无法重新定义受保护的符号和系统功能

发现试图用来the usual trick重新定义GaussianFilter []:

out[x_]:=Print["(*"<>ToString@x<>"*)"];
(* Redefining Circle[ ] works as expected*)
Unprotect[Circle];
Circle[a_,args__]:=
      Block[{$i=True},{"Circle",a}]/;!TrueQ[$i];
Protect[Circle];
out@Circle[{0,1},1,{0,2Pi}]

(*{Circle, {0, 1}}*)

(* Redefining GaussianFilter[ ] does not*)
Unprotect[GaussianFilter];
GaussianFilter[a_,args__]:=
              Block[{$j=True},{"GaussianFilter",a}]/;!TrueQ[$j];
Protect[GaussianFilter];

SetDelayed::write: Tag GaussianFilter in GaussianFilter[a_,args__] is Protected>>
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

5
推荐指数
1
解决办法
714
查看次数

两个列表的元素最大值

给出两个Mathematica数据集,如

data1 = {0, 1, 3, 4, 8, 9, 15, 6, 5, 2, 0};
data2 = {0, 1, 2, 5, 8, 7, 16, 5, 5, 2, 1};
Run Code Online (Sandbox Code Playgroud)

如何创建一个集合,为我提供两个列表的最大值,即如何获取

data3 = {0, 1, 3, 5, 8, 9, 16, 6, 5, 2, 1};
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

5
推荐指数
1
解决办法
636
查看次数