为什么直接设定参数和在交互式操作里设定同样的参数画出的图不同
mathematica吧
全部回复
仅看楼主
level 2
xxiaoliu 楼主
这是直接设定参数代码:
\[Theta] = 90 Degree
\[Phi] = 0 Degree
a = 0.1
b = 0.1
ParametricPlot[{x =
Cos[t] (1/
2 (Cos[\[Phi]]^2/b^2 + (Cos[\[Phi]]^2 Csc[\[Theta]]^2)/a^2 +
Sin[\[Phi]]^2/a^2 + (Csc[\[Theta]]^2 Sin[\[Phi]]^2)/b^2 -
Sqrt[4 (-((Cos[\[Phi]] Csc[\[Theta]] Sin[\[Phi]])/
a^2) + (Cos[\[Phi]] Csc[\[Theta]] Sin[\[Phi]])/
b^2)^2 + (-(Cos[\[Phi]]^2/
b^2) + (Cos[\[Phi]]^2 Csc[\[Theta]]^2)/a^2 -
Sin[\[Phi]]^2/a^2 + (Csc[\[Theta]]^2 Sin[\[Phi]]^2)/
b^2)^2]))^(-1/2),
y = Sin[t] (1/
2 (Cos[\[Phi]]^2/b^2 + (Cos[\[Phi]]^2 Csc[\[Theta]]^2)/a^2 +
Sin[\[Phi]]^2/a^2 + (Csc[\[Theta]]^2 Sin[\[Phi]]^2)/b^2 +
Sqrt[4 (-((Cos[\[Phi]] Csc[\[Theta]] Sin[\[Phi]])/
a^2) + (Cos[\[Phi]] Csc[\[Theta]] Sin[\[Phi]])/
b^2)^2 + (-(Cos[\[Phi]]^2/
b^2) + (Cos[\[Phi]]^2 Csc[\[Theta]]^2)/a^2 -
Sin[\[Phi]]^2/a^2 + (Csc[\[Theta]]^2 Sin[\[Phi]]^2)/
b^2)^2]))^(-1/2)}, {t, 0, 2 Pi}]
画出的图是这样的:
这是在交互式操作中设定参数的代码:
\[Theta] =. Degree
\[Phi] =. Degree
a =.
b =.
Manipulate[
Show[ParametricPlot[{x =
Cos[t]*(1/
2 (Cos[\[Phi]]^2/b^2 + (Cos[\[Phi]]^2 Csc[\[Theta]]^2)/
a^2 + Sin[\[Phi]]^2/a^2 + (Csc[\[Theta]]^2 Sin[\[Phi]]^2)/
b^2 - Sqrt[
4 (-((Cos[\[Phi]] Csc[\[Theta]] Sin[\[Phi]])/
a^2) + (Cos[\[Phi]] Csc[\[Theta]] Sin[\[Phi]])/
b^2)^2 + (-(Cos[\[Phi]]^2/
b^2) + (Cos[\[Phi]]^2 Csc[\[Theta]]^2)/a^2 -
Sin[\[Phi]]^2/a^2 + (Csc[\[Theta]]^2 Sin[\[Phi]]^2)/
b^2)^2]))^(-1/2),
y = Sin[t]*(1/
2 (Cos[\[Phi]]^2/b^2 + (Cos[\[Phi]]^2 Csc[\[Theta]]^2)/
a^2 + Sin[\[Phi]]^2/a^2 + (Csc[\[Theta]]^2 Sin[\[Phi]]^2)/
b^2 + Sqrt[
4 (-((Cos[\[Phi]] Csc[\[Theta]] Sin[\[Phi]])/
a^2) + (Cos[\[Phi]] Csc[\[Theta]] Sin[\[Phi]])/
b^2)^2 + (-(Cos[\[Phi]]^2/
b^2) + (Cos[\[Phi]]^2 Csc[\[Theta]]^2)/a^2 -
Sin[\[Phi]]^2/a^2 + (Csc[\[Theta]]^2 Sin[\[Phi]]^2)/
b^2)^2]))^(-1/2)}, {t, 0, 2 Pi},
PlotRange -> {-0.1, 0.1}],
ParametricPlot[{x = 0.089 Cos[m], y = 0.053 Sin[m]}, {m, 0, 2 Pi},
PlotRange -> {-0.1, 0.1}, PlotStyle -> Gray]], {\[Theta], 0.0001,
90}, {\[Phi], 0, 90}, {a, 0.0001, 0.2}, {b, 0.0001, 0.2}]
这是在交互式操作中设定同样的参数画出的图(蓝色那个):
一个是正圆,一个不是,这是为什么?
2024年04月05日 03点04分 1
吧务
level 15

……经验规则:如果Mathematica在非常单纯的算术运算和画图上“出错”了,那么十有八九错的是你的公式。对于你的问题:
With[{θ = 90 Degree,
ϕ = 0 Degree,
a = 0.1,
b = 0.1}, {{x =
Cos[t]*(1/2 (Cos[ϕ]^2/b^2 + (Cos[ϕ]^2 Csc[θ]^2)/a^2 +
Sin[ϕ]^2/a^2 + (Csc[θ]^2 Sin[ϕ]^2)/b^2 -
Sqrt[4 (-((Cos[ϕ] Csc[θ] Sin[ϕ])/
a^2) + (Cos[ϕ] Csc[θ] Sin[ϕ])/
b^2)^2 + (-(Cos[ϕ]^2/b^2) + (Cos[ϕ]^2 Csc[θ]^2)/
a^2 - Sin[ϕ]^2/a^2 + (Csc[θ]^2 Sin[ϕ]^2)/
b^2)^2]))^(-1/2),
y = Sin[t]*(1/
2 (Cos[ϕ]^2/b^2 + (Cos[ϕ]^2 Csc[θ]^2)/a^2 +
Sin[ϕ]^2/a^2 + (Csc[θ]^2 Sin[ϕ]^2)/b^2 +
Sqrt[4 (-((Cos[ϕ] Csc[θ] Sin[ϕ])/
a^2) + (Cos[ϕ] Csc[θ] Sin[ϕ])/
b^2)^2 + (-(Cos[ϕ]^2/b^2) + (Cos[ϕ]^2 Csc[θ]^2)/
a^2 - Sin[ϕ]^2/a^2 + (Csc[θ]^2 Sin[ϕ]^2)/
b^2)^2]))^(-1/2)}}]
(* {{0.1 Cos[t], 0.1 Sin[t]}} *)
你那{x = 0.089 Cos[m], y = 0.053 Sin[m]}是哪来的?还有你把x=跟y=写到ParametricPlot里面去是想干啥(虽然这里倒也没引发什么问题吧)?
2024年04月06日 01点04分 2
两个的公式一摸一样啊,我都是复制粘贴的,所以怎么改啊[乖] 关于{x = 0.089 Cos[m], y = 0.053 Sin[m]} 我是 想调整θ ϕ a b让蓝色的曲线和关于m的灰色曲线重合 关于ParametricPlot,y-x是个椭圆或原曲线,我不会直接画隐函数(刚开始学),所以只能用这种方法了
2024年04月06日 04点04分
level 2
xxiaoliu 楼主
问题解决了,要用弧度制,不能用角度制。(虽然不明白为什么
2024年04月06日 05点04分 4
……那你第一段代码里的\[Theta] = 90 Degree;\[Phi] = 0 Degree是哪来的?
2024年04月06日 05点04分
等下,你该不会是以为开头写两行\[Theta] =. Degree; \[Phi] =. Degree后面就可以用角度制了吧?如果是的话,那么:不要想当然,“.”没你想象中那个功能,把Unset(=.)的自带帮助好好看看。
2024年04月06日 05点04分
1