作者wen7774 (文...)
看板MATLAB
标题[问题] fsolve 解多元非线性方程组
时间Tue May 12 12:40:16 2015
我尝试用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.
我没有正确解可以验算,但所有的解应该都是正实数
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.15.152
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1431405619.A.7E3.html
※ 编辑: wen7774 (140.113.15.152), 05/12/2015 12:41:47
1F:推 sunev: 1 2式相除,再把第3式代掉与第4式相比,可得K1*K3/K2=1 ? 05/12 15:15
2F:推 sunev: 第4式第1项是(y-β)还是(y-α) ? 05/12 21:52
3F:→ wen7774: 第4式第1项是(y-β),但K是常数,这样方程式会变相依吗? 05/13 09:46
4F:→ wen7774: 这题的物理意义上确实是K1*K3/K2=K4=1 05/13 09:48
5F:推 sunev: 你程式第4式第1项错了,K1*K3/K2也不为1 05/13 13:16
6F:→ wen7774: 我再检查一下问题在哪里,谢谢S大 05/14 14:32