MATLAB fsolve解线性方程组的问题 5

程序如下:functionQue=zuoye5(x)Que=zeros(10,1);a=1:10;b=12:21;c=3*ones(10,10);p=0;forr=1:1... 程序如下:function Que=zuoye5(x) Que=zeros(10,1); a=1:10; b=12:21; c=3*ones(10,10); p=0; for r=1:10 p=p+x(r); end for k=1:10 Que(k)=0; for j=1:10 Que(k)=Que(k)+x(j)*(c(k,j)+log(a(k)*x(j)/p)); end Que(k)=Que(k)-b(k); end在workspace中输入如下:fsolve('zueye5',[-1,-2,1,2,3,4,5,6,7,8])报错:Error using feval Undefined function 'zueye5' for input arguments of type 'double'. Error in fsolve (line 218) fuser = feval(funfcn{3},x,varargin{:}); Error in exe5 (line 2) fsolve('zueye5',[-1,-2,1,2,3,4,5,6,7,7]) Caused by: Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue.
不好意思是 非线性方程组 我发错了 题目我发的最下面
展开
 我来答
WM_THU
2014-05-19 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3903万
展开全部

关键是把题目中的方程组整理成向量运算的样子

function Que=zuoye5(x, A, B, C)
[M, N] = size(C, 2);
tmp = C+repmat(log(A), 1, N) + repmat(log(x'/sum(x)), M, 1);
Que = tmp*x-B;
end

试试这个。

还有,

fsolve(@zueye5,[-1,-2,1,2,3,4,5,6,7,8]')

输入的x0必须是列向量,所以要转置一下

另外,请告知矩阵A B C的行数列数。

老外抹中油仙26
2018-03-19 · TA获得超过558个赞
知道答主
回答量:81
采纳率:83%
帮助的人:11.4万
展开全部
我这里在matlab 7下运行正常
fsolve解出来的结果是x0附近的解,如果方程有多个解,那么初值不同,解也可能不同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式