画出导数的图像(用MATLAB做,不懂得不必打扰)

来源:百度知道 编辑:UC知道 时间:2024/05/20 17:20:02
我想作出f对theta的导数,然后画出图像(图像中用角度显示)
syms theta theta1 n
f=sym('(2*(sin(theta))^2*cos(theta)*sqrt(n^2-(sin(theta))^2))/(n^2-(1+n^2)*(sin(theta))^2+2*(sin(theta))^4)');
a=diff(f,'theta');
b=vectorize(a);
n=1.5;theta=(0:1:90);theta1=theta*pi/180;
for i=1:length(theta1);%能不能不用显示b的计算式子
b(i)=4*sin(theta1(i)).*cos(theta1(i)).^2*(n^2-sin(theta1(i)).^2)^(1/2)/(n^2-(1+n^2)*sin(theta1(i)).^2+2*sin(theta1(i)).^4)-2*sin(theta1(i)).^3*(n^2-sin(theta1(i)).^2).^(1/2)/(n^2-(1+n^2)*sin(theta1(i)).^2+2*sin(theta1(i)).^4)-2*sin(theta1(i)).^3*cos(theta1(i)).^2/(n^2-sin(theta1(i)).^2).^(1/2)/(n^2-(1+n^2)*sin(theta1(i)).^2+2*sin(theta1(i)).^4)-2*sin(theta1(i)).^2*cos(theta1(i)).*(n^2-sin(theta1(i)).^2)^(1/2)/(n^2-(1+n^2)*sin(theta1(i)).^2+2*sin(theta1(i)).^4)^2*(-2*(1+n^2)*sin(theta1(i)).*cos(theta1(i))+8*sin(theta1(i)).^3*cos(theta1(i)));
end
plot(theta,b)%想显示出角度的变化而不是弧度。

clear
syms theta theta1 m n a b f k ;
f=sym('(2*(sin(theta))^2*cos(theta)*sqrt(n^2-(sin(theta))^2))/(n^2-(1+n^2)*(sin(theta))^2+2*(sin(theta))^4)');
a=diff(f,'theta');
b=vectorize(a);
n=1.5;
b=eval(b);
m=0:1:90;theta1=m*pi/180;
k=1:length(theta1);
ff=subs(b,theta,k);
plot(k,ff)