Matlab 编程绘制二元相图
作者&投稿:计李 (若有异议请与网页底部的电邮联系)
只需要再运行以下两句就可以实现:第一句是把y变成跟x同样行列数的矩阵;第二句是用红色的星号在三维空间把(x,y,z)画出来
y = y*ones(size(x));
plot3(x,y,z,'*r');
text(0.4,312,'CA');
text(0.8,305,'LA');
% 效果如下:
R=8.314472;
dHb=11000;
dHc=20080;
Tb=546;
Tc=903;
k=R*T;
t=T-273.15;
dGb=dHb*(1-T/Tb);
dGc=dHc*(1-T/Tc);
%%plot(dGb,t,dGc,t,k,T)
xbl=(1-exp(dGc./k))./(exp(dGb./k)-exp(dGc./k));
xbs=exp(dGb./k).*(1-exp(dGc./k))./(exp(dGb./k)-exp(dGc./k));
%%plot(dGb,t,dGc,t)
plot(xbl,T,'b-');
hold on;
plot(xbs,T,'r-');
xlabel('B物质浓度'),ylabel('T');
legend('液相浓度xbl','固相浓度xbs');
不是特别清楚你的意图,你运行一下下面的试试吧
function[]=run2()
T=500:50:1000
R=8.314472
dHb=11000
dHc=20080
Tb=546
Tc=903
k=R*T;
t=T-273.15;
dGb=dHb*(1-T/Tb);
dGc=dHc*(1-T/Tc);
%%plot(dGb,t,dGc,t,k,T)
xbl=(1-exp(dGc/k))/(exp(dGb/k)-exp(dGc/k));
xbs=exp(dGb/k)*(1-exp(dGc/k))/(exp(dGb/k)-exp(dGc/k));
%%plot(dGb,t,dGc,t)
figure,hold on
plot(xbl,t,'r*')
plot(xbs,t,'b*')
hold off
闽颜安乐: 其实你想的太复杂了,事实上,做二元图有很多方法,比如: [X,Y]=meshgrid(x,y); Z=f(X,Y); mesh(X,Y,Z);就可以完成二元函数图像问题,另外还有surf,plot3等等. 至于你说的偏导数图像,我的建议是:你可以先求出偏导数,再画二元函数图,因为matlab符号运算不强,许多问题解决多不如Mapple和Mathematica,但是你也可以尝试直接利用数值微分的方法来解决你的问题,这也是一个不错的提议. 首先你需要知道数值微分求解一元函数的公式:ode,ode23,ode45等等.
南海区19588213748: 用matlab画微分方程的相图dx./dt=y*(4+x^2 - y^2)dy./dt= - x( - 2 - x^2+y^2)请写出这方程的matlab相图做法的源程序! - ?
闽颜安乐:[答案] clear;clc [x,y]=meshgrid(linspace(-5,5)); streamslice(x,y,y.*(4+x.^2-y.^2),-x.*(-2-x.^2+y.^2)); xlabel('x');ylabel('y');
南海区19588213748: 怎么用matlab画指定定义域内的二元函数图像 - ?
闽颜安乐: 用matlab画指定定义域内的二元函数图像的方法如下(此处仅举例: x + y = 1):1. 假设 x = -10:10 .2. 推出y的表达式:y = 1 - x .3. 直接画图:plot(x,y) 即可.
南海区19588213748: Matlab绘制相图,急用,在线等 - ?
闽颜安乐: 只需要再运行以下两句就可以实现:第一句是把y变成跟x同样行列数的矩阵;第二句是用红色的星号在三维空间把(x,y,z)画出来 y = y*ones(size(x));plot3(x,y,z,'*r');
南海区19588213748: 怎么用matlab画一个2元函数的图像,得出的图像为什么是空白的 - ?
闽颜安乐: 错误原因主要有两方面:一、x值设定的不对,由于我不清楚你的x取值范围,暂且定义为[0,10],那么程序为x=0:0.1:10;二、y表达式的写法不正确,主要是因为你混淆了矩阵相乘以及矩阵中元素与元素相乘的区别;如果A,B两矩阵满足相乘的条...
南海区19588213748: 用MATLAB画一个简单的二维图,只要几行代码的那种,求助,急!?
闽颜安乐: 代码如下: clc;clear;close all; v1=pi/2;v2=pi/4;v3=3*pi/4; e=0:0.01:4*pi; y1=((sin(sqrt(v1+e.^2))).^2)./(1+(e./v1).^2); y2=((sin(sqrt(v2+e.^2))).^2)./(1+(e./v2).^2); y3=((sin(sqrt(v3+e.^2))).^2)./(1+(e./v3).^2); plot(e,y1,'r-',e,y2,'b-',e,y3,'g-'); legend('y1','y2','y3'); axis([0 13 -0.2 1.2]); 图形如下:
南海区19588213748: 简述用matlab绘制二维和三维图形的一般步骤. - ?
闽颜安乐: 方法/步骤 作为演示,以二元函数图 z = xexp(-x^2-y^2) 为例讲解基本操作,首先需要利用meshgrid函数生成X-Y平面的网格数据,如下所示: % 生成二维网格数据 xa = -2:0.2:2; ya = xa; [x,y] = meshgrid(xa,ya); 此外,需要计算纵轴数据(z轴),如下所示: % calculate z data z = x.*exp(-x.^2 - y.^2); 在计算出(x,y,z)数据后,就可以使用三维绘图函数mesh绘制三维曲面图,如下所示: mesh(x,y,z); 整个完整代码如下所示,点击运行按钮即可看图像.
南海区19588213748: Matlab绘制相图,急!!!!!在线等 - ?
闽颜安乐: x 和 y 的数据个数要一致,然后用 plot 函数即可:plot(x, y)
南海区19588213748: matlab 绘二元函数的图像:z=3*sin(x)^2*cos(y)^2+5*cos(x)^2*sin(y)^2,如何画图呢??
闽颜安乐: 上面的回答是系统自己指定各个变量的范围的,比较简单,要是要自己控制范围的话,可以这样: t=-3:0.1:3; x=t; y=t; z=3*sin(x)^2'*cos(y)^2+5*cos(x)^2'*sin(y)^2; figure(); mesh(x,y,z); 自己弄清楚matlab画图的原理,绘图的时候注意维数,一定要匹配.
南海区19588213748: 怎么用matlab画指定定义域内的二元函数图像?
闽颜安乐: n = 50;x = linspace(0,1,n+1);y = cumsum([zeros(size(x));repmat((1-x)/n,n,1)]);x = repmat(x,size(y,1),1);z = 3*(x.^2)+3*(y.^2)+3*x.*y+1-3*x-3*y;mesh(x,y,z);axis tight