matlab变量任意值成立方程组的求解和两个小问题
F(x1,y)=0对任意的y恒成立;
F(x,y1)=0对任意的x恒成立;
F(x0,y0)=C.
怎么用matlab解决?(主要是那个恒成立怎么表达好)
二、怎么用matlab判断两个函数相等,如:
已知f1和f2,怎么判断f1=f2,(相等输出1,不等输出0),(好像也有恒成立的感觉).
三、在matlab里怎么让结果还保留π^2之类的.
第一题的函数大家可以用F(x,y)=a(b+x)(c-y)做,条件是F(2,y)=0对任意的y恒成立,F(x,2)=0对任意的x恒成立,还有F(1,1)=-1.
第二题的函数:设f(x,y)=[1/(π^2)]*(π/2+arctan(x/2))*(π/2+arctan(y/3)),f1=f(x,y),f2=f(x,inf),f3=f(inf,y),求f1是否等于f2*f3.
我不懂matlab的,希望各位能提供完整的代码就好。期待ing~ 展开
第一题
这道题其实通过简单的推导就可以得到结果:
由F(1,1) = a*(b+1)*(-1+c) = -1,可知 a≠0;
由F(2,y) = a*(b+2)*(c-y) = 0,可知a=0或b=-2,但由于a≠0,所以只能是b=-2;
由F(x,2) = a*(b+x)*(c-2) = 0,可知a=0或c=2,但由于a≠0,所以只能是c=2;
把b、c的值代入F(1,1)=-1,可得a=1。
如果要求必须用MATLAB求解,有两个方程分别对任意y、x成立,所谓的恒成立我还真不知道该怎么表达。不过,既然是任意,那么就任意取一个值好了,例如都取1,用下面的代码:
syms x y a b c
F=a*(b+x)*(c-y);
eq1=subs(F,{x,y},{2 1});
eq2=subs(F,{x,y},{1 2});
eq3=subs(F,{x,y},{1 1})-(-1);
[a,b,c] = solve(eq1,eq2,eq3)
即可得到上面分析出来的结果。当然,任意x、y也可以换成别的值,应该都能够得到同样的结果,唯一需要避免的是x、y的取值不要重复,以免方程组不封闭(例如x、y都取2)。
第二题
这个题其实没太多可说的,用下面的代码即可:
f=sym('(1/(pi^2))*(pi/2+atan(x/2))*(pi/2+atan(y/3))');
f2=limit(f,y,inf);
f3=limit(f,x,inf);
D = simple(f-f2*f3);
isequal(D,sym(0))
稍微值得一提的是,对于符号量判断相等,比较可靠的做法是,判断二者之差是否为0,而不能直接判断相等。这是因为,虽然是相通的值,具体表达式可能不一样,例如,我们都知道,sin(a)^2+cos(a)^2 与 sin(b)^2+cos(b)^2 相等,但直接判断却是不可行的。
第三题
用符号运算即可,例如,上面第二题中的 f、f2、f3 表达式都包含符号 pi。
先感谢你~,但是第二问好像不能做,我运行后错误代码是:
Undefined function or variable 'y'.
Error in Untitled1 (line 2)
f2=limit(f,y,inf);
这该怎么解决呢?
我又试了下把f2和f3里inf直接写进去写成函数,
但返回值是
tf =
0
应该是相等的。好像是二元函数的问题,因为我试了f=x^2,f1=x,f2=x,返回值是1
我是顺着前面的代码写的,忘了把第二题所需代码独立出来了。在前面加一句
syms x y
定义符号变量即可。
直接写Inf也可以,例如
f=sym('(1/(pi^2))*(pi/2+atan(x/2))*(pi/2+atan(y/3))');
syms x y
f2=subs(f,y,inf);
f3=subs(f,x,inf);
D = simple(f-f2*f3);
isequal(D,sym(0))