|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
最近最课题需要用到matlab解非线性方程组,我本人是学化工的,实在是有点困难。自己解决了一部分问题,现在卡在了最后的环节上,还请各位大侠帮忙。
程序内容如下:
用fun1 调用low,去解方程组,然后输出n1_n8。其中low里的p值要做1,3,5 .x需要1 3 6 9 12. 不知道是初值问题还是方程的问题。请大家帮忙看看,多谢!
fun1函数:
myoptions=optimset('MaxIter',100000,'MaxFunEvals',10000,'TolFun',1e-6)
global T n
k0=[0.99 0.9 2.3 4 1];
for i=1:3,
T=550+(i-1)*50;
fsolve('low',k0,myoptions);
for j=1:8,
r_5(i,j)=n(j);
end
end
low函数:
function y=low(k)
global T n
P=1
x=1
k1=k(1)
k2=k(2)
k3=k(3)
n(8)=k(4)
k4=k(5)
n(1)=1-k1
n(2)=x-k2+k3
n(3)=3*k1-k2-k3
n(4)=k2
n(5)=k3-k4
n(6)=4*k1+k2-3*k3+2*k4
n(7)=k4
y(1)=exp((584.906-4.4735e-1*T-3.0773e-5*T^2+3*(-109.885-9.2218e-2*T+1.4547e-6*T^2))/(0.008314*T))-((P*n(1)/(n(8)-n(7)))*(P*n(3)/(n(8)-n(7)))^(-3)*(P*n(6)/(n(8)-n(7)))^(-4))
y(2)=exp((241.74-4.1740e-2*T-7.4281e-6*T^2-(-109.885-9.2218e-2*T+1.4547e-6*T^2)-393.360-3.8212e-3*T+1.3322e-6*T^2)/(-0.008314*T))-((P*n(2)/(n(8)-n(7)))^(-1)*(P*n(3)/(n(8)-n(7)))^(-1)*(P*n(4)/(n(8)-n(7)))*(P*n(6)/(n(8)-n(7))))
y(3)=exp((-241.74+4.1740e-2*T+7.4281e-6*T^2-(-109.885-9.2218e-2*T+1.4547e-6*T^2)-75.262+7.5925e-2*T+1.8700e-5*T^2)/(-0.008314*T))-((P*n(2)/(n(8)-n(7)))*(P*n(3)/(n(8)-n(7)))^(-1)*(P*n(5)/(n(8)-n(7)))*(P*n(6)/(n(8)-n(7)))^(-3))
y(4)=exp((75.262-7.5925e-2*T-1.8700e-5*T^2+4.58e-4*(P-1))/(-0.008314*T))-((P*n(5)/(n(8)-n(7)))^(-1)*(P*n(6)/(n(8)-n(7)))^2)
y(5)=n(1)+n(2)+n(3)+n(4)+n(5)+n(6)+n(7)-n(8)
end
[ 本帖最后由 eight 于 2008-2-29 10:48 编辑 ] |
|