[问题] fsolve 解多元非线性方程组

楼主: wen7774 (文...)   2015-05-12 12:40:16
我尝试用fsolve解多元非线性问题
第一次写matlab,参考板上之前的讨论
原始题目
(A-x-y)(B-x-β) = K1(x-α)
(A-x-y)(C-y-α) = K2(y-β)
(x-α) (C-y-α) = K3(α+β)
(y-β)(B-x-β) = K4(α+β)
Constant: K1.K2.K3.K4
input : A.B.C
output: α.β.x.y
我写出来的程式如下
function y=prac(x)
y=zeros(1,4);
A=30;B=20;C=60; %input parameter
K1=2;K2=5.71;K3=3;K4=1.0; %constant
y(1)=(A-x(1)-x(2))*(B-x(1)-x(4))-K1*(x(1)-x(3));
y(2)=(A-x(1)-x(2))*(C-x(2)-x(3))-K2*(x(2)-x(4));
y(3)=(x(1)-x(3))*(C-x(2)-x(3))-K3*(x(3)+x(4));
y(4)=(x(2)-x(3))*(B-x(1)-x(4))-K4*(x(3)+x(4));
x01=[1,1,1,1]; % initial guess
a=fsolve('prac',x01)
y=prac(a)
可是我怎么跑都是
Error using prac (line 7)
Not enough input arguments.
可以帮我看一下怎么回事吗?
或是说这个方程组没办法用fsolve解?
谢谢
p.s.
我没有正确解可以验算,但所有的解应该都是正实数
作者: sunev (Veritas)   2015-05-12 15:15:00
1 2式相除,再把第3式代掉与第4式相比,可得K1*K3/K2=1 ?第4式第1项是(y-β)还是(y-α) ?
楼主: wen7774 (文...)   2015-05-13 09:46:00
第4式第1项是(y-β),但K是常数,这样方程式会变相依吗?这题的物理意义上确实是K1*K3/K2=K4=1
作者: sunev (Veritas)   2015-05-13 13:16:00
你程式第4式第1项错了,K1*K3/K2也不为1
楼主: wen7774 (文...)   2015-05-14 14:32:00
我再检查一下问题在哪里,谢谢S大

Links booklink

Contact Us: admin [ a t ] ucptt.com