Wolfram mathematica 利用条件求虚部和实部

Wolfram mathematica 利用条件求虚部和实部,wolfram-mathematica,mathematica-8,Wolfram Mathematica,Mathematica 8,我用Solve在Mathematica中找到了一个方程的解(我在这里发布的原因是没有人能在Mathematica stack中回答我的问题)。这个解叫做s,它是两个变量v和ro的函数。我想找到s的虚部和实部,我想利用v和ro是实部的信息,它们在下面的区间内: $0.02

我用Solve在Mathematica中找到了一个方程的解(我在这里发布的原因是没有人能在Mathematica stack中回答我的问题)。这个解叫做s,它是两个变量v和ro的函数。我想找到s的虚部和实部,我想利用v和ro是实部的信息,它们在下面的区间内:

$0.02
ClearAll["Global`*"]
d = 1; l = 100; k = 0.001; kk = 0.001;ke = 0.0014;dd = 0.5 ; dr = 0.06; dc = 1000; p = Sqrt[8 (ro l /2 - 1)]/l^2;

m = (4 dr + ke^2 (d + dd)/2) (-k^2 + kk^2) (1 - l ro/2) (d - dd)/4 - 
I v p k l (4 dr + ke^2 (d + dd)/2)/4 - v^2 ke^2/4 + I v k dr l p/4;
xr = 0.06/n; 
tr = d/n;

dp = (x (v I kk/2 (4 dr + ke^2 (d + dd)/2) - I v kk ke^2 (d - dd)/8 - dr l p k kk (d - dd)/4) + y ((xr I kk (ro - 1/l) (4 dr + ke^2 (d + dd)/2)) - I v kk tr ke^2 (1/l - ro/2) + I dr xr 4 kk (1/l - ro/2)))/m;
a = -I v k dp/4 - I xr y kk p/2 + l ke^2 dp p (d + dd)/8 + (-d + dd)/4 k kk x + dr l p dp;
aa = -v I kk dp/4 + xr I y k p/2 - tr y ke^2 (1/l - ro/2) - (d - dd) x kk^2/4 + ke^2 x (d - dd)/8;
ca = CoefficientArrays[{x (s + ke^2 (d + dd)/2) + 
  dp (v I kk - l (d - dd) k p kk/2) + y (tr ro ke^2) - (d - 
     dd) ((-kk^2 + k^2) aa - 2 k kk a)/(4 dr + ke^2 (d + dd)/2) == 0, y (s + dc ke^2) + n x == 0}, {x, y}];
mat = Normal[ca];
matt = Last@mat;
sha = Solve[Det[matt] == 0, s];
shaa = Assuming[v < 100 && v > 40 && ro < 1 && ro > 0.03,Simplify[%]];
reals = Re[shaa];
ims = Im[shaa];
Solve[reals == 0, ro]
ClearAll[“全局”*]
d=1;l=100;k=0.001;kk=0.001;ke=0.0014;dd=0.5;dr=0.06;dc=1000;p=Sqrt[8(ro l/2-1)]/l^2;
m=(4dr+ke^2(d+dd)/2(-k^2+kk^2)(1-lro/2)(d-dd)/4-
I v p k l(4 dr+ke^2(d+dd)/2)/4-v^2 ke^2/4+I v k dr l p/4;
xr=0.06/n;
tr=d/n;
dp=(x(v I kk/2(4 dr+ke^2(d+dd)/2)-I v kk^2(d-dd)/8-dr l p k kk(d-dd)/4)+y((xr I kk(ro-1/l)(4 dr+ke^2(d+dd)/2))-I v kk tr ke^2(1/l-ro/2)+I dr xr 4 kk(1/l-ro/2))/m;
a=-I v k dp/4-I xr y kk p/2+l ke^2 dp p(d+dd)/8+(-d+dd)/4 k kk x+dr l p dp;
aa=-vikkdp/4+xriykp/2-tryke^2(1/l-ro/2)-(d-dd)xkk^2/4+ke^2x(d-dd)/8;
ca=系数[{x(s+ke^2(d+dd)/2)+
dp(v I kk-l(d-dd)k p kk/2)+y(tr ro ke^2)-(d-
dd)((-kk^2+k^2)aa-2kkka)/(4dr+ke^2(d+dd)/2)==0,y(s+dc-ke^2)+nx==0},{x,y});
mat=正常[ca];
马特=Last@mat;
sha=求解[Det[matt]==0,s];
shaa=假设[v<100&&v>40&&ro<1&&ro>0.03,简化[%];
reals=Re[shaa];
ims=Im[shaa];
求解[reals==0,ro]

但它没有给出答案。有人能帮忙吗?我真的很感激任何解决这个问题的方法。

我一直运行您的代码

mat = Normal[ca]
sha = Solve[Det[matt] == 0, s]
看看结果

有很多非常小的浮点系数,非常小,我怀疑它们中的大多数现在只是浮点噪声。Mathematica认为0.1仅为1个有效精度数字所知,现在您的mat结果可能只不过是零个正确数字

我继续往下讲到这一点

mat = Normal[ca]
sha = Solve[Det[matt] == 0, s]
如果你看sha的价值,你会发现它是s->东西,我认为这根本不是你所认为的。Mathematica从Solve返回“规则”,而不仅仅是表达式

如果我把那行改成

sha = s/.Solve[Det[matt] == 0, s]
那么我猜这更接近你所想象的你想要的

我继续

shaa = Assuming[40<v<100 && .03<ro<1, Simplify[sha]];
reals = Re[shaa]
我点击ShowAll查看它的全部扩展值。大约32个大屏幕上都是你的表情

那里面有几百个

Arg[-1. + 50. ro]
如果我理解你的意图,我相信所有这些都简化为0。如果这是正确的话

reals=reals/.Arg[-1. + 50. ro]->0
将real的大小减少到大约20个大屏幕全屏

但是仍然有数百个Sqrt[-1.+50.ro)^2]和(-1.+50.ro)^2^(1/4)的例子构成了您的real。不幸的是,我希望您的巨大表达式太大,并且需要太长的时间来简化假设,以使其能够切实有效

也许有更多的替代品可以诱使它大大简化你的现实,而不会在现实与复杂之间犯任何错误,但是你必须非常小心处理这些事情,因为用户在处理复杂的数字、根、幂和函数时犯错误是很常见的,最终会得到错误的结果,这可能会让你的问题发展到可以解决的程度

Solve[reals == 0, ro]
给你一个有意义的答案

这应该给你一些想法,你需要仔细思考和工作