nkunku 发表于 2012-6-2 05:42 
用Maple解,感觉好像不对呀。我也搞不懂了。用Mathematica解也不对呀。比如,p=10,t=15,{{s -> -6.74065}, ...
我用matlab求解后发现只能拟合出下面部分的曲线,上面部分的得不到,如下所示。(我对方程进行了一些修改)
代码:
clc
clear
syms d T S
f=-5022.5+1.3532*S-8.985*10^(-5)*S^2+0.1257*T-5.7545*10^(-5)*S*T+5.105652*10^(-9)*S^(2)*T+4*d+0.002752*d*S-2.308*10^(-7)*d*S^(2);
d=50;
g1=solve(subs(f),S);
d=100;
g2=solve(subs(f),S);
d=110;
g3=solve(subs(f),S);
d=120;
g4=solve(subs(f),S);
d=130;
g5=solve(subs(f),S);
d=140;
T=1:.1:300000;
S1=subs(g1);
S2=subs(g2);
S3=subs(g3);
S4=subs(g4);
S5=subs(g5);
y1=S1(1,:);
y2=S2(1,:);
y3=S3(1,:);
y4=S4(1,:);
y5=S5(1,:);
plot(T,y1,T,y2,T,y3,T,y4,T,y5)
得到了下面的图:
但如果我的d值为(50,100,500,1000,2000,3000)这样的情况的话,matlab会提示超过memory,或者拟合出来的曲线像下面的这样
代码如下:
clc
clear
syms d T S
f=-5022.5+1.3532*S-8.985*10^(-5)*S^2+0.1257*T-5.7545*10^(-5)*S*T+5.105652*10^(-9)*S^(2)*T+4*d+0.002752*d*S-2.308*10^(-7)*d*S^(2);
d=1000;
g1=solve(subs(f),S);
d=1100;
g2=solve(subs(f),S);
d=1200;
g3=solve(subs(f),S);
d=1500;
g4=solve(subs(f),S);
d=2000;
g5=solve(subs(f),S);
d=2500;
g6=solve(subs(f),S);
d=3000;
T=1:.1:300000;
S1=subs(g1);
S2=subs(g2);
S3=subs(g3);
S4=subs(g4);
S5=subs(g5);
S6=subs(g6);
y1=S1(1,:);
y2=S2(1,:);
y3=S3(1,:);
y4=S4(1,:);
y5=S5(1,:);
y6=S6(1,:);
plot(T,y1,T,y2,T,y3,T,y4,T,y5,T,y6)
请问一下,这是拟合方程的原因还是其他的原因呢?谢谢~~~