matlab画图问题

clc
clear
syms theta
w=(8+0.4*theta^3+0.6*theta^4)/(16-16*theta+2*theta^2-2*theta^3);
p1=(2+theta+2*w+0.6*theta+w*theta^2)/(4-theta^2);
p2=(2+theta+1.2+3*w*theta)/(4-theta^2);
y1=(p1-w)*(1-p1+theta*p2)

theta=[0:0.1:0.9];
yn1=(((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8)./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) - ((8.*theta)./5 - (2.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) - (theta.^2.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) + 2)./(theta.^2 - 4)).*(((8.*theta)./5 - (2.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))/(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) - (theta.^2.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) + 2)./(theta.^2 - 4) - (theta.*(theta - (3.*theta.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) + 16/5))./(theta.^2 - 4) + 1);
plot(theta,yn1,'--diamond')
上面第一部分给出w,接着给出p1 p2 y1,是不是系统直接就将w,p1,p2代入y1了?这样对吗?
第二部分的yn1是从第一部分得来的新的y1(不知道对错),yn1里面什么时候该用点运算?什么时候正常运算?正常运算时显示错误,全部加点对吗?
matlab完全白菜,求大神指点 ,谢谢!

theta最好放在y1前面定义,带入是可以直接得到结果。
因为theta是一个向量,涉及到它的运算在这里都是要加点的,加点是把运算在每一个元素上执行。这里的运算指乘除和平方追问

可以把正确的代码打出来吗?对matlab我真的一窍不通

追答

clc
clear
syms theta
w=(8+0.4.*theta.^3+0.6.*theta.^4)/(16-16.*theta+2.*theta^2-2.*theta.^3);
p1=(2+theta+2.*w+0.6.*theta+w.*theta.^2)/(4-theta.^2);
p2=(2+theta+1.2+3.*w*theta)/(4-theta.^2);
y1=(p1-w).*(1-p1+theta.*p2)

theta=[0:0.1:0.9];
yn1=(((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8)./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) - ((8.*theta)./5 - (2.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) - (theta.^2.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) + 2)./(theta.^2 - 4)).*(((8.*theta)./5 - (2.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))/(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) - (theta.^2.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) + 2)./(theta.^2 - 4) - (theta.*(theta - (3.*theta.*((3.*theta.^4)./5 + (2.*theta.^3)./5 + 8))./(2.*theta.^3 - 2.*theta.^2 + 16.*theta - 16) + 16/5))./(theta.^2 - 4) + 1);
plot(theta,yn1,'--diamond')

我开始没看清你是用字符定义的,theta可那样定义,望采纳

追问

我用simplify(yn1),新yn1是  yn1=(3*theta^3 + 5*theta^2 + 6*theta + 10)^2/(25*(theta^2 + 8)^2)

重新画图

为什么化简了图就不一样了呢

追答

确实简化后函数画出来的图是不一样的,我觉得可能是simplify函数的化简机制的问题,比如说式子中出现的点除在符号化简时候应该是不当做点除处理的,因为就是一个符号。这样最后化简出来的结果可能就是不一样的。采纳一下啦!阿尼阿塞哟!

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜