早教吧作业答案频道 -->其他-->
Matlab问题求解.我写了个程序e=0.001;c=[5;4;3;2;1]Q=[5 4 3 2 1;4 4 3 2 1;3 3 3 2 1;2 2 2 2 1;1 1 1 1 1];x=[x1;x2;x3;x4;x5];f = @(x) (c.'*x + 1/2 * x.' * Q * x);df = @(x) (c + Q *x);x1=0;x2=0;x3=0;x4=0;x5=0;flag=1;k=0;Q=inv(Q);d=-Q*df(x);while
题目详情
Matlab问题求解.
我写了个程序
e=0.001;
c=[5;4;3;2;1]
Q=[5 4 3 2 1;4 4 3 2 1;3 3 3 2 1;2 2 2 2 1;1 1 1 1 1];
x=[x1;x2;x3;x4;x5];
f = @(x) (c.'*x + 1/2 * x.' * Q * x);
df = @(x) (c + Q *x);
x1=0;x2=0;x3=0;x4=0;x5=0;
flag=1;k=0;
Q=inv(Q);
d=-Q*df(x);
while flag
k=k+1;
if (norm(d) norm at 28
[varargout{1:nargout}] = builtin('norm',varargin{:});
然后再次用原程序运行(无syms的)就可以正常算出来了
我的Matlab版本是7.0.1的 请问这是什么问题能怎么解决
我写了个程序
e=0.001;
c=[5;4;3;2;1]
Q=[5 4 3 2 1;4 4 3 2 1;3 3 3 2 1;2 2 2 2 1;1 1 1 1 1];
x=[x1;x2;x3;x4;x5];
f = @(x) (c.'*x + 1/2 * x.' * Q * x);
df = @(x) (c + Q *x);
x1=0;x2=0;x3=0;x4=0;x5=0;
flag=1;k=0;
Q=inv(Q);
d=-Q*df(x);
while flag
k=k+1;
if (norm(d) norm at 28
[varargout{1:nargout}] = builtin('norm',varargin{:});
然后再次用原程序运行(无syms的)就可以正常算出来了
我的Matlab版本是7.0.1的 请问这是什么问题能怎么解决
▼优质解答
答案和解析
分析
首先,恕我冒昧,这程序真的是你写的?
如果是,这么简单的问题不应该看不出来啊.
1、之所以【运行时会出现?Undefined function or variable 'x1'.】,是因为程序中x1(还包括x2 x3 x4 x5)在使用的时候确实未定义.用到x1的最靠前的代码是:
x=[x1;x2;x3;x4;x5];
你可以看看,前面有x1定义吗?
2、之所以【加入一个syms x1 x2 x3 x4 x5;再运行,会提示?Function 'norm' is not defined for values of class 'sym'.】,是因为求范数的函数norm对sym类型没有定义,而你用syms命令定义x1-x5是sym类型,进而x、再进而d都是sym类型,对d求范数当然会出错.
3、之所以【然后再次用原程序运行(无syms的)就可以正常算出来了】,是因为你前面加了syms命令后,尽管执行到norm的时候出错,但在此之前,已经执行了下面这一行:
x1=0;x2=0;x3=0;x4=0;x5=0;
这样你再次运行的时候,x1-x5都已经定义,当然就不会出现第一个错了;而此时x和d也不再是sym类型,求范数没问题,也就不会出现第二个错了.
修改
经过上面的分析,相信你应该知道怎么修改了,对,没错,就是把这一句
x1=0;x2=0;x3=0;x4=0;x5=0;
移到
x=[x1;x2;x3;x4;x5];
的前面就可以了.
首先,恕我冒昧,这程序真的是你写的?
如果是,这么简单的问题不应该看不出来啊.
1、之所以【运行时会出现?Undefined function or variable 'x1'.】,是因为程序中x1(还包括x2 x3 x4 x5)在使用的时候确实未定义.用到x1的最靠前的代码是:
x=[x1;x2;x3;x4;x5];
你可以看看,前面有x1定义吗?
2、之所以【加入一个syms x1 x2 x3 x4 x5;再运行,会提示?Function 'norm' is not defined for values of class 'sym'.】,是因为求范数的函数norm对sym类型没有定义,而你用syms命令定义x1-x5是sym类型,进而x、再进而d都是sym类型,对d求范数当然会出错.
3、之所以【然后再次用原程序运行(无syms的)就可以正常算出来了】,是因为你前面加了syms命令后,尽管执行到norm的时候出错,但在此之前,已经执行了下面这一行:
x1=0;x2=0;x3=0;x4=0;x5=0;
这样你再次运行的时候,x1-x5都已经定义,当然就不会出现第一个错了;而此时x和d也不再是sym类型,求范数没问题,也就不会出现第二个错了.
修改
经过上面的分析,相信你应该知道怎么修改了,对,没错,就是把这一句
x1=0;x2=0;x3=0;x4=0;x5=0;
移到
x=[x1;x2;x3;x4;x5];
的前面就可以了.
看了 Matlab问题求解.我写了...的网友还看了以下:
若X1,X2,X3,X4,X5满足方程组:2X1+X2+X3+X4+X5=6,①X1+2X2+X3 2020-04-27 …
实数X1\X2\X3\X4\X5满足方程组{X1+X2+X3=A1X2+X3+X4=A2X3+X4 2020-05-13 …
Matlab问题求解.我写了个程序e=0.001;c=[5;4;3;2;1]Q=[5 4 3 2 2020-05-16 …
初中数据的离散程度 急 12点50之前样本 平均数 方差 标准差X1,X2,X3,X4,X5,…, 2020-05-16 …
有额外分!一个地区某月前两周从星期一到星期五每天的最低气温依次是(单位:℃):x:,xZ,x3,一 2020-05-23 …
x1-x2+x3=1x2-x3+x4=21若x1,x2,x3,x4,x5满足方程组x3-x4+x5 2020-07-17 …
建立一个数学模型来求解一个7元1次不等式组(人员分配问题)求min{x1+x2+x3+x4+x5+ 2020-08-03 …
设总体X~N(0,4),X1,X2,X3,X4,X5是X的样本,统计量Y=a(X1+X2)^2+b( 2020-10-31 …
已知x1、x2、x3、x4、x5是非负实数已知x1,x2,x3,x4,x5是非负实数,且x1+x2+ 2020-10-31 …
知函数f(x)={1/|x-1|(x≠1),1(x=1)},若关于×的函数h(x)=f(x)^2+b 2020-11-20 …