这个多解超越方程可以用什么方法呢。
7 views (last 30 days)
Show older comments
function f=fun(E)
char E;
a=0.8;b=0.7;v0=8.1;e=2.71828;m=1;h=1;
k=(-2*m*E/(h^2))^(1/2);
l=(-2*m*(E+v0)/(h^2))^(1/2);
A=((l-k)*(e^((l+k)*a)-e^((l-k)*a)))/((l+k)*((((l-k)/(l+k))^2)*e^((-l-k)*a)-e^((l+k)*a)));
f=((l+k)*e^((l-k)*(2*a+b)))/((l-k)*e^((-l-k)*(2*a+b)))-((k-l)*e^((k+l)*(a+b))-A*(k+l)*e^((k+l)*(a+b)))/((k-l)*e^((k-l)*(a+b))-A*(k+l)*e^((k-l)*(a+b)));
end
求E在[-v0,0]范围内的数值解
——用solve解出来是
solve(@fun,E)
Warning: Explicit solution could not be found.
> In solve at 81
ans =
[ empty sym ]
——用fsolve没办法得到多解
——想用画图看,但出来的图是{空白的}!!曲线不见了
所以不知道该怎么办了,求大神们支招
0 Comments
Accepted Answer
diwajab
on 22 Nov 2022
把 char E; 去掉。用fsolve可以求解。
应为值域绝大部分是复数,所以不能作图。
fsolve搜索时,需要提供较好的初值。
fsolve(@fun,-7)
ans = -6.9905 + 0.0000i
fsolve(@fun,-0.1)
ans = -0.0400 - 0.0000i
可以根据值域做出2D图(有经过原点的,同时也发现少部分是实数。x轴上的点)。
根据自变量与值域的模做出2D图可以明显发现只有两个解。实部、虚部都为0,模才为0.
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!