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
1804
Так это система полиномиальных уравнений. Она может и не иметь решения, выражающегося через радикалы и т.п. Да еще с кучей параметров. Имеет смысл присвоить им какие-то значения посмотреть, что получится.

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



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

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


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

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