作业帮 > 综合 > 作业

matlab 求数值解“起始猜测处的函数值必须为有限实数”怎么办?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/25 01:11:39
matlab 求数值解“起始猜测处的函数值必须为有限实数”怎么办?

如图,在我用fzero解个方程的时候,他说“起始猜测处的函数值必须为有限实数”,请问这是怎么回事?我应该怎么解决?
fzero求解方程的数值解 要求f返回的值是数值
而你的数据中 V、w、Vcz、alpha2都是sym符号变量,所以f不能返回数值,所以报错
你要将这些值都转化为数值,才能用fzero数值求解
再问: 上面是我的程序,for循环里面已经确定了a、z、alpha1;V、w、Vcz、alpha2都是关于a、z、alpha1的表达式,请问我应该如何修改我的程序呢?(代码太长发不上来..已私信)
再答: n=1.674*10^-27;
e=1.6*10^-19;
q=2*e;
Var=5.356*10^5;
M=39.95*n;
B=0.5;
L=0.05;

fid=fopen('C:\Users\Administrator\Desktop\loce.txt','wt');
fprintf(fid,'%13.10f\n',123);
%fprintf(fid,'%13s\t%13s\t%13s\t%13s\t%13s\n','alpaha1','a','z','Vout','Yout');

for alpha1=0.01:0.03:1.57
for a=1:3:40
for z=1:3:40
m=z*n;
V=2*M/(a*n+M)*Var;
V1=2*M/(m+M)*Var*cos(alpha1);
Vcz=sqrt(V1^2+V^2-2*V1*V*cos(alpha1));
w=q*B/m;
alpha2=asin(V1*sin(alpha1)/Vcz);
f=@(t0)(V*t0+1/w*sin(w*t0-alpha2)-L);
t=fzero(f,0);
Vout=Vcz*sin(w*t-alpha2)/(V+Vcz*cos(w*t-alpha2));
Yout=-1/w*Vcz*cos(w*t-alpha2);
if Vout < 3*10^-3
if Yout