Matlab 用公式画图 求导函数的问题 请帮看看这个公式如果求导后再画图? 公式中其他参数值已经 只有x是变

x=(-0.4:0.02:1.0);%x有71列z=(sqrt(2*Es*KT*Ppo))*((exp((-P).*x)+(P.*x)-1)+(ni/Ppo)^(2).*... x=(-0.4:0.02:1.0); %x 有71列
z=(sqrt(2*Es* KT*Ppo))*((exp((-P) .* x) + (P .* x) - 1) + (ni/Ppo)^(2) .*(exp(P .* x)- P .* x -1)).^(1/2); % z 有 71 和 x 一样

Cs=diff((sqrt(2*Es* KT*Ppo))*((exp((-P) .* x) + (P .* x) - 1) + (ni/Ppo)^(2) .*(exp(P .* x)- P .* x -1)).^(1/2)); %Cs 是对z的微分 奇怪的是微分后Cs的值只有 70 列了,不知道是不是求导函数用得不对;

C=(Cs)./(Cs+1); % C 有 70列与 x 一样;
Vi = abs(z); % Vi 有 71 列与 x 一样;
V=Vi+x; % V 有 71 列与 x 一样
plot(V,C) %这样 V 和 C 的值的列数就不一样了 所以不能plot。请帮看看是什么问题 我需要把这2个参数所对应的值画成图
Cs 是应该等于 z对其中的x求导,其他的参数都已经有具体的数值在之前赋值过了。我觉得问题出在这一步 我直接用的 Cs=diff(z) 来对其求导的

非常感谢一楼的回答 我按你的方式试了 除了x其他值我都在之前赋值了 但是syms x定义时候那个x是紫色的,然后运行结果是??? Undefined function or variable 'x'. 还说说x 没定义是怎么回事呢?我的全部程序在问题补充里面,请你再帮我看看谢谢!

全部程序如下:
q = 1.6 * 10^(-19);
Es = 9.7*8.85418*10^(-12);
KT = 0.0259*1.6 * 10^(-19);
P = q/KT;
Ppo = 4 * 10^(21);
LD = sqrt(Es/(q*Ppo*P))* 10^(2);
B = (2*KT/q).*log(Ppo/(1.45*10^(16)));
ni=1.45*10^(16);
z=(sqrt(2*Es* KT*Ppo))*((exp((-P) .* x) + (P .* x) - 1) + (ni/Ppo)^(2) .*(exp(P .* x)- P .* x -1)).^(1/2);
syms x;
Cs=diff((sqrt(2*Es* KT*Ppo))*((exp((-P) .* x) + (P .* x) - 1) + (ni/Ppo)^(2) .*(exp(P .* x)- P .* x -1)).^(1/2));
x=(-0.4:0.02:1.0);
C=(Cs)./(Cs+1);
Vi = abs(z);
V=Vi+x;
plot(V,C)
展开
 我来答
ruifengcao
2011-02-26 · TA获得超过9489个赞
知道大有可为答主
回答量:3579
采纳率:33%
帮助的人:2017万
展开全部
syms x q Es KT P Ppo LD B ni

z=(sqrt(2*Es* KT*Ppo))*((exp((-P) .* x) + (P .* x) - 1) + (ni/Ppo)^(2) .*(exp(P .* x)- P .* x -1)).^(1/2);
Cs=diff(z,x);
C=(Cs)./(Cs+1);

q = 1.6 * 10^(-19);
Es = 9.7*8.85418*10^(-12);
KT = 0.0259*1.6 * 10^(-19);
P = q/KT;
Ppo = 4 * 10^(21);
LD = sqrt(Es/(q*Ppo*P))* 10^(2);
B = (2*KT/q).*log(Ppo/(1.45*10^(16)));
ni=1.45*10^(16);

x=(-0.4:0.02:1.0);

C=eval(C);
z=eval(z);
Vi=abs(z);
V=Vi+x;

plot(V,C)

上面是程序,你先定义好符号运算的式子,在运算完毕后再将里面的数带入就行了!
祝你学习愉快!
追问
恩 按你这么改程序是没有问题了 但是我想再问问eval是什么意思呢?
追答
eval是给符号表达式带入具体的数值。
EVAL Execute string with MATLAB expression.
EVAL(s), where s is a string, causes MATLAB to execute
the string as an expression or statement.

[X,Y,Z,...] = EVAL(s) returns output arguments from the
expression in string s.

The input strings to EVAL are often created by
concatenating substrings and variables inside square
brackets.
百度网友39533e909
2011-02-26 · TA获得超过1584个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:146万
展开全部
因为你首先赋值了,所以求出来的z是一个71列的数,也就是一个向量,然后用diff求则是[X(2)-X(1) X(3)-X(2) ... X(71)-X(70)],所以只有70个。改进的方法是这样的
你将z=(sqrt(2*Es* KT*Ppo))*((exp((-P) .* x) + (P .* x) - 1) + (ni/Ppo)^(2) .*(exp(P .* x)- P .* x -1)).^(1/2); 中除了x之外的值在程序前面赋值出来,然后用syms x定义,再用diff(z),之后再x=(-0.4:0.02:1.0); 后面的工作就好弄了。呵呵
追问
谢谢你的回答,出x之外的值我事先都赋值了只是我没粘贴出来,我试了你的方式,先用syms x定义 我不太懂这个syms的意思但是定义后 x 是紫色的 然后diff(z),之后再x=(-0.4:0.02:1.0);但是运行就说??? Undefined function or variable 'x'. 请看截图是怎么回事?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a544782965
2011-02-26
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
=(-0.4:0.02:1.0); %x 有71列
z=(sqrt(2*Es* KT*Ppo))*((exp((-P) .* x) + (P .* x) - 1) + (ni/Ppo)^(2) .*(exp(P .* x)- P .* x -1)).^(1/2); % z 有 71 和 x 一样

Cs=diff((sqrt(2*Es* KT*Ppo))*((exp((-P) .* x) + (P .* x) - 1) + (ni/Ppo)^(2) .*(exp(P .* x)- P .* x -1)).^(1/2)); %Cs 是对z的微分 奇怪的是微分后Cs的值只有 70 列了,不知道是不是求导函数用得不对;

C=(Cs)./(Cs+1); % C 有 70列与 x 一样;
Vi = abs(z); % Vi 有 71 列与 x 一样;
V=Vi+x; % V 有 71 列与 x 一样
plot(V,C) %这样 V 和 C 的值的列数就不一样了 所以不能plot。请帮看看是什么问题 我需要把这2个参数所对应的值画成图
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式