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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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