为什么我在解决问题时遇到 Empty sym 问题?

问题描述 投票:0回答:1

解完这个方程后,我希望 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 的图。

matlab numeric equation
1个回答
0
投票

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')

enter image description here

但我怀疑这就是您真正想要的图表,让我解释一下。

对于那些不熟悉这些方程的读者,从这里,您告诉我们这个来源是否正确,达肯方程描述了二元溶液中材料的固态扩散

2.1.- 第一个变暗方程

enter image description here

2.2.- 第二个变暗方程

enter image description here

在这两种情况下,您都需要

N1
N2
,并且不清楚您使用的表达式是否真的是
N1
N2

如果您使用第一个方程,那么

N1
N2
沿
x
的梯度在哪里?

在这种情况下,不清楚您分配给

N1
N2
的值是否真的是原子分数。请相应纠正或评论。

如果您使用第二个方程,那么第一个分量的

a1
activity coefficient
在哪里?

你如何决定哪一个是第一个组件?

问题中的

S
是指带有帽子的
D
,即整体扩散性吗?

我的印象是你正在寻找

D_hat(x)
的情节,对吧?

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.