How to run this code? I dont know what I am missing?

1 回表示 (過去 30 日間)
Mohammed Najmi
Mohammed Najmi 2020 年 6 月 30 日
コメント済み: Mohammed Najmi 2020 年 7 月 1 日
Indium Composition (Variable Definition)
Lattice Constans
cInGaN =5.2142 ; c0GaN = 5.1864; c0InN = 5.7033;
aInGaN = 3.2112; a0GaN = 3.1890; a0InN = 3.5378;
Stiffness Constants
C13InN =6; C13GaN = 15.8;
C33InN = 12.1; C33GaN = 18.2;
D = x*c0InN+(1-x)*c0GaN;
E = x*C13InN+(1-x)*C13GaN;
F = x*C33InN+(1-x)*C33GaN;
G = x*cInGaN+(1-x)*c0GaN;
H =(cInGaN-D)/D + 2*E*(aInGaN-G)/(F*G);
solve (H,x);
  5 件のコメント
Geoff Hayes
Geoff Hayes 2020 年 6 月 30 日
Perhaps you need to define x as a syms like
syms x
cInGaN =5.2142 ; c0GaN = 5.1864; c0InN = 5.7033;
aInGaN = 3.2112; a0GaN = 3.1890; a0InN = 3.5378;
% etc.
Unfortunately, I don't have experince with the Symbolic Toolbox so can't say for certain if the above will help.
Image Analyst
Image Analyst 2020 年 6 月 30 日
編集済み: Image Analyst 2020 年 6 月 30 日
I'm not sure I understand. For any x you give it, you get various values for D, E, F, G, and H, so what is there so solve for?
cInGaN =5.2142 ; c0GaN = 5.1864; c0InN = 5.7033;
aInGaN = 3.2112; a0GaN = 3.1890; a0InN = 3.5378;
C13InN =6; C13GaN = 15.8;
C33InN = 12.1; C33GaN = 18.2;
allx = linspace(-15, 10, 100);
for k = 1 : 100
x = allx(k);
D(k) = x * c0InN+(1-x) * c0GaN
E(k) = x * C13InN+(1-x) * C13GaN
F(k) = x * C33InN+(1-x) * C33GaN
G(k) = x * cInGaN+(1-x) * c0GaN
H(k) =(cInGaN-D(k))/D(k) + 2 * E(k) * (aInGaN-G(k))/(F(k) * G(k))
end
plot(allx, D, '-', 'LineWidth', 2);
hold on;
plot(allx, E, '-', 'LineWidth', 2);
plot(allx, F, '-', 'LineWidth', 2);
plot(allx, G, '-', 'LineWidth', 2);
plot(allx, H, '-', 'LineWidth', 2);
grid on;
legend('D', 'E', 'F', 'G', 'H');
title('D, E, F, G, and H vs. x', 'FontSize', 20);
xlabel('x', 'FontSize', 20);
ylabel('D, E, F, G, or H', 'FontSize', 20);
You say you're trying to solve for x, so in the above plot, which value of x do you think would be the solution you are seeking? There are 4 x values where H is zero. Do you want them all? If so try ismembertol().

サインインしてコメントする。

採用された回答

Image Analyst
Image Analyst 2020 年 6 月 30 日
Try this to solve it numerically just by looking for the peak in H:
cInGaN =5.2142 ; c0GaN = 5.1864; c0InN = 5.7033;
aInGaN = 3.2112; a0GaN = 3.1890; a0InN = 3.5378;
C13InN =6; C13GaN = 15.8;
C33InN = 12.1; C33GaN = 18.2;
allx = linspace(-15, 10, 1000000);
for k = 1 : length(allx)
x = allx(k);
D(k) = x * c0InN+(1-x) * c0GaN;
E(k) = x * C13InN+(1-x) * C13GaN;
F(k) = x * C33InN+(1-x) * C33GaN;
G(k) = x * cInGaN+(1-x) * c0GaN;
H(k) =(cInGaN-D(k))/D(k) + 2 * E(k) * (aInGaN-G(k))/(F(k) * G(k));
end
plot(allx, D, '-', 'LineWidth', 2);
hold on;
plot(allx, E, '-', 'LineWidth', 2);
plot(allx, F, '-', 'LineWidth', 2);
plot(allx, G, '-', 'LineWidth', 2);
plot(allx, H, '-', 'LineWidth', 2);
grid on;
legend('D', 'E', 'F', 'G', 'H');
title('D, E, F, G, and H vs. x', 'FontSize', 20);
xlabel('x', 'FontSize', 20);
ylabel('D, E, F, G, or H', 'FontSize', 20);
H(H<0) = 0;
[peakValues, peakIndexes] = findpeaks(H)
allx(peakIndexes)
x1 = allx(peakIndexes(1)-1)
x2 = allx(peakIndexes(2)+1)
H(peakIndexes(1)-1)
H(peakIndexes(2)+1)
fprintf('H = 0 at x=%f and %f\n', x1, x2);
You'll see in the command window:
H = 0 at x=-10.033670 and 2.983618
  5 件のコメント
Image Analyst
Image Analyst 2020 年 7 月 1 日
Just change the limits in linspace() to include -186.56 and you'll see it.
cInGaN =5.2142 ; c0GaN = 5.1864; c0InN = 5.7033;
aInGaN = 3.2112; a0GaN = 3.1890; a0InN = 3.5378;
C13InN =6; C13GaN = 15.8;
C33InN = 12.1; C33GaN = 18.2;
allx = linspace(-200, 10, 100000);
for k = 1 : length(allx)
x = allx(k);
D(k) = x * c0InN+(1-x) * c0GaN;
E(k) = x * C13InN+(1-x) * C13GaN;
F(k) = x * C33InN+(1-x) * C33GaN;
G(k) = x * cInGaN+(1-x) * c0GaN;
H(k) =(cInGaN-D(k))/D(k) + 2 * E(k) * (aInGaN-G(k))/(F(k) * G(k));
end
plot(allx, D, '-', 'LineWidth', 2);
hold on;
plot(allx, E, '-', 'LineWidth', 2);
plot(allx, F, '-', 'LineWidth', 2);
plot(allx, G, '-', 'LineWidth', 2);
plot(allx, H, '-', 'LineWidth', 2);
grid on;
legend('D', 'E', 'F', 'G', 'H');
title('D, E, F, G, and H vs. x', 'FontSize', 20);
xlabel('x', 'FontSize', 20);
ylabel('D, E, F, G, or H', 'FontSize', 20);
fprintf('Done running %s.m.\n', mfilename);
Mohammed Najmi
Mohammed Najmi 2020 年 7 月 1 日
Wonderful!! Thank you sooo much!!!!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeApplications についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by