Лучший способ построить это
Я пытаюсь построить ДОС бесконечной линейной цепи. Следующим:
s = 10; (*Number of decimation*)
t = 1;
step = 0.01;
SubStar[E] = w + I*\[Eta];
\[Eta] = 0.01;
\[Epsilon] = 0;
Subscript[\[Beta], 1] = t*1/(SubStar[E] - \[Epsilon])*t;
Subscript[\[Beta], 0] = 1;
For[j = 2, j < s + 1, j++,
Subscript[\[Beta], j] =
Subscript[\[Beta], j - 1]*1/(SubStar[E] - \[Epsilon] - 2 \!\(
\*SubsuperscriptBox[\(\[Sum]\), \(i = 1\), \(j - 1\)]
\*SubscriptBox[\(\[Beta]\), \(i\)]\))*Subscript[\[Beta], j - 1]];
Subscript[G, 1, 1] = 1/(SubStar[E] - \[Epsilon] - \!\(
\*SubsuperscriptBox[\(\[Sum]\), \(j = 1\), \(s\)]
\*SubscriptBox[\(\[Beta]\), \(j\)]\));
G22 = (1/(1 - Subscript[G, 1, 1]*Subscript[G, 1, 1]))*Subscript[G, 1,
1];
\[Rho] = -1/\[Pi]*Im[G22];
Я хочу построить [Rho] как функцию w. Итак, если я позволю w неопределенным в начале (код выше) и заговор: ListPlot[Table[{w, \[Rho]}, {w, -2.5, 2.5, step}], Joined -> True, Frame -> True]
Это работает хорошо, но очень медленно, возможно, потому что математика делает все это алгебраически. Если я изменю w, например, используя: w=Range[-2.5,2.5,step], то я могу построить что-то вроде этого:
ListPlot[{\[Rho]}, Joined -> True, Frame -> True, PlotStyle -> Orange]
Это работает довольно быстро, но горизонтальная ось не в порядке по сравнению с предыдущим графиком.
Затем я подумал сделать что-то вроде, определяя
\[Rho][w]:= Module[{.....},....]
И работа с этим как функция и сюжет в конце. Какие-либо предложения? Что я должен делать?
Edit1: после предложения:
1 ответ
Почему не только это?
Plot[\[Rho], {w, -2.5, 2.5}, Frame -> True],
или еще лучше
Plot[\[Rho], {w, -2.5, 2.5}, Frame -> True, PlotRange -> All]
Возможно, попробуйте это перед построением графика, но это отнимает много времени.
\[Rho] = Simplify[-1/\[Pi]*Im[G22]]
Я попробовал это, что было интересно...
For[j = 2, j < s + 1, j++,
Print[j];
Subscript[\[Beta], j] =
Simplify[Subscript[\[Beta],
j - 1]*1/(SubStar[E] - \[Epsilon] - 2 \!\(
\*SubsuperscriptBox[\(\[Sum]\), \(i = 1\), \(j - 1\)]
\*SubscriptBox[\(\[Beta]\), \(i\)]\))*Subscript[\[Beta], j - 1]]]
10-я итерация - убийца. Прервано с этим сообщением:-