作业帮 > 数学 > 作业

求matlab跟mathematica高手解一个四元方程:

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:数学作业 时间:2024/06/16 08:26:59
求matlab跟mathematica高手解一个四元方程:
(X-230)*(x-X)+(Y-60)*(y-Y)==0,(X-230)^2+(Y-60)^2==100,x*((x - 230)) + y*((y - 60)) == 0, (x -270)^2 + (y - 680)^2 == 100
求matlab跟mathematica高手解一个四元方程:
Solve[(X - 230)*(x - X) + (Y - 60)*(y - Y) ==
0 && (X - 230)^2 + (Y - 60)^2 == 100 &&
x*((x - 230)) + y*((y - 60)) == 0 && (x - 270)^2 + (y - 680)^2 ==
100(*&&x\[Element]Reals&&y\[Element]Reals&&X\[Element]Reals&&Y\
\[Element]Reals*),{x,y,X,Y}]
这是mathematica的解法.结果中带i是因为那是这个方程的复数解.顺便这个方程好像只有复数解,不信限定一下求解域(就是我注解中的部分,你去掉星号和括号就行了)求解试试,求出来是个空集.
再问: 那为什么不限制就会有复数呢,就算是复数你随便拿一个简单的 用这种方式求为什么还不是整数呢?或者是说可不可以写一个这样的程序啊 太复杂了
再答: 因为mma默认就是在复数域下求解。“简单的”是什么概念?我试了下,把里面的所有常数改成1: Solve[(X - 230)*(x - X) + (Y - 1)*(y - Y) == 0 && (X - 1)^2 + (Y - 1)^2 == 100 && x*((x - 1)) + y*((y - 1)) == 0 && (x - 1)^2 + (y - 1)^2 == 1(*&&x\[Element]Reals&&y\[Element]Reals&&X\[Element]Reals&&Y\ \[Element]Reals*), {x, y, X, Y}] 就得到实数解了。话说方程有没有实数解其实也和简不简单没关系吧,最简单的x^2+x+1==0,够简单吧,还不是只有复数解。解是否含有虚数取决于方程本身的性质,不是改解法就能解决的。Solve已经是mma的解方程专用指令了,这个代码也很简单了吧——你别看\[Element]好像很复杂,这个在mma里要输入也就是esc键,再“el”,再esc键,很简单的。