|
综合了各位大侠的意见,对这个方程进行了分析,方程的解实部和虚部有一定的关系,所以选初值只选一个,这样就变成一重循环,运算起来速度会好一些。
- clc
- clear
- % a从3.3开始; % 保证 (exp(a)+exp(-a))^2-64*a^2>0
- % b=(exp(a)-exp(-a))^2*((exp(a)+exp(-a))^2-64*a^2)/64/(exp(a)+exp(-a))^2;
- % x0=[a,b];
- s=[];
- for a=3.3:.1:10
- b=(exp(a)-exp(-a))^2*((exp(a)+exp(-a))^2-64*a^2)/64/(exp(a)+exp(-a))^2;
- b=sqrt(b);
- x0=[a,b];
- y=fsolve(@myfun,x0);
- x=y(1)+y(2)*i;
- xx=x*i/sinh(x)-.25;
- if (abs(real(xx))<1e-5) && (abs(imag(xx))<1e-5)
- s=[s,x];
- end
- end
- % 剔除重复的解
- ind=diff(s);
- ss=s(1);
- for m=1:length(ind)
- if abs(ind(m))>1e-3
- ss=[ss,s(m+1)];
- end
- end
复制代码
子函数
- function f=myfun(x)
- f=[cos(x(2))*(exp(x(1))-exp(-x(1)))+8*x(2);
- sin(x(2))*(exp(x(1))+exp(-x(1)))-8*x(1)];
复制代码
运算结果(注意:b=-sqrt()暂时未考虑,lz可以算一下):
>> length(ss)
ans =
48
>> max(abs(ss*i/sinh(ss)-.25))
ans =
1.9185e-015 |
评分
-
1
查看全部评分
-
|