matlab求复数立方根函数代码怎么写?

qq_34522043 2017-10-19 10:57:28
写一个MATLAB函数来找一个复数的立方根
通常:一个复数z: z=z1+ i z2, i^2=-1
Z1和z2是实数, i是虚数
在matlab, 可以用x或者y构成z: z=complex(z1, z2)
然后, z1=real(z), z2=imag(z)

给出一个复数a=a1+i a2, 我们来求解根: f(z;a)=(z^3) - a=0
你用这个函数来计算a的立方根, 使用牛顿法来求解两个变量
然后 z=[z1; z2] a=[a1; a2]
来表示z 和 a=a1 + i a2
然后我们用两个实数z1和z2来写f(z)
所以 f(z;a)=g1(z1, z2; a)+i g2(z1, z2;a)=0
G1()和g2()是实数值函数。 如果f(z)=0, 那g1(z1, z2)和g2(z1, z2)都必须等于0因为实数部分和虚数部分是分开的
所以: G(z;a)=G(z1, z2; a)=[g1(z1, z2;a); g2(z1, z2; a)]
然后: G(z;a)=0等价于f(z;a)=(z^3) - a=0
第一件事要做的就是用g1(z1, z2; a)和g2(z1, z2;a)来创建函数Gcubrt(z,a),然后在matlab实现。
然后来计算Jacobian: J(z)=G‘(z)=G’(z1, z2)
然后在matlab创建矩阵值函数 Jcubrt(z)
然后用这两个函数, 来创建一个matlab函数,用以下内容作为前三行:
function [z, niter]=ComCubrt(a)
avec=[real(a); imag(a)]; %Represent the complex number a as the vector avec
zvec=avec; %Just make a the initial guess for its cube root

这里的a是复数,z是立方根的一个。参数niter是需要迭代的次数。 ComCubrt(a)为两个变量用牛顿法从a找到z。
ComCubrt的最后一行是: z=complex(zvec(1), zvec(2));
所以你会返回一个复数z作为你的答案

不能超过25次迭代
用你的函数来测试a=3+4i, 10-5i, -1+2i
...全文
547 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧