我用薛定諤方程分別求出199個phi和199個psi,現(xiàn)在的問題是phi*psi后求積分求不出來,代碼如圖所示。我嘗試了很多種method都不行。求助廣大強大的網(wǎng)友,該怎么求積分呢? 返回小木蟲查看更多
1D的高度振蕩的波函數(shù)的積分
mathematica
L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole = 0.34*9.1*10^-31; e = 1.6*10^-19; \[HBar] = 1.05*10^-34; Ne = 199;eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] + e*F*x*\[Phi][x]);{phivals, phifuns} = NDEigensystem[{eqn1, DirichletCondition[\[Phi][x] == 0, x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> {"FiniteElement", \ {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] - e*F*x*\[Psi][x]);{psivals, psifuns} = NDEigensystem[{eqn2, DirichletCondition[[Psi][x] == 0, x [GreaterSlantEqual] L/2 || x <= -L/2]}, [Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> {"FiniteElement", \ {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];Etable = Table[(psivals[] + phivals[[j]])/(1.6*10^-22), {i, Ne}, {j, Ne}];Itable = Table[ Abs[NIntegrate[psifuns[]*phifuns[[j]], {x, -L/2, L/2}, Method -> {"ExtrapolatingOscillatory"}]], {i, Ne}, {j, Ne}];,
L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole = 0.34*9.1*10^-31; e = 1.6*10^-19; \[HBar] = 1.05*10^-34; Ne = 199;eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] + e*F*x*\[Phi][x]);{phivals, phifuns} = NDEigensystem[{eqn1, DirichletCondition[\[Phi][x] == 0, x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> {"FiniteElement", \ {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] - e*F*x*\[Psi][x]);{psivals, psifuns} = NDEigensystem[{eqn2, DirichletCondition[[Psi][x] == 0, x [GreaterSlantEqual] L/2 || x <= -L/2]}, [Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> {"FiniteElement", \ {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];Etable = Table[(psivals + phivals[[j]])/(1.6*10^-22), {i, Ne}, {j, Ne}];Itable = Table[ Abs[NIntegrate[psifuns[]*phifuns[[j]], {x, -L/2, L/2}, Method -> {"ExtrapolatingOscillatory"}]], {i, Ne}, {j, Ne}];
L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole = 0.34*9.1*10^-31; e = 1.6*10^-19; [HBar] = 1.05*10^-34; Ne = 199; eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] + e*F*x*\[Phi][x]); eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] - e*F*x*\[Psi][x]) {phivals, phifuns} = NDEigensystem[{eqn1, DirichletCondition[\[Phi][x] == 0, x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" ->{"FiniteElement", {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}]; {psivals, psifuns} = NDEigensystem[{eqn2, DirichletCondition[\[Psi][x] == 0, x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> "FiniteElement", \{"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];
既然phi和psi都已經(jīng)計算出來(離散數(shù)據(jù)點),那么phi*psi也是確定的離散點,直接用梯形公式求解,當(dāng)然這種精度也較低。可以采用樣條插值增加點數(shù),然后再計算積分,這樣可以提高精度
Copyright © 2001-2026 小木蟲 意見反饋 廣告投放 漏洞提交
1D的高度振蕩的波函數(shù)的積分
mathematica
L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole =
0.34*9.1*10^-31; e = 1.6*10^-19; \[HBar] = 1.05*10^-34; Ne = 199;eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] +
e*F*x*\[Phi][x]);{phivals, phifuns} =
NDEigensystem[{eqn1,
DirichletCondition[\[Phi][x] == 0,
x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2,
L/2}, Ne,
Method -> {"SpatialDiscretization" -> {"FiniteElement", \
{"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] -
e*F*x*\[Psi][x]);{psivals, psifuns} = NDEigensystem[{eqn2, DirichletCondition[[Psi][x] == 0, x [GreaterSlantEqual] L/2 || x <= -L/2]}, [Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> {"FiniteElement", \ {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];Etable = Table[(psivals[] + phivals[[j]])/(1.6*10^-22), {i, Ne}, {j, Ne}];Itable = Table[ Abs[NIntegrate[psifuns[]*phifuns[[j]], {x, -L/2, L/2}, Method -> {"ExtrapolatingOscillatory"}]], {i, Ne}, {j, Ne}];,
L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole =
0.34*9.1*10^-31; e = 1.6*10^-19; \[HBar] = 1.05*10^-34; Ne = 199;eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] +
e*F*x*\[Phi][x]);{phivals, phifuns} =
NDEigensystem[{eqn1,
DirichletCondition[\[Phi][x] == 0,
x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2,
L/2}, Ne,
Method -> {"SpatialDiscretization" -> {"FiniteElement", \
{"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] -
e*F*x*\[Psi][x]);{psivals, psifuns} = NDEigensystem[{eqn2, DirichletCondition[[Psi][x] == 0, x [GreaterSlantEqual] L/2 || x <= -L/2]}, [Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> {"FiniteElement", \ {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];Etable = Table[(psivals + phivals[[j]])/(1.6*10^-22), {i, Ne}, {j, Ne}];Itable = Table[ Abs[NIntegrate[psifuns[]*phifuns[[j]], {x, -L/2, L/2}, Method -> {"ExtrapolatingOscillatory"}]], {i, Ne}, {j, Ne}];
L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole = 0.34*9.1*10^-31; e = 1.6*10^-19; [HBar] = 1.05*10^-34; Ne = 199;
eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] + e*F*x*\[Phi][x]);
eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] - e*F*x*\[Psi][x])
{phivals, phifuns} = NDEigensystem[{eqn1, DirichletCondition[\[Phi][x] == 0, x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" ->{"FiniteElement", {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];
{psivals, psifuns} = NDEigensystem[{eqn2, DirichletCondition[\[Psi][x] == 0, x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> "FiniteElement", \{"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];
既然phi和psi都已經(jīng)計算出來(離散數(shù)據(jù)點),那么phi*psi也是確定的離散點,直接用梯形公式求解,當(dāng)然這種精度也較低。可以采用樣條插值增加點數(shù),然后再計算積分,這樣可以提高精度