登录论坛

查看完整版本 : [MATLAB数学相关] 怎么解这非线性方程组


学习蜗牛
2009-05-28, 00:46
本人刚接触matlab不久,菜鸟级的,希望各位帮下,谢谢了
已知某非线性方程组如下:
ff(1)=(3-5*x(1))*x(1)+1-2*x(2)=0
for k=2:9
ff(k)=(3-5*x(k))*x(k)+1-x(k-1)-2*x(k+1)=0
end
ff(10)=(3-5*x(10))*x(10)+1-x(9)=0

试求该方程组的解。

zsy312
2009-05-28, 17:48
方程求解应该用mathematica,给出数值解方法,算出来1024组解(想算符号解的话把最开头第一个N去掉,估计电脑死机了也算不出来)
NSolve[Flatten[{Table[(3 - 5 Subscript[x, i]) Subscript[x, i] + 1 -
Subscript[x, i - 1] - 2 Subscript[x, i + 1] == 0, {i, 2,
9}], (3 - 5 Subscript[x, 1]) Subscript[x, 1] + 1 -
2 Subscript[x, 2] ==
0, (3 - 5 Subscript[x, 10]) Subscript[x, 10] + 1 - Subscript[x,
9] == 0}], Table[Subscript[x, i], {i, 10}]]

学习蜗牛
2009-05-29, 13:12
谢谢了,非常感谢,我试试

学习蜗牛
2009-05-30, 09:23
我老师说一定要MATLAB做,各位帮帮忙

zsy312
2009-05-30, 11:23
只能解带初值的问题了,先创建函数:
%创建sol函数
function y=sol(a)
y(1)=(3-5*a(1))*a(1)+1-2*a(2);
for k=2:9
y(k)=(3-5*a(k))*a(k)+1-a(k-1)-2*a(k+1);
end
y(10)=(3-5*a(10))*a(10)+1-a(9);
%保存下来,到matlab能识别的路径下

在主程序中调用:
x=fsolve('sol',zeros(1,10))
其中zeros(1,10)表示初值全为0,也可以换成你想要的初值,比如
换成ones(1,10),
[1,2,3,……]自己按需要写吧。

zsy312
2009-05-30, 11:26
注意,这里只是给一个解,可不是所有解。
再者,fsolve在初始值为实数的时候求不出虚数解,你可以试一下

学习蜗牛
2009-06-01, 18:54
朋友,谢谢了,我试试

pxlsword
2009-06-01, 23:59
本人刚接触matlab不久,菜鸟级的,希望各位帮下,谢谢了
已知某非线性方程组如下:
ff(1)=(3-5*x(1))*x(1)+1-2*x(2)=0
for k=2:9
ff(k)=(3-5*x(k))*x(k)+1-x(k-1)-2*x(k+1)=0
end
ff(10)=(3-5*x(10))*x(10)+1-x(9)=0

试求该方程组的解。

哥们儿``前几天这个方程我也发了!估计是一个老师的作业~~怎么样?做出来没有``?交流哈啊~~QQ:343387355,也是交大的!