2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 [Mathematica] Обратная функция
Сообщение20.05.2013, 23:15 


08/03/11
186
Помогите разобраться с обратной функцией в Mathematica.

Кривая задана на плоскости $\vec R = (x_1, x_2(x_1))$, необходимо найти $x_1(s)$ и $x_2(s)$ для известной $s(x_1)$, s -- длинна кривой.

$ds(x_1) = \sqrt{1+ \left( \frac{d x_2}{d x_1} \right)^2} d x_1$

Код:
x2[x1_] := (0.4 30 10^-3) Cosh[4.682 x1] + (30 10^-3)/(4.682) Sinh[4.682 x1];
s[x1_] := NIntegrate[Sqrt[1 + (D[x2[t], t])^2], {t, 0, x1}];
stotal = s[0.17];
X1[(x_)?NumericQ] :=   Block[{y}, y /. FindRoot[x == s[y], {y, 0, 0.17}]];
Plot[{x2[X1[t]]}, {t, 0, stotal}]


plot выдает ошибку, хоть и строит все правильно
Код:
NIntegrate::nlim: t = y is not a valid limit of integration. >>

 Профиль  
                  
 
 Re: [Mathematica] Обратная функция
Сообщение21.05.2013, 19:40 
Аватара пользователя


15/01/06
200
Это не Plot выдает ошибку, а FindRoot, а точнее даже NIntegrate, который используется в правой части уравнения. А все потому что, как написано в хэлпе: "FindRoot first localizes the values of all variables, then evaluates f with the variables being symbolic, and then repeatedly evaluates the result numerically." А NIntegrate нечисленных значений не допускает и ругается.

 Профиль  
                  
 
 Re: [Mathematica] Обратная функция
Сообщение21.05.2013, 22:43 


08/03/11
186
Да, конечно, спасибо, итого, нужно заменить s[x1_] на s[x1_?NumericQ]

Можно так же сделать другим способом:
Код:
int[x_] := NIntegrate[Cos[t], {t, 0, x}];
list1 = Table[-Pi/2 + Pi i/500, {i, 0, 500}];
list2 = Table[int[-Pi/2 + Pi i/500], {i, 0, 500}];
table = Transpose[{list1, list2}];
eg4direct = Interpolation[table]
eg4inverse = Interpolation[Transpose[{eg4direct[[4]][[3]], eg4direct[[3]][[1]]}]]
Plot[{Abs[(eg4inverse[t] - ArcSin[t])/ArcSin[t]]}, {t, -1, 1},
PlotRange -> Automatic, GridLines -> Automatic]

Первый способ на краях интервала лучше, но требует больше времени

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

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



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

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


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

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