关于用MATLAB求解隐函数的问题

2024-12-21 23:21:53
推荐回答(2个)
回答1:

你是要求解析解还是数值解,如果你的Matlab装了Symbolic Toolbox的话,Matlab可以直接求解析解,如下:
solve('(a+b*cos(c)-d*cos(e))/cos(x)=(f+b*sin(c)-d*sin(e))/sin(x)', 'x')

ans =

-(log((a*exp(c*i)*exp(e*i) + b*exp(2*c*i)*exp(e*i) - d*exp(c*i)*exp(2*e*i) + f*exp(c*i)*exp(e*i)*i)/(b*exp(e*i) - d*exp(c*i) + a*exp(c*i)*exp(e*i) - f*exp(c*i)*exp(e*i)*i))*i)/2

用subs函数可以将solve接出来的解析解里面的变量用数字替换掉,然后得到数值解。

给你举个简单的例子,求a*x=b的解,先求解析解,然后用a=2,b=1代入求出数值解:
>> solution=solve('a*x=b', 'x')

solution =

b/a

>> num_solution = subs(solution, '[a,b]', [2 1])

num_solution =

1/2

>> num_solution = subs(num_solution)

num_solution =

0.5000

回答2:

for omega=0:pi/100:2*pi;
F=10;
z=pi;
s=solve((y-F/sqrt(((1-3./8*y^2)^2*z^2-omega^2)^2+(0.15*z)^2)),'y');
end
上式中f(omega,y)=0是y的隐函数,用循环语句每次只解出第一次的y或者s值,其余的解都说是没有明确的函数可解。敬请哪位大师给出正确解法。十分感谢!