Forgot password?
 Create new account
View 213|Reply 4

这个程序为什么只能正确运行一次?

[Copy link]

123

Threads

463

Posts

3299

Credits

Credits
3299

Show all posts

TSC999 Posted at 2022-5-8 20:08:56 |Read mode
Last edited by TSC999 at 2022-5-17 20:58:00下面是一个证明两线段平行的简单程序,程序是用 mathematica 写的。

程序中 g 和 h 是两个自由变量,其余各点的复数坐标都是 g 、h 的函数。此程序中需要求出 g 的共轭复数表达式,

为此由已知条件 BE // CF 和 EF 平行于实轴列出一个方程,解这个方程可以得到 的表达式,并且首次运行程序可以

得到正确的结果。但是不知什么原因,再次运行程序时就出错了。要想避免这个毛病,只能把首次运行结果补充到

程序中去,同时把解方程语句注销掉。但是这办法显得笨笨的,也让读者不解。

有什么办法解决?

今天能上传图片了。

证明.png

解方程这一段程序有问题,但是哪里出了毛病?找不出来:

  1. Clear["Global`*"];
  2. \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 0; \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1; e = (g (1/2 - I h))/\!\(\*OverscriptBox[\(g\), \(_\)]\);
  3. \!\(\*OverscriptBox[\(e\), \(_\)]\) = ((I h + 1/2) \!\(\*OverscriptBox[\(g\), \(_\)]\))/g;
  4. f = (2 I h g + g - 2 I h - 2 \!\(\*OverscriptBox[\(g\), \(_\)]\) + 1)/(2 - 2 \!\(\*OverscriptBox[\(g\), \(_\)]\));
  5. \!\(\*OverscriptBox[\(f\), \(_\)]\) = (-2 g + 2 I h - 2 I h \!\(\*OverscriptBox[\(g\), \(_\)]\) + \!\(\*OverscriptBox[\(g\), \(_\)]\) + 1)/(2 - 2 g);
  6. Simplify@Solve[{(e - b)/(\!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (f - c)/(\!\(\*OverscriptBox[\(f\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)), (e - f)/(\!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(f\), \(_\)]\)) == 1}, {\!\(\*OverscriptBox[\(g\), \(_\)]\)}]
Copy the Code

701

Threads

110K

Posts

910K

Credits

Credits
94172
QQ

Show all posts

kuing Posted at 2022-5-17 21:51:55
复制你最后给出的这段程序,运行没问题呀,输出

  1. \!\(\*OverscriptBox["g", "_"]\) -> (g - 2 I g h)/(-1 + 2 g - 2 I h)
Copy the Code


运行多次都一样。

Comment

噢,那有可能是我的 mathematica 版本低了? 我是 9.0 版的。  Posted at 2022-5-18 10:25

701

Threads

110K

Posts

910K

Credits

Credits
94172
QQ

Show all posts

kuing Posted at 2022-5-18 14:09:14
我的 mathematica 版本更低,我还在用 7.0

123

Threads

463

Posts

3299

Credits

Credits
3299

Show all posts

 Author| TSC999 Posted at 2022-5-25 09:06:03
kuing 发表于 2022-5-18 14:09
我的 mathematica 版本更低,我还在用 7.0
问题找出来了。这一段小程序如果单独运行,多次运行都正常。但是如果之前运行了一个有关 g 的有毛病的程序,这段小程序就 “中毒”  了,只能运行一次。按说程序前面都加了一个删除全部变量的指令 Clear["Global`*"];,相当于打了新冠病毒防疫针,但是它还是感染了 “奥密克戎”,不知道为啥这条 Clear["Global`*"]; 指令没有起作用?

手机版Mobile version|Leisure Math Forum

2025-4-20 22:02 GMT+8

Powered by Discuz!

× Quick Reply To Top Return to the list