用matlab怎么把这个复数函数画出来跟下面一样,k=100000,m=20,c=46000,w是变量

如题所述

k=1e5;m=20;c=46e3;
w=0:1000;
x=real(1./(k-m*w.^2+1i*c));
y=imag(1./(k-m*w.^2+1i*c));
plot(x,y)追问

谢谢,如果像上图一样,某条直线p=-0.5e-5穿过圆,请问怎么求那两个交点坐标对应w的值,万分感激

追答

从这幅图中应该得不到两个交点处w的值,如果想得到应该只能解方程了,用Rs(w)的实部等于-0.5e-5来解出w的值

追问

syms w;
f=(1e5-20*w^2)/((1e5-20*w^2)^2+46e3^2);有理化后的式子,
w=solve('f=-0.5e-5','w');
为什么没有解

追答

这个方程有两个解,用下面两条语句得到

[x,Fval,exitflag]=fsolve(@(w)((1e5-20*w^2)/((1e5-20*w^2)^2+46e3^2)+0.5e-5),80,optimset('TolFun',1e-25))

[x,Fval,exitflag]=fsolve(@(w)((1e5-20*w^2)/((1e5-20*w^2)^2+46e3^2)+0.5e-5),200,optimset('TolFun',1e-25))

其中的80和200是估值,其实用Mathematica软件很容易解这个问题的

前面matlab代码中的估值80和200我还是从Mathematica中解出的74和120之后取的,要不然取多少我也没谱,估值取得不一样,结果是不一样的

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答