uk702 发表于 2022-12-1 17:48:30

Mathematica 代码求助

求助高人,如下的代码:

ClearALl["Global`*"];
a = x I; a' = -a; b = b' = 0; c = c' = x; d = x (1 + I);
d' = x (1 - I); e = x + y I; e' = x - y I;
Duichendian := (a' b - a b' + p' (a - b))/(a' - b');
Duichendian' := (a b' - a' b + p (a' - b'))/(a - b);
k := (a - b)/(a' - b');
g = Duichendian; g' = Duichendian';
sol = Solve[{k == k, k == -1}, {f, f'}];
Print["f=", f /. Last, ", f'=", f' /. Last];

为什么第一次运行显示:
f=(((1-I) ((1+I) x^3 y-x^2 y^2-(1+I) x^2 y (0&)+x y^2 (0&)+(1+I) x^2 y x^\-x y^2 x^\))/(4 x^2 y-2 x y^2-2 x^2 (0&)+2 x y (0&)-y^2 (0&))), f'=-((-2 x^3 y+(1+I) x^2 y^2+2 x^3 (0&)-4 x^2 y (0&)+(2-I) x y^2 (0&)-2 x^2 y x^\+(1+I) x y^2 x^\+2 x^2 (0&) x^\-2 x y (0&) x^\+y^2 (0&) x^\)/(4 x^2 y-2 x y^2-2 x^2 (0&)+2 x y (0&)-y^2 (0&)))

再运行一次则显示:
f=((1-I) x ((1+I) x-y))/(2 x-y), f'=-(((1+I) x ((-1+I) x+y))/(2 x-y))

Mathematica 版本:12.3
平台:win10

uk702 发表于 2022-12-1 18:07:26

换成上划线也是一样的:

uk702 发表于 2022-12-1 18:45:18

经查,将 b = b' = 0; c = c' = x; 换成 b' = b = 0; c' = c = x; 就好使了。

即改成:
ClearAll["Global`*"];
a = x I; a' = -a; b' = b = 0; c' = c = x; d = x (1 + I);
d' = x (1 - I); e = x + y I; e' = x - y I;
Duichendian := (a' b - a b' + p' (a - b))/(a' - b');
Duichendian' := (a b' - a' b + p (a' - b'))/(a - b);
k := (a - b)/(a' - b');
g = Duichendian; g' = Duichendian';
sol = Solve[{k == k, k == -1}, {f, f'}];
Print["f=", f /. Last, ", f'=", f' /. Last];

那位达人能告诉我是怎么回事吗?

王守恩 发表于 2022-12-1 18:45:25

uk702 发表于 2022-12-1 18:07
换成上划线也是一样的:

我这里是这样的:

1,第一次运行,与你的"第一次运行显示"相同

2,对(1)再运行一次,与你的"再运行一次则显示"相同

3,对“第一次运行显示”作“化简”,也可以有“再运行一次则显示”

也有可能是需要对“文件”作“退出”“保存”“重启”。

我不行,想起网友 Mathematica是高手,可惜跑了。




Ickiverar 发表于 2022-12-12 13:39:45

不要使用附标(下标、上横线、撇)定义变量。
因为那些东西根本不是变量,而是表达式。
你会遇到各种各样神奇的bug,没人想解决这些问题。

wayne 发表于 2022-12-12 15:49:14

基础语法问题 一大堆,不止四处。我就不一一罗列了。
感觉最好还是 先快速走一遍 速成教程
页: [1]
查看完整版本: Mathematica 代码求助