作业帮 > 数学 > 作业

如何用Matlab解方程

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/11/07 22:38:07
如何用Matlab解方程
'real(1./(1./zad+1./(i*w*c2))+i*w*l2)=1500','w=21.4*10^6','imag(1./(1./zad+1./(i*w*c2))+i*w*l2)=0'
方程中有好几个变量,
zad w c2 l2
w已知,剩下3个里应该还有两个已知的吧?
再问: w=21.4*10^6;ca=2*10^(-12);zad=100+1./(i*w*ca);
再答: c2 l2 都要求解?
再问: 嗯,两个未知数。
再答: 程序如下: function test_solve_complex w = 21.4*10^6; ca = 2*10^(-12); zad = 100+1/(1j*w*ca); [R, fval] = fsolve(@(x)feqns(x, zad, w), [3 2]) CL = real(R) function Y = feqns(X, zad, w) Y = zeros(3, 1); Y(1) = 1/(1/zad+1/(1j*w*X(1)))+1j*w*X(2)-1500; Y(2) = imag(X(1)); Y(3) = imag(X(2)); 初步发现,结果对初值很敏感,使得解无意义。尤其是未知数c2,程序中即X(1)。 感觉可能是由于数值的数量级相差悬殊导致的误差。 如果能提供一个对c2和l2的数量级的估计,结果精度还有可能提高。