2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 mathematica численное решение уравнения
Сообщение27.07.2012, 16:44 


20/04/12
114
пытаюсь решить эту систему уравнений относительно (x,y)

$u = c_1 + x + k_1 x(x^2 + y^2)$
$v = c_2 + y + k_2 y(x^2 + y^2)$

например сведём к такой форме
Изображение
Изображение

получаю ответ относительно t


Цитата:
Solve[t == ((u - c1)^2)/((1 +
k1*t^2)) + ((v - c2)^2)/((1 + k2*t)^2), {t}]
{{t -> Root[-c1^2 - c2^2 + 2 c1 u - u^2 + 2 c2 v -
v^2 + (1 - 2 c1^2 k2 + 4 c1 k2 u - 2 k2 u^2) #1 + (-c2^2 k1 +
2 k2 - c1^2 k2^2 + 2 c1 k2^2 u - k2^2 u^2 + 2 c2 k1 v -
k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2 k1 k2 #1^4 +
k1 k2^2 #1^5 &, 1]}, {t ->
Root[-c1^2 - c2^2 + 2 c1 u - u^2 + 2 c2 v -
v^2 + (1 - 2 c1^2 k2 + 4 c1 k2 u - 2 k2 u^2) #1 + (-c2^2 k1 +
2 k2 - c1^2 k2^2 + 2 c1 k2^2 u - k2^2 u^2 + 2 c2 k1 v -
k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2 k1 k2 #1^4 +
k1 k2^2 #1^5 &, 2]}, {t ->
Root[-c1^2 - c2^2 + 2 c1 u - u^2 + 2 c2 v -
v^2 + (1 - 2 c1^2 k2 + 4 c1 k2 u - 2 k2 u^2) #1 + (-c2^2 k1 +
2 k2 - c1^2 k2^2 + 2 c1 k2^2 u - k2^2 u^2 + 2 c2 k1 v -
k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2 k1 k2 #1^4 +
k1 k2^2 #1^5 &, 3]}, {t ->
Root[-c1^2 - c2^2 + 2 c1 u - u^2 + 2 c2 v -
v^2 + (1 - 2 c1^2 k2 + 4 c1 k2 u - 2 k2 u^2) #1 + (-c2^2 k1 +
2 k2 - c1^2 k2^2 + 2 c1 k2^2 u - k2^2 u^2 + 2 c2 k1 v -
k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2 k1 k2 #1^4 +
k1 k2^2 #1^5 &, 4]}, {t ->
Root[-c1^2 - c2^2 + 2 c1 u - u^2 + 2 c2 v -
v^2 + (1 - 2 c1^2 k2 + 4 c1 k2 u - 2 k2 u^2) #1 + (-c2^2 k1 +
2 k2 - c1^2 k2^2 + 2 c1 k2^2 u - k2^2 u^2 + 2 c2 k1 v -
k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2 k1 k2 #1^4 +
k1 k2^2 #1^5 &, 5]}}

NSolve[t == ((u - c1)^2)/((1 +
k1*t^2)) + ((v - c2)^2)/((1 + k2*t)^2), {t}]
{{t -> Root[-1. c1^2 - 1. c2^2 + 2. c1 u - 1. u^2 + 2. c2 v -
1. v^2 + (1. - 2. c1^2 k2 + 4. c1 k2 u -
2. k2 u^2) #1 + (-1. c2^2 k1 + 2. k2 - 1. c1^2 k2^2 +
2. c1 k2^2 u - 1. k2^2 u^2 + 2. c2 k1 v -
1. k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2. k1 k2 #1^4 +
k1 k2^2 #1^5 &, 1]}, {t ->
Root[-1. c1^2 - 1. c2^2 + 2. c1 u - 1. u^2 + 2. c2 v -
1. v^2 + (1. - 2. c1^2 k2 + 4. c1 k2 u -
2. k2 u^2) #1 + (-1. c2^2 k1 + 2. k2 - 1. c1^2 k2^2 +
2. c1 k2^2 u - 1. k2^2 u^2 + 2. c2 k1 v -
1. k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2. k1 k2 #1^4 +
k1 k2^2 #1^5 &, 2]}, {t ->
Root[-1. c1^2 - 1. c2^2 + 2. c1 u - 1. u^2 + 2. c2 v -
1. v^2 + (1. - 2. c1^2 k2 + 4. c1 k2 u -
2. k2 u^2) #1 + (-1. c2^2 k1 + 2. k2 - 1. c1^2 k2^2 +
2. c1 k2^2 u - 1. k2^2 u^2 + 2. c2 k1 v -
1. k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2. k1 k2 #1^4 +
k1 k2^2 #1^5 &, 3]}, {t ->
Root[-1. c1^2 - 1. c2^2 + 2. c1 u - 1. u^2 + 2. c2 v -
1. v^2 + (1. - 2. c1^2 k2 + 4. c1 k2 u -
2. k2 u^2) #1 + (-1. c2^2 k1 + 2. k2 - 1. c1^2 k2^2 +
2. c1 k2^2 u - 1. k2^2 u^2 + 2. c2 k1 v -
1. k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2. k1 k2 #1^4 +
k1 k2^2 #1^5 &, 4]}, {t ->
Root[-1. c1^2 - 1. c2^2 + 2. c1 u - 1. u^2 + 2. c2 v -
1. v^2 + (1. - 2. c1^2 k2 + 4. c1 k2 u -
2. k2 u^2) #1 + (-1. c2^2 k1 + 2. k2 - 1. c1^2 k2^2 +
2. c1 k2^2 u - 1. k2^2 u^2 + 2. c2 k1 v -
1. k1 v^2) #1^2 + (k1 + k2^2) #1^3 + 2. k1 k2 #1^4 +
k1 k2^2 #1^5 &, 5]}}


с флагом Reals, всё прочно зависает, хотя может он мне не нужен?
как среди 5 ответов выбрать нужный?
потом еще непонятна нотация, что означает #?и & ? и еще 1. имеется ввиду просто 1 или это значит 1 и всё что после точки идет в десятичные?

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение27.07.2012, 21:20 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Отвечу хотя бы частично. Во-первых, «#—&»-нотация используется в Математике для записи так называемых чистых функций (pure functions). Это одна из основных концепций функционального программирования вообще и системы Mathematica в частности. Несколько странно, что вы, пользуясь Математикой, не знаете об этом. Посмотрите в хэлпе по ключевому слову Function.
Пример: задаём определение f=#^2&. Оно эквивалентно определению такой, к примеру, функции: f[x_]:=x^2.
Оба определения, будучи применёнными в форме f[x], дают x^2 (и, понятное дело, f[5] выдаст нам 25). Но чистые функции удобнее во многих отношениях.

-- 27.07.2012, 20:34 --

Далее, уважаемый mrgloom_. О каком численном решении системы может идти речь, когда у вас все параметры — символьные?!
А единица с точкой в Математике значит, что данная константа принимается как число с плавающей запятой (принадлежащее домену Reals) с машинной точностью (16 цифр после запятой).

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение30.07.2012, 16:31 


20/04/12
114
Цитата:
Отвечу хотя бы частично. Во-первых, «#—&»-нотация используется в Математике для записи так называемых чистых функций (pure functions). Это одна из основных концепций функционального программирования вообще и системы Mathematica в частности. Несколько странно, что вы, пользуясь Математикой, не знаете об этом. Посмотрите в хэлпе по ключевому слову Function.

я так и не понял, что подставляется вместо #1 в данном случае

Цитата:
О каком численном решении системы может идти речь, когда у вас все параметры — символьные?!

я думал NSolve отвечает за численный вывод.
впринципе я могу определить константы, это поможет?

еще хотелось бы узнать как заставить математику выдавать код после использования CForm в более компактном виде, т.е. там где можно что то заменить на переменную, это выносится ,а в формуле там где нужно заменятся и при подсчете считается 1 раз всего, а потом просто подставляется в нужное место.

еще есть сложное уравнение, не смог дождаться решения, съело всю память.
что можете порекомендовать для решения?
Цитата:
Solve[(b13+(b11 (m13+m11 x1+m12 y1))/(m33+m31 x1+m32 y1)+(b12 (m23+m21 x1+m22 y1))/(m33+m31 x1+m32 y1))/(b33+(b31 (m13+m11 x1+m12 y1))/(m33+m31 x1+m32 y1)+(b32 (m23+m21 x1+m22 y1))/(m33+m31 x1+m32 y1))==
(m13+(m11 (a13+a11 x1+a12 y1))/(a33+a31 x1+a32 y1)+(m12 (a23+a21 x1+a22 y1))/(a33+a31 x1+a32 y1))/(m33+(m31 (a13+a11 x1+a12 y1))/(a33+a31 x1+a32 y1)+(m32 (a23+a21 x1+a22 y1))/(a33+a31 x1+a32 y1))&&
(b23+(b21 (m13+m11 x1+m12 y1))/(m33+m31 x1+m32 y1)+(b22 (m23+m21 x1+m22 y1))/(m33+m31 x1+m32 y1))/(b33+(b31 (m13+m11 x1+m12 y1))/(m33+m31 x1+m32 y1)+(b32 (m23+m21 x1+m22 y1))/(m33+m31 x1+m32 y1))==
(m23+(m21 (a13+a11 x1+a12 y1))/(a33+a31 x1+a32 y1)+(m22 (a23+a21 x1+a22 y1))/(a33+a31 x1+a32 y1))/(m33+(m31 (a13+a11 x1+a12 y1))/(a33+a31 x1+a32 y1)+(m32 (a23+a21 x1+a22 y1))/(a33+a31 x1+a32 y1))&&
(b13+(b11 (m13+m11 x2+m12 y2))/(m33+m31 x2+m32 y2)+(b12 (m23+m21 x2+m22 y2))/(m33+m31 x2+m32 y2))/(b33+(b31 (m13+m11 x2+m12 y2))/(m33+m31 x2+m32 y2)+(b32 (m23+m21 x2+m22 y2))/(m33+m31 x2+m32 y2))==
(m13+(m11 (a13+a11 x2+a12 y2))/(a33+a31 x2+a32 y2)+(m12 (a23+a21 x2+a22 y2))/(a33+a31 x2+a32 y2))/(m33+(m31 (a13+a11 x2+a12 y2))/(a33+a31 x2+a32 y2)+(m32 (a23+a21 x2+a22 y2))/(a33+a31 x2+a32 y2))&&
(b23+(b21 (m13+m11 x2+m12 y2))/(m33+m31 x2+m32 y2)+(b22 (m23+m21 x2+m22 y2))/(m33+m31 x2+m32 y2))/(b33+(b31 (m13+m11 x2+m12 y2))/(m33+m31 x2+m32 y2)+(b32 (m23+m21 x2+m22 y2))/(m33+m31 x2+m32 y2))==
(m23+(m21 (a13+a11 x2+a12 y2))/(a33+a31 x2+a32 y2)+(m22 (a23+a21 x2+a22 y2))/(a33+a31 x2+a32 y2))/(m33+(m31 (a13+a11 x2+a12 y2))/(a33+a31 x2+a32 y2)+(m32 (a23+a21 x2+a22 y2))/(a33+a31 x2+a32 y2))&&
(b13+(b11 (m13+m11 x3+m12 y3))/(m33+m31 x3+m32 y3)+(b12 (m23+m21 x3+m22 y3))/(m33+m31 x3+m32 y3))/(b33+(b31 (m13+m11 x3+m12 y3))/(m33+m31 x3+m32 y3)+(b32 (m23+m21 x3+m22 y3))/(m33+m31 x3+m32 y3))==
(m13+(m11 (a13+a11 x3+a12 y3))/(a33+a31 x3+a32 y3)+(m12 (a23+a21 x3+a22 y3))/(a33+a31 x3+a32 y3))/(m33+(m31 (a13+a11 x3+a12 y3))/(a33+a31 x3+a32 y3)+(m32 (a23+a21 x3+a22 y3))/(a33+a31 x3+a32 y3))&&
(b23+(b21 (m13+m11 x3+m12 y3))/(m33+m31 x3+m32 y3)+(b22 (m23+m21 x3+m22 y3))/(m33+m31 x3+m32 y3))/(b33+(b31 (m13+m11 x3+m12 y3))/(m33+m31 x3+m32 y3)+(b32 (m23+m21 x3+m22 y3))/(m33+m31 x3+m32 y3))==
(m23+(m21 (a13+a11 x3+a12 y3))/(a33+a31 x3+a32 y3)+(m22 (a23+a21 x3+a22 y3))/(a33+a31 x3+a32 y3))/(m33+(m31 (a13+a11 x3+a12 y3))/(a33+a31 x3+a32 y3)+(m32 (a23+a21 x3+a22 y3))/(a33+a31 x3+a32 y3))&&
(b13+(b11 (m13+m11 x4+m12 y4))/(m33+m31 x4+m32 y4)+(b12 (m23+m21 x4+m22 y4))/(m33+m31 x4+m32 y4))/(b33+(b31 (m13+m11 x4+m12 y4))/(m33+m31 x4+m32 y4)+(b32 (m23+m21 x4+m22 y4))/(m33+m31 x4+m32 y4))==
(m13+(m11 (a13+a11 x4+a12 y4))/(a33+a31 x4+a32 y4)+(m12 (a23+a21 x4+a22 y4))/(a33+a31 x4+a32 y4))/(m33+(m31 (a13+a11 x4+a12 y4))/(a33+a31 x4+a32 y4)+(m32 (a23+a21 x4+a22 y4))/(a33+a31 x4+a32 y4))&&
(b23+(b21 (m13+m11 x4+m12 y4))/(m33+m31 x4+m32 y4)+(b22 (m23+m21 x4+m22 y4))/(m33+m31 x4+m32 y4))/(b33+(b31 (m13+m11 x4+m12 y4))/(m33+m31 x4+m32 y4)+(b32 (m23+m21 x4+m22 y4))/(m33+m31 x4+m32 y4))==
(m23+(m21 (a13+a11 x4+a12 y4))/(a33+a31 x4+a32 y4)+(m22 (a23+a21 x4+a22 y4))/(a33+a31 x4+a32 y4))/(m33+(m31 (a13+a11 x4+a12 y4))/(a33+a31 x4+a32 y4)+(m32 (a23+a21 x4+a22 y4))/(a33+a31 x4+a32 y4))&&m33==1,{m11,m12,m13,m21,m22,m23,m31,m32}]

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение30.07.2012, 17:01 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
mrgloom_ в сообщении #601034 писал(а):
я так и не понял, что подставляется вместо #1 в данном случае

Из документации:
Цитата:
When Function[body] or body& is applied to a set of arguments, # (or #1) is replaced by the first argument, #2 by the second, and so on. #0 is replaced by the function itself.
Что именно непонятно?

mrgloom_ в сообщении #601034 писал(а):
впринципе я могу определить константы, это поможет?
Должно.

mrgloom_ в сообщении #601034 писал(а):
хотелось бы узнать как заставить математику выдавать код после использования CForm в более компактном виде,
Простите, в этом не разбираюсь.

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение01.08.2012, 10:29 


20/04/12
114
прописал все коэффициенты в уравнение по {m11,m12,m13,m21,m22,m23,m31,m32}
использовал NSolve математика думает и думает и даже непонятно как понять на каком этапе находится процесс, такое ощущение, что всё зависло.
нельзя сделать так, чтобы например вывело например первую переменную, потом вторую и т.д.

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение01.08.2012, 11:39 
Заслуженный участник


25/02/11
1797
Так это система полиномиальных уравнений. Она может и не иметь решения, выражающегося через радикалы и т.п. Да еще с кучей параметров. Имеет смысл присвоить им какие-то значения посмотреть, что получится.

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение01.08.2012, 12:17 


20/04/12
114
так я и прописывал $a_{i,j} $ и $b_{i,j}$ численно и использовал NSolve все равно не помогает.
еще известно,что $a_{31}=0,a_{32}=0,a_{33}=1,b_{33}=1,m_{33}=1$.
может быть проблема еще в том, что для $b_{i,j} $ я указывал только лишь примерные значения, т.е. есть некоторая погрешность.

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение01.08.2012, 15:27 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
mrgloom_ в сообщении #601806 писал(а):
еще известно,что $a_{31}=0,a_{32}=0,a_{33}=1,b_{33}=1,m_{33}=1$.
Так пропишите их явно.
mrgloom_ в сообщении #601806 писал(а):
я указывал только лишь примерные значения, т.е. есть некоторая погрешность.
Функция NSolve работает именно с приближёнными — численными — значениями, и выдаваемых ею решениях всегда есть некоторая погрешность.

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение01.08.2012, 15:30 


20/04/12
114
Aritaborian в сообщении #601888 писал(а):
mrgloom_ в сообщении #601806 писал(а):
еще известно,что $a_{31}=0,a_{32}=0,a_{33}=1,b_{33}=1,m_{33}=1$.
Так пропишите их явно.
mrgloom_ в сообщении #601806 писал(а):
я указывал только лишь примерные значения, т.е. есть некоторая погрешность.
Функция NSolve работает именно с приближёнными — численными — значениями, и выдаваемых ею решениях всегда есть некоторая погрешность.


я же говорю я их прописывал перед уравнением как $a_{11}=1.7345$ и т.д. или надо прям в самом уравнении прописывать?

 Профиль  
                  
 
 Re: mathematica численное решение уравнения
Сообщение01.08.2012, 15:50 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
mrgloom_ в сообщении #601889 писал(а):
или надо прям в самом уравнении прописывать
Ну, в таком случае — не надо.
А вообще, у меня ощущение, что вы «откусили» слишком большой кусок и не можете его «проглотить». Возможно, Математике в самом деле попросту не хватает ресурсов. Попробуйте разделить задачу на части, которые могут быть решены последовательно.

(Оффтоп)

Последние дни пишу с компа, на котором Математика не установлена, поэтому не могу сам попробовать сделать что-нибудь с вашей задачей, да и советы даю чисто по памяти, без проверки, так что, простите, если что не так.

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

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



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

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


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

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