>> [x,y] = solve('(5/6)*(1+x)^3-(10/6)*(2.5+x)^3+0.09*x^3+29.069*x^2+4.03x+2.248+y*((2.8+x)^2/(2.2+x))*0.94+y*(2.2+x)=0','2.5*(1+x)^2-5*(2.5+x)^2+0.274x^2+58.148x+4.03+y*((y+2.8)/(2.2+x))*0.96+y=0')
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/06 06:43:20
>> [x,y] = solve('(5/6)*(1+x)^3-(10/6)*(2.5+x)^3+0.09*x^3+29.069*x^2+4.03x+2.248+y*((2.8+x)^2/(2.2+x))*0.94+y*(2.2+x)=0','2.5*(1+x)^2-5*(2.5+x)^2+0.274x^2+58.148x+4.03+y*((y+2.8)/(2.2+x))*0.96+y=0')
>> [x,y] = solve('(5/6)*(1+x)^3-(10/6)*(2.5+x)^3+0.09*x^3+29.069*x^2+4.03x+2.248+y*((2.8+x)^2/(2.2+x))*0.94+y*(2.2+x)=0','2.5*(1+x)^2-5*(2.5+x)^2+0.274x^2+58.148x+4.03+y*((y+2.8)/(2.2+x))*0.96+y=0')
>> [x,y] = solve('(5/6)*(1+x)^3-(10/6)*(2.5+x)^3+0.09*x^3+29.069*x^2+4.03x+2.248+y*((2.8+x)^2/(2.2+x))*0.94+y*(2.2+x)=0','2.5*(1+x)^2-5*(2.5+x)^2+0.274x^2+58.148x+4.03+y*((y+2.8)/(2.2+x))*0.96+y=0')
分析
首先,恕我冒昧,这程序真的是你写的?
如果是,这么简单的问题不应该看不出来啊.
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];的前面就可以了.
请采纳.