24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 3581  |  回复: 5

斯蒂芬啊

新虫 (初入文坛)

[求助] 如何用matlab对函数表达式去除虚部已有2人参与

请问用matlab在求解函数表达式时,计算得到的表达式运行结果出现虚部,要如何去除?这是我计算用的的代码,想要求通过eq1和eq2求出 x 对 j 的函数表达式,而且保证 x 为正实数。
>> clear
>> syms x y j
>> eq1=-6.4e7*x+5.6e3*y-2e-11*x*y+j/9.6e-22;                %通过两条关系式求解 x 对 j 的表达式
eq2=3.1e7*x-6420*y+3*j/9.6e-22;
>> [x,y]=solve(eq1,eq2);
>>  vpa(x,5)                        %保留5位小数

ans =

- 5.0403e13*j - 0.00010355*(2.3694e35*j^2 + 5.4375e36*j + 3.415e36)^(1/2) - 1.9135e14
   0.00010355*(2.3694e35*j^2 + 5.4375e36*j + 3.415e36)^(1/2) - 5.0403e13*j - 1.9135e14
回复此楼

» 收录本帖的淘帖专辑推荐

程序

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
CODE:
a = sym('a','real');
b = sym('b','real');
c = sym('c','real');
(a+b*1i)*c+1i

ans =
c*(a + b*i) + i

CODE:
a = sym('a','real');
b = sym('b','real');
c = sym('c','real');
expand(real((a+b*1i)*c+1i))

ans =
a*c

» 本帖已获得的红花(最新10朵)

2楼2016-08-24 21:28:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

斯蒂芬啊

新虫 (初入文坛)

送红花一朵
引用回帖:
2楼: Originally posted by FMStation at 2016-08-24 21:28:22
a = sym('a','real');
b = sym('b','real');
c = sym('c','real');
(a+b*1i)*c+1i

ans =
c*(a + b*i) + i



a = sym('a','real');
b = sym('b','real');
c = sym('c','real');
expand(real((a+b* ...

还是不行啊,我现在最主要的问题是对下面的函数 a 做出 j (0.01,,100)的图像,因为存在虚部,一直做不出来...
>> clear
>> a = sym('a','real');
b = sym('b','real');
j = sym('j','real');
>> a=0.0002071*(6.0273e53*j + ((6.0273e53*j - 9.869e53)^2 - 1.0*(1.6667e35*j + 1.0722e36)^3)^(1/2) - 9.869e53)^(1/3) - 1.0081e14*j + 2.0161e-22*((6.0273e53*j + ((6.0273e53*j - 9.869e53)^2 - 1.0*(1.6667e35*j + 1.0722e36)^3)^(1/2) - 9.869e53)^(1/3) + (1.6667e35*j + 1.0722e36)/(6.0273e53*j + ((6.0273e53*j - 9.869e53)^2 - 1.0*(1.6667e35*j + 1.0722e36)^3)^(1/2) - 9.869e53)^(1/3) - 1.3057e18)^2 + (3.4517e31*j + 2.2205e32)/(6.0273e53*j + ((6.0273e53*j - 9.869e53)^2 - 1.0*(1.6667e35*j + 1.0722e36)^3)^(1/2) - 9.869e53)^(1/3) - 2.7041e14;
>> ezplot(j,a)
警告: 复数 X 和/或 Y 参数的虚部已忽略
> In ezplot>ezparam (line 392)
  In ezplot (line 165)
  In sym/ezplot (line 67)
3楼2016-08-25 09:59:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

斯蒂芬啊

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by FMStation at 2016-08-24 21:28:22
a = sym('a','real');
b = sym('b','real');
c = sym('c','real');
(a+b*1i)*c+1i

ans =
c*(a + b*i) + i



a = sym('a','real');
b = sym('b','real');
c = sym('c','real');
expand(real((a+b* ...

即使加上您回答的代码,也不行。依然警告有虚部的存在...
>> clear
>> a = sym('a','real');
b = sym('b','real');
j = sym('j','real');
>> a=0.0002071*(6.0273e53*j + ((6.0273e53*j - 9.869e53)^2 - 1.0*(1.6667e35*j + 1.0722e36)^3)^(1/2) - 9.869e53)^(1/3) - 1.0081e14*j + 2.0161e-22*((6.0273e53*j + ((6.0273e53*j - 9.869e53)^2 - 1.0*(1.6667e35*j + 1.0722e36)^3)^(1/2) - 9.869e53)^(1/3) + (1.6667e35*j + 1.0722e36)/(6.0273e53*j + ((6.0273e53*j - 9.869e53)^2 - 1.0*(1.6667e35*j + 1.0722e36)^3)^(1/2) - 9.869e53)^(1/3) - 1.3057e18)^2 + (3.4517e31*j + 2.2205e32)/(6.0273e53*j + ((6.0273e53*j - 9.869e53)^2 - 1.0*(1.6667e35*j + 1.0722e36)^3)^(1/2) - 9.869e53)^(1/3) - 2.7041e14;
>> b= expand(real(a));
>> ezplot(j,b)

警告: 复数 X 和/或 Y 参数的虚部已忽略
> In ezplot>ezparam (line 392)
  In ezplot (line 165)
  In sym/ezplot (line 67)
4楼2016-08-25 10:03:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

>> v = [1+i; 2; 3]
v =
                          1 +                     1i
                          2                        
                          3                        

>> v(v == real(v))
ans =
     2
     3
5楼2016-08-25 12:37:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

【答案】应助回帖

1. matlab中 i 和 j 都可能被视为虚数单位,有歧义的场合避免使用;

2 这样的结果在实际应用中大多数是无意义的,不值得算下去
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
6楼2016-08-27 15:06:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 斯蒂芬啊 的主题更新
信息提示
请填处理意见