matlab子程序,求助!!!!
matlab程序如下:
clc
clear all
p01=100
G=2000
v=0.3
M=1.2
Y=463
E=5200
sigmarb=308
sigmah0=100
x0=1;
xb=[ Y, G, v, E,sigmarb,sigmah0];
option=optimset('Display','iter','Algorithm','levenberg-marquardt');
x=fsolve(@(x) f(x,xb),x0,option)
---------------------------------------------------------
function [y]=f(x, xb)
G=xb(1);
v=xb(2);
Y=xb(3);
E=xb(4);
sigmarb=xb(5);
sigmah0=xb(6);
y0=(1/x);
y1=(2*(G+sigmah0-sigmarb)*(v-0.5)*(1+v)*Y+E*(sigmah0-sigmarb));
y2=(1/x)^(((-4.*v.*v-2.*v+2).*Y-E)./E);
y3=2*(v-0.5)*G*Y*(1/x)*(1+v);
y4=G*(Y*(2*v*v+v-1)+E);
y=y0-(-y1*y2+y3)/y4;
end
----------------------------------------------------------
我用maple2018算的2.7左右,但是,用matlab一直是0.99左右,求助各位大神,我的matlab哪里有问题????? 2.7左右应该是正确的!
ZYTKWHZU55TC8K5%K}~VZAS.png 返回小木虫查看更多
y2 的表达式错了吧,a和c的指数是不一样的, x和a/c是什么关系?
没错吧!x=c/a
图上的表达式,a的指数和c的指数不一样,一个+E、一个+2E
可以化简
LBQ5]$8IR`~_KP0NMKCMN[6.png
function question_47
clc
clear all
x0=1;
option=optimset('Display','iter','Algorithm','levenberg-marquardt');
x=fsolve(@(x) f(x),x0,option)
%---------------------------------------------------------
function y=f(x)
p01=100;
G=2000;
v=0.3;
M=1.2;
Y=463;
E=5200;
sigmarb=308;
sigmah0=100;
y0=(1/x);
y1=(2*(G+sigmah0-sigmarb)*(v-0.5)*(1+v)*Y+E*(sigmah0-sigmarb));
y2=(1/x)^(((-4.*v.*v-2.*v+2).*Y-E)./E);
y3=2*(v-0.5)*G*Y*(1/x)*(1+v);
y4=G*(Y*(2*v*v+v-1)+E);
y=y0-(-y1*y2+y3)/y4;
end
end
%----------------------------------------------------------,