hrefspace

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

mathematica 用什么指令能把复数表达式的实部虚部分开

[复制链接]

275

主题

454

帖子

1014

积分

大司空

Rank: 5Rank: 5

积分
1014
发表于 2023-10-3 08:23:15 | 显示全部楼层 |阅读模式
对于一个复数字母表达式(不是数字表达式哈),用什么指令能把它的实部或虚部分开?

本帖子中包含更多资源

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

x
回复

使用道具 举报

0

主题

181

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:23:52 | 显示全部楼层
你使劲上传图片,郭先强会生气的
回复

使用道具 举报

0

主题

186

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:23:58 | 显示全部楼层
用共轭函数,还要假定abcd都是实数。我觉得你这样表示隐含了这个条件而mathematica不知道。
Simplify[(#+Conjugate[#])/2&[(a+b I)/(c+d I)],Element[{a,b,c,d},Reals]]
回复

使用道具 举报

0

主题

171

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-10-3 08:24:13 | 显示全部楼层
在Mathematica里面,一切 都是表达式,一切表达式又都是 可以用树来表示。所以你的问题完全可以用树的一些操作函数来完成。

于是查看一下树形结构
  1. ComplexExpand[(a + b I)/(c + d I)] // TreeForm
复制代码

由此可以得知 ComplexExpand[(a + b I)/(c + d I)]的输出是一个Plus表达式,即该表达式的Head是Plus,参数是 三个子表达式。对于虚部,我们要取的是最后一个子表达式,所以只需Last即可。而该子表达式是带有I的,进一步递归之,取这个Times表达式的最后元素,所以最终答案就是
  1. ComplexExpand[(a + b I)/(c + d I)] // Last // Last
复制代码

==================================================
基于以上基础概念的认识,可以玩些花样:
取实部:
  1. Take[ComplexExpand[(a + b I)/(c + d I)], 2]
复制代码
取虚部:
  1. Take[ComplexExpand[(a + b I)/(c + d I)], -1, -1]
复制代码
回复

使用道具 举报

0

主题

174

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:25:00 | 显示全部楼层
居然把函数次序倒过来直接出结果了。
  1. ComplexExpand[Re[(a + b I)/(c + d I)]]
复制代码
回复

使用道具 举报

0

主题

181

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:25:19 | 显示全部楼层
然后…………Mathematica默认变量是实数?因为a、b、c、d替换成复数形式的话结果其实很美。
  1. (FullSimplify[#/.I->0]+FullSimplify[#-(#/.I->0)])&[ComplexExpand[(a+b I)/(c+d I)/.{a->aR+aI I,b->bR+bI I,c->cR+cI I,d->dR+dI I}]]
复制代码
回复

使用道具 举报

0

主题

195

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:25:51 | 显示全部楼层
下面的方法也很有用:
由 \( z = (a + b\,{i})/(c + d\,{i}) \)  知 \(z\) 的共轭复数为 \( \overline{z}=  (a - b\,{i})/(c - d\,{i}) \)
实部\( =(z +\overline{z})/2 \);
虚部\( =(z -\overline{z})/2 \);

\(z =\) 实部 + 虚部
回复

使用道具 举报

0

主题

184

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:26:11 | 显示全部楼层
ComplexExpand[ReIm[(a + b I)/(c + d I)]]
这个命令,可以把实部与虚部分开来,都当成实数
回复

使用道具 举报

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

本版积分规则

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

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

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

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