【求助】超越方程的fsolve解法
我用matlab的fsolve函数求解三元超越方程式,但得到的解与文献不同,困扰了几个月。 我在其他论坛上也求助过,但一直没找到解决方案,现在课题都排满了。 附上代码和公式。 请帮助坦率的画笔。 谢谢你。 sx1、sx2、tc是未知数,在程序执行时求解部分输出的exitflag0。
主程序、主程序、主程序、主程序
clear all; clc; 全部关闭;
global js;
全球q;
Tc=[];
Sx1=[];
Sx2=[];
%q_par=[0.9];
%q_par=[1.065];
q_par=[2.0];
js_par=2.0:-0.1:0;
n0=[ unifrnd (0,0.4 ) unifr nd ) 0,0.4 ) 1.5];
for q=q_par
js=js_par(1;
options=optimset('display ',' on ' );
[ n (1, ),fval,exitflag ) ]=fsolve ) @myfun,n0,options
forI=2:length(js_par )
js=js_par(I;
[n(I, ),fval,exitflag ) ]=fsolve ) myfun,n ) I-1, ),options
结束
TC=[ TCN (:3 ) ]
sx1=[ sx1n (:1 ) ]
sx2=[ sx2n (:2 ) ]
结束
plot(TC,js_par ) )。
str=[];
forI=1:length(q_par ) )
str=strvcat(str,num2str ) q_par(I );
结束
Egend(str,4 );
xlabel(TC/ja ) )。
ylabel(js/ja ) )。
函数(函数(函数(函数)函数)函数)函数)
函数y=myfun (n ) )。
全球js
全球q
syms tc sx1 sx2
je=1.0;
qs=2.0;
k=1.0;
sx1=n(1;
sx2=n(2;
TC=n(3;
w31=sqrt (QS ^ 24 * js * QS * sx1je * q * sx2 );
W32=sqrt (q ^ 24 * q * sx2je * QS * sx1je * QS * sx1 );
y(1)=QS/(2*w31 ) Tanh ) w31/)2*k*TC ) )-sx1;
y(2)=q/)2*w32 ) tanh ) w32/)2*k*TC ) )-sx2;
n=[2*w31*coth(w31/)2*k*TC ) )-4*js,-je,0;
-je,2*w32*coth(w32/)2*k*TC ) )-4,-je;
0,-je,2*w31*coth(w31/)2*k*TC ) )-4*js] );
y(3)=det(N ) n;
上传的附件式. doc(52.0kb,25次陟览) )。