hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 1300|回复: 1

为什么这个程序载入后首次运行正确,再运行就出错呢?

[复制链接]

523

主题

523

帖子

1599

积分

大司空

Rank: 5Rank: 5

积分
1599
发表于 2023-10-3 08:25:39 | 显示全部楼层 |阅读模式
下面是一个证明两线段平行的简单程序,程序是用 mathematica 写的。

程序中 g 和 h 是两个自由变量,其余各点的复数坐标都是 g 、h 的函数。此程序中需要求出 g 的共轭复数表达式,为此由已知条件 BE // CF 和 EF 平行于实轴列出一个方程,解这个方程可以得到 \( \overline{g} \)的表达式,并且首次运行程序可以得到正确的结果。

但是不知什么原因,再次运行程序时就出错了。要想避免这个毛病,只能把首次运行结果补充到程序中去,同时把解方程语句注销掉。但是这办法显得笨笨的,也让读者不解。

有什么办法解决?



解方程这一段程序有问题:
  1. Clear["Global`*"];\!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 0; \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1; e = (g (1/2 - I h))/\!\(\*OverscriptBox[\(g\), \(_\)]\); \!\(\*OverscriptBox[\(e\), \(_\)]\) = ((I h + 1/2) \!\(\*OverscriptBox[\(g\), \(_\)]\))/g;f = (2 I h g + g - 2 I h - 2 \!\(\*OverscriptBox[\(g\), \(_\)]\) + 1)/(2 - 2 \!\(\*OverscriptBox[\(g\), \(_\)]\)); \!\(\*OverscriptBox[\(f\), \(_\)]\) = (-2 g + 2 I h - 2 I h \!\(\*OverscriptBox[\(g\), \(_\)]\) + \!\(\*OverscriptBox[\(g\), \(_\)]\) + 1)/(2 - 2 g);Simplify@Solve[{(e - b)/(\!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (f - c)/(\!\(\*OverscriptBox[\(f\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)), (e - f)/(\!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(f\), \(_\)]\)) == 1}, {\!\(\*OverscriptBox[\(g\), \(_\)]\)}]
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

184

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:26:17 | 显示全部楼层
问题找出来了。下面那一小段程序如果单独运行,多次运行都正常。但是如果之前运行了一个有关 g 的有毛病的程序,这段小程序就 “中毒”  了,只能运行一次。按说程序前面都加了一个删除全部变量的指令 Clear["Global`*"];,相当于打了新冠病毒防疫针,但是它还是被感染了 “奥密克戎”,不知道为啥这条 Clear["Global`*"]; 指令没有起到作用?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 15:39 , Processed in 0.066396 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表