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.
不好意思是 非线性方程组 我发错了 题目我发的最下面 展开
不好意思是 非线性方程组 我发错了 题目我发的最下面 展开
展开全部
关键是把题目中的方程组整理成向量运算的样子
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的行数列数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询