2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Ввод и вывод массива значений
Сообщение26.01.2019, 19:22 


26/01/19
1
Добрый вечер. Имеется система ДУ, в которых имеются две константы alfa и gamma. Мне необходимо задавать эти константы в виде массива. После этого мне необходимо получить таблицу (или матрицу) значений искомых переменных при вышеописанных заданных значениях alfa и gamma и серию графиков.

Полный код программы. Здесь alfa и gamma представлены фиксированными величинами.

Код:
\[Kappa] = 0.01;
\[Alpha] = 0.01;
solution =
  NDSolve[{Derivative[1][r][t] == (\[Kappa] Subscript[P, r][t])/Sqrt[
     Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
      Subscript[P, \[Phi]][t]^2], r[0] == 1.0,
    Derivative[1][\[CapitalTheta]][
      t] == (\[Kappa] Subscript[P, \[Theta]][t])/(
     r[t] Sqrt[
      Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
       Subscript[P, \[Phi]][t]^2]), \[CapitalTheta][0] == 0.5,
    Derivative[1][\[Phi]][t] == (\[Kappa] Subscript[P, \[Phi]][t])/(
     r[t] Sin[\[CapitalTheta][t]] Sqrt[
      Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
       Subscript[P, \[Phi]][t]^2]), \[Phi][0] == 0.1,
    Derivative[1][Subscript[P, r]][
      t] == (\[Kappa] Subscript[P, \[Theta]][t]^2)/(
      r[t] Sqrt[
       Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
        Subscript[P, \[Phi]][t]^2]) + (\[Kappa] Subscript[P, \[Phi]][
        t]^2)/(r[t] Sqrt[
       Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
        Subscript[P, \[Phi]][t]^2]) + \[Alpha] (
       Subscript[P, \[Theta]][t] Sign[Cos[\[CapitalTheta][t]]])/(
       r[t] Sqrt[
        Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
         Subscript[P, \[Phi]][t]^2]), Subscript[P, r][0] == 0.6,
    Derivative[1][Subscript[P, \[Theta]]][
      t] == (-\[Kappa] Subscript[P, r][t] Subscript[P, \[Theta]][t])/(
      r[t] Sqrt[
       Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
        Subscript[P, \[Phi]][t]^2]) + (\[Kappa] Subscript[P, \[Phi]][
         t]^2)/(r[t] Sqrt[
        Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
         Subscript[P, \[Phi]][t]^2]) Cot[\[CapitalTheta][t]] - (
      Sin[\[CapitalTheta][t]] Sign[Cos[\[CapitalTheta][t]]])/r[t] +
      Subscript[P, \[Phi]][t]/ Sqrt[
       Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
        Subscript[P, \[Phi]][t]^2] Sign[Cos[\[CapitalTheta][t]]]/
       r[t]^2 - (\[Alpha] Subscript[P, r][t])/Sqrt[
       Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
        Subscript[P, \[Phi]][t]^2] Sign[Cos[\[CapitalTheta][t]]]/r[t],
     Subscript[P, \[Theta]][0] == 0.8,
    Derivative[1][Subscript[P, \[Phi]]][
      t] == -\[Kappa] (Subscript[P, r][t] Sin[\[CapitalTheta][t]] +
         Subscript[P, \[Theta]][t] Cos[\[CapitalTheta][t]]) Subscript[
        P, \[Phi]][t]/(
       r[t] Sqrt[
        Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
         Subscript[P, \[Phi]][t]^2] Sin[\[CapitalTheta][t]]) -
      Subscript[P, \[Theta]][t]/Sqrt[
       Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
        Subscript[P, \[Phi]][t]^2] Sign[Cos[\[CapitalTheta][t]]]/
       r[t]^2, Subscript[P, \[Phi]][0] == 0},
   {r, \[CapitalTheta], \[Phi], Subscript[P, r], Subscript[
    P, \[Theta]], Subscript[P, \[Phi]]}, {t, 0, 233.5},
   MaxSteps -> 1000000000,
   Method -> {"TimeIntegration" -> "ExplicitRungeKutta"}];


ParametricPlot[
Evaluate[{10 r[t] Sin[\[CapitalTheta][t]] , Subscript[P, r][t]} /.
   solution], {t, 0, 233.5},
PlotStyle ->
  Directive[RGBColor[0.01`, 0.01`, 0.01`], AbsoluteThickness[0.`]],
ImageSize -> Large, PlotTheme -> "Scientific", Axes -> True,
LabelStyle -> {GrayLevel[0]}, AxesLabel -> {None, None},
FrameLabel -> {{HoldForm["\!\(\*SubscriptBox[\(P\), \(r\)]\)[t]"],
    None}, {HoldForm["10rSin[\[CapitalTheta][t]]"], None}},
PlotLabel -> None]

ParametricPlot[
Evaluate[{10 r[t] Sin[\[CapitalTheta][t]], Subscript[P, \[Phi]][t]} /.
   solution], {t, 0, 233.5},
PlotStyle ->
  Directive[RGBColor[0.01`, 0.01`, 0.01`], AbsoluteThickness[0.`]],
ImageSize -> Large, PlotTheme -> "Scientific", Axes -> True,
LabelStyle -> {GrayLevel[0]}, AxesLabel -> {None, None},
FrameLabel -> {{HoldForm[
     "\!\(\*SubscriptBox[\(P\), \(\[Phi]\)]\)[t]"],
    None}, {HoldForm["10rSin[\[CapitalTheta][t]]"], None}},
PlotLabel -> None]

ParametricPlot[
Evaluate[{10 r[t] Sin[\[CapitalTheta][t]],
    Subscript[P, \[Theta]][t]} /. solution], {t, 0, 233.5},
PlotStyle ->
  Directive[RGBColor[0.01`, 0.01`, 0.01`], AbsoluteThickness[0.`]],
ImageSize -> Large, PlotTheme -> "Scientific", Axes -> True,
LabelStyle -> {GrayLevel[0]}, AxesLabel -> {None, None},
FrameLabel -> {{HoldForm[
     "\!\(\*SubscriptBox[\(P\), \(\[Theta]\)]\)[t]"],
    None}, {HoldForm["10rSin[\[CapitalTheta][t]]"], None}},
PlotLabel -> None]

ParametricPlot[
Evaluate[{10 r[t] Sin[\[CapitalTheta][t]], Sqrt[
    Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
     Subscript[P, \[Phi]][t]^2]} /. solution], {t, 0, 233.5},
PlotStyle ->
  Directive[RGBColor[0.01`, 0.01`, 0.01`], AbsoluteThickness[0.`]],
ImageSize -> Large, PlotTheme -> "Scientific", Axes -> True,
LabelStyle -> {GrayLevel[0]}, AxesLabel -> {None, None},
FrameLabel -> {{HoldForm["\[Gamma]"],
    None}, {HoldForm["10rSin[\[CapitalTheta][t]]"], None}},
PlotLabel -> None]

ParametricPlot[
Evaluate[{10 r[t] Sin[\[CapitalTheta][t]],
    5 r[t] Cos[\[CapitalTheta][t]]} /. solution], {t, 0, 233.5},
PlotStyle ->
  Directive[RGBColor[0.01`, 0.01`, 0.01`], AbsoluteThickness[0.`]],
ImageSize -> Large, PlotTheme -> "Scientific", Axes -> True,
LabelStyle -> {GrayLevel[0]}, AxesLabel -> {None, None},
FrameLabel -> {{HoldForm["5rCos[\[CapitalTheta][t]"],
    None}, {HoldForm["10rSin[\[CapitalTheta][t]]"], None}},
PlotLabel -> None]

ParametricPlot[
Evaluate[{5 r[t] Cos[\[CapitalTheta][t]], Sqrt[
    Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
     Subscript[P, \[Phi]][t]^2]} /. solution], {t, 0, 233.5},
PlotStyle ->
  Directive[RGBColor[0.01`, 0.01`, 0.01`], AbsoluteThickness[0.`]],
ImageSize -> Large, PlotTheme -> "Scientific", Axes -> True,
LabelStyle -> {GrayLevel[0]}, AxesLabel -> {None, None},
FrameLabel -> {{HoldForm["\[Gamma]"],
    None}, {HoldForm["5rCos[\[CapitalTheta][t]]"], None}},
PlotLabel -> None]

spisok2 =
Table[{Evaluate[{r[t] Sin[\[CapitalTheta][t]],
      r[t] Cos[\[CapitalTheta][t]]} /. solution]}, {t, 233.5, 233.5}]
spisok1 =
Table[{Evaluate[{r[t] Sin[\[CapitalTheta][t]], Sqrt[
      Subscript[P, r][t]^2 + Subscript[P, \[Theta]][t]^2 +
       Subscript[P, \[Phi]][t]^2]} /. solution]}, {t, 233.5, 233.5}]



P.S. Заранее благодарен за ответ!

 Профиль  
                  
 
 Re: Ввод и вывод массива значений
Сообщение26.01.2019, 23:30 
Заслуженный участник


25/02/11
1786
Не очень понятна конкретика, но вот, допустим, есть таблица значений параметров

tabpar={{alfa1, gamma1},{alfa2, gamma2},...}

Можно определить решение как функцию этих параметров:

solution[alfa_, gamma_]:=...

А затем применить к таблице параметров:

tabsol=solution@@@tabpar

Имея список решений tabsol можно получить таблицу графиков и все прочее.

 Профиль  
                  
 
 Re: Ввод и вывод массива значений
Сообщение28.01.2019, 16:01 
Экс-модератор
Аватара пользователя


23/12/05
12046
ALFaust в сообщении #1372053 писал(а):
P.S. Заранее благодарен за ответ!

На какой вопрос?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Null


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group