jumpwolf 发表于 2006-12-8 14:04

非线性方程组的求解?

碰到如下一个方程组?不知道如何求解。
哪位高人指点一下
是不是可以用MATLAB的优化工具箱?

[ 本帖最后由 xinyuxf 于 2006-12-23 09:49 编辑 ]

pengweicai 发表于 2006-12-8 14:42

转贴:变参数非线性方程组的求解!

转贴:变参数非线性方程组的求解!


变参数非线性方程组的求解!

对于求解非线性方程组一般用fsolve命令就可以了,但是对于方程组中某一系数是变化的,该怎么求呢?

%定义方程组如下,其中k为变量
function F = myfun(x,k)
H=0.32;
Pc0=0.23;W=0.18;
F=[Pc0+H*(1+1.5*(x(1)/W-1)-0.5*(x(1)/W-1)^3)-x(2);
    x(1)-k*sqrt(x(2))];

%求解过程
H=0.32;
Pc0=0.23;W=0.18;
x0 = ;         % 取初值
options = optimset('Display','off');
k=0:0.01:1;             % 变量取值范围
for i=1:1:length(k)
kk=k(i);                        
x = fsolve(@(x) myfun(x,kk), x0, options);%求解非线性方程组
x1(i)=x(1);
x2(i)=x(2);
end
plot(k,x1,'-b',k,x2,'-r');
xlabel('k')
legend('x1','x2')

希望你可以参考一下。

zcf1976 发表于 2006-12-8 20:35

原帖由 pengweicai 于 2006-12-8 14:42 发表
对于求解非线性方程组一般用fsolve命令就可以了,...
对于这种复杂多元非线性方程组,个人认为不宜采用fsolve的数值解,因为这会出现丢根的情况,并且不容易找到丢的根.
我觉得你可以用MATLAB的符号解,即求出相应的符号根,再赋以数值代入.
不过,由(3),(4)求出sin(γ),cos(γ)代入式(1),(2),将(1)(2)平方相加,(3)(4)平方相加,
然后求a1,a2的符号解,继而求解方程组的解.

顺便问一下楼主,该方程组是不是由非线性动力学方程组转化而来?是采用什么方法,研究对象是什么?
多谢解答.

[ 本帖最后由 zcf1976 于 2006-12-8 20:41 编辑 ]

hxch825 发表于 2006-12-15 12:40

最简单的就是消元求解

消元求解
页: [1]
查看完整版本: 非线性方程组的求解?