解完这个方程后,我希望 p 作为 x 的函数。对此我无法得到满意的答案。
我试图在 MATLAB 中将 p 作为 x 的函数...位,遇到一个空的 sym 问题。如何用数值方法求解?
b=2.49*(10^(-10));
M=1.67;
T= 400;
D= 23*(10^(-6));
D_Cu= 2.88*(10^(-4))*exp(-32571.56/T);
D_Ni= 0.68*(10^(-4))*exp(-31392.83/T);
beta=4.7*(10^10);
%Darken's Equation
D_v= 0.647*D_Cu + 0.3196*D_Ni;
syms p x
eqn=5*10^8*x==-((2/b)*(sqrt(p)+(1/D)))+(5.58*(10^(15))*exp(-15.0234+150*b*sqrt(p))*p)/(44);
S=solve(eqn,p)
我只想要 p v/s s 的图。
1.- 需要绘制多个点
要绘制任何函数,您可以使用 2 个数值向量,或者使用必须提前定义的函数才能尝试任何绘图。
通过按照您在提供的行中执行的方式使用命令solve,您要求 MATLAB 找到第一个根,MATLAB 提供一个根,然后停止。
与
eqn=5*10^8*x==-((2/b)*(sqrt(p)+(1/D)))+(5.58*(10^(15))*exp(-15.0234+150*b*sqrt(p))*p)/(44);
S=solve(eqn,x,p)
返回 1 并且仅返回 1 分
S =
struct with fields:
x: [1×1 sym]
p: [1×1 sym]
S.x
=
-12582083820137580698459643619347/18014398509481984000000000
double(S.x)
=
-6.9845e+05
S.p
=
0
逆向
S=solve(eqn,p,x)
也有效。我提到这一点是因为从这个问题来看,不清楚您的目标是绘制
p(x)
还是 x(p)
。
如果您选择使用
solve
来绘图,那么您必须在编译所有获得的根时沿着参考向量进行迭代,这将通过 for
循环完成,例如,这在您的代码中不存在提供。
我还尝试使用
T=400+273
只是为了确保您在计算中使用正确的温度值。
2.- 绘制
fplot
我建议如下,例如
f1=@(s) -((2/b)*(sqrt(s)+(1/D)))+(5.58*(10^(15))*exp(-15.0234+150*b*sqrt(s))*s)/(44);
fplot(f1)
grid on
xlabel('p')
但我怀疑这就是您真正想要的图表,让我解释一下。
对于那些不熟悉这些方程的读者,从这里,您告诉我们这个来源是否正确,达肯方程描述了二元溶液中材料的固态扩散
2.1.- 第一个变暗方程
2.2.- 第二个变暗方程
在这两种情况下,您都需要
N1
和 N2
,并且不清楚您使用的表达式是否真的是 N1
和 N2
。
如果您使用第一个方程,那么
N1
N2
沿 x
的梯度在哪里?
在这种情况下,不清楚您分配给
N1
和 N2
的值是否真的是原子分数。请相应纠正或评论。
如果您使用第二个方程,那么第一个分量的
a1
activity coefficient
在哪里?
你如何决定哪一个是第一个组件?
问题中的
S
是指带有帽子的 D
,即整体扩散性吗?
我的印象是你正在寻找
D_hat(x)
的情节,对吧?