首页 热点资讯 义务教育 高等教育 出国留学 考研考公

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

发布网友 发布时间:2022-04-24 03:42

我来回答

2个回答

热心网友 时间:2023-10-25 15:11

你是要求解析解还是数值解,如果你的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

热心网友 时间:2023-10-25 15:11

你是要求解析解还是数值解,如果你的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

热心网友 时间:2023-10-25 15:11

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值,其余的解都说是没有明确的函数可解。敬请哪位大师给出正确解法。十分感谢!追答用vpasolve 或 fsolve都说是句子错误,解不了。

热心网友 时间:2023-10-25 15:11

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值,其余的解都说是没有明确的函数可解。敬请哪位大师给出正确解法。十分感谢!追答用vpasolve 或 fsolve都说是句子错误,解不了。

热心网友 时间:2023-10-25 15:11

你是要求解析解还是数值解,如果你的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

热心网友 时间:2023-10-25 15:11

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值,其余的解都说是没有明确的函数可解。敬请哪位大师给出正确解法。十分感谢!追答用vpasolve 或 fsolve都说是句子错误,解不了。

热心网友 时间:2023-10-25 15:11

你是要求解析解还是数值解,如果你的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

热心网友 时间:2023-10-25 15:11

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值,其余的解都说是没有明确的函数可解。敬请哪位大师给出正确解法。十分感谢!追答用vpasolve 或 fsolve都说是句子错误,解不了。

热心网友 时间:2023-10-25 15:11

你是要求解析解还是数值解,如果你的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

热心网友 时间:2023-10-25 15:11

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值,其余的解都说是没有明确的函数可解。敬请哪位大师给出正确解法。十分感谢!追答用vpasolve 或 fsolve都说是句子错误,解不了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com