2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Помогите чайнику, пожалуйста.
Сообщение14.06.2006, 20:04 


04/06/06
16
Уважаемые форумчане.

Помогите, пожалуйста, чайнику. :oops: С программированием всегда были траблы.
Думал, прижмет, разрулю. Что-то не разруливается :(
Проблема такова: нужно найти коэффициенты a_n, b_n, где n от 0 до некоторого N.
Для каждых a_n, b_n есть неоднородная СЛАУ, в правой части n-ой СЛАУ стоит выражение от a_i,b_i, где 0<=i<n-1. При этом известны a_0, b_0.

Я так понимаю, что нужен цикл. Решается СЛАУ1, ее решение попадает в правую часть СЛАУ2 и т.д. до n. Решил написать цикл в Mathematca, используя встроенное умение решать СЛАУ.
Написал вроде цикл, но не работает.
Буду очень признателен, если кто объяснить в чем трабл.....
Программка:
For[n = 1; a_ 0 = 1; k = 3; q = 4; a = 10; b_ 0 = ((3^2 - 4^2 - 2*i*3*9))/25; E^2=3^2 + 4^2;
m_n = {{(-E), (-((a^2)))*((n^2))+a*n*((2*i*k + 2*q))+k^2-q^2-2*i*k*q}, {(-((a^2)))*((n^2))+
a*n*((2*i*k-2*q))+k^2-q^2+2*i*k*q,(-E)}}; m_n . { a_n, b_n} ==
{(-e)*U*([Sum]+(j=o)%(n-1)a_j*(((-1)))^((n+1-j))) ,(-e)*U*([Sum]+(j=o)%(n - 1)b_j*(((-1)))^((n+1- j)))}, n <10, n = n + 1;LinearSolve[m_n, {a_n, b_n}]; Print[a_n]]

Премного благодарен. :roll: :roll: :roll:

 Профиль  
                  
 
 
Сообщение14.06.2006, 21:49 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Чегой-то Mathematica на Ваш текст ругается... Вы какой версией пользовались?

И после n = n + 1 не запятая ли должна быть?

А вообще, что Вы пытаетесь написать? Я никак не могу понять Ваш синтаксис (у Mathematica он вообще нетрадиционный -- например, a_b -- это проверка на соответсвие образцу, а не индексация. Вы проверку имели в виду?).

 Профиль  
                  
 
 
Сообщение15.06.2006, 10:50 


04/06/06
16
Большое спасибо за ответ.
Mathematica 4.
Не знал, что _ не индексация, а как вводиться индексация? :oops:
Синтаксис свой я сам не понимаю, отсюда все проблемы......

Говорю же, ничего не понимаю :oops: :roll:
Может, посоветуете, почитать чего. :roll:

 Профиль  
                  
 
 
Сообщение15.06.2006, 12:30 
Заслуженный участник
Аватара пользователя


03/03/06
648
stud если Вам нужно решить указанную СЛАУ скажем для того чтобы сдат зачет по ЧМ, то воспользуйтесь уже готовыми программами (в данной библиотеке есть такие книги); если Вам нужно решить СЛАУ именно в СКМ Mathematica, то почитайте тот же help по циклу For(лично я в таких случаях пользуюсь Maple - программировать можно как в Pascal, ну или MatLab- С/С++); если же Вы хотите действительно освоить численные методы решения СЛАУ, то это уж численные методы(метод итераций). :wink:

 Профиль  
                  
 
 
Сообщение15.06.2006, 17:04 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
stud писал(а):
Не знал, что _ не индексация, а как вводиться индексация?

a[[k]]

 Профиль  
                  
 
 
Сообщение15.06.2006, 17:23 
Заслуженный участник
Аватара пользователя


09/10/05
1142
А что за индексация? Вот такая $a_k$?

Если у Вас английская версия, то заходите $file \to palettes \to 2 AlgebraicManipulation$ и ещё $file \to palettes \to 4 BasicInput $, с помощью этих двух палет возможны любые оперции.
Ну и естественно help прочтите. Я, например, если что из него просто копирую.

 Профиль  
                  
 
 
Сообщение15.06.2006, 17:58 


04/06/06
16
Всем спасибо за ответы.
reader_st
Ситуация такова. Я поступил в аспирантуру физфака, сменив немного тематику. До этого требовалось только умение считать аналитически. Сейчас возникла потребность в знании алгоритмов ЧМ и их реализации в любой среде. Начну, наверно, с лекций по ЧМ, буду пробовать реализовывать в С или в Фортране.
Мне наивно думается, что особых программерских навыков не потребуется.

2All
Сделел правильную индексацию. Программа печатает просто аргумент Print[], мне даже неизвестно, посчитала ли она коэффициенты a и b.

Только не смейтесь надо мной сильно :oops: :roll:

 Профиль  
                  
 
 
Сообщение15.06.2006, 18:43 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
А Вы не можете используя тег math написать, что Вы пытаетесь сделать?

Что-нибудь типа $a_k = k^3-1$, $\sum\limits_{j=0}^n a_k x_{j,k} = b_k$?

 Профиль  
                  
 
 
Сообщение15.06.2006, 18:56 


04/06/06
16
m_{n}\overrightarrow{x_{n}}=\overrightarrow{y_{n}}(\overrightarrow{x_{0}},\overrightarrow{x_{1}},...,\overrightarrow{x_{n-1}}),
где
m_{n}-матрица (2x2),
\overrightarrow{x_{n}}=(a_{n},b_{n}),
\overrightarrow{y_{n}}=\overrightarrow{y_{n}}(\overrightarrow{x_{0}},\overrightarrow{x_{1}},...,\overrightarrow{x_{n-1}}) -- зависит от предыдущих векторов \overrightarrow{x}

Требуются все коэффициенты a_{i}, b_{i}, i=0,...,n

 Профиль  
                  
 
 
Сообщение15.06.2006, 19:24 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
А формула для
stud писал(а):
$\overrightarrow{y_{n}}=\overrightarrow{y_{n}}(\overrightarrow{x_{0}},\overrightarrow{x_{1}},...,\overrightarrow{x_{n-1}})$ -- зависит от предыдущих векторов $\overrightarrow{x}$

-- остальное я вроде понял.

 Профиль  
                  
 
 
Сообщение15.06.2006, 20:17 


04/06/06
16
Напишу явный вид правой части, хотя, вроде бы это не так важно,
программа то не работает, или работает, но я "не работаю":
\overrightarrow{y_{n}}=(\sum\limits_{j=0}^{n-1}a_{i}(-1)^{n+1-j} ,    \sum\limits_{j=0}^{n-1}b_{i}(-1)^{n+1-j})

 Профиль  
                  
 
 
Сообщение15.06.2006, 20:32 
Заслуженный участник
Аватара пользователя


09/10/05
1142
в palettes в 3 пакете BasicCalculation показано, как работать с матрицами и векторами (List and Matrices), там -же можно прочитать про суммы (Calculs -> Common Operations). А вообще всё-то-же самое есть и в 4 пакете, я в основном как раз с BasicInput работаю.

 Профиль  
                  
 
 
Сообщение16.06.2006, 19:31 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Ваша программа по-человечески:
Код:
a[0] = 1;
b[0] = (3^2 - 4^2 - 2*i*3*9)/25;
EE = Sqrt[3^2 + 4^2];
k = 3;
q = 4;
aa = 10;
For[n = 1, n <= 10, n = n + 1,
  m[n] = {{(-EE), (-((aa^2)))*((n^2)) + aa*n*((2*i*k + 2*q)) + k^2 - q^2 - 2*i*k*q},
          {(-((aa^2)))*((n^2)) + aa*n*((2*i*k - 2*q)) + k^2 - q^2 + 2*i*k*q, (-EE)}};
  y[n] = {Sum[a[j](-1)^(n + 1 - j), {j, 0, n - 1}], Sum[a[j](-1)^(n + 1 - j), {j, 0, n - 1}]};
  {a[n], b[n]} = Simplify[Dot[Inverse[m[n]], y[n]]];
  Print[a[n]]
  ]


1) Некоторые символы зарезервированы, например E. Заменено на EE.
2) Вы не можете использовать a как параметр и как последовательность. Параметр переименован в aa.
3) Mathematica -- конструктивный (а не декларативный) пакет. Поэтому надо явно писать выражение для EE.
4) Посмотрите синтаксис оператора цикла. У Вас все было смешано в одну кучу. Между тем разница между запятой и точкой с запятой -- принципиальна.

Дальше -- сами. Но -- найдите и почитайте книгу по Mathematica. Вам не приходит в голову писать на суахили исходя из знания русского? :wink: Здесь -- тоже самое. Вы изобретаете синтаксис, изобретаете функции... В общем, дуэт из "Формулы любви"

 Профиль  
                  
 
 
Сообщение16.06.2006, 21:55 


04/06/06
16
Спасибо ОГРОМНОЕ-ОГРОМНОЕ. :P

Пункт 3) не понятен :( .
Я понимаю, что разница между запятой и точкой с запятой огромна в цикле, но у меня хэлп к математике не полный -- примеров не нашел, а из определения я не очень понял.
Дописывать завтра буду. Из этих коэффициентов буду строить функции. :)


Может посоветуете что-нибудь по Mathematica и по программированию с уклоном к реализации алгоритмов ЧМ, а не по созданию приложений win32. А то я скачал лекции по ЧМ с сайта кафедры математики физфака, но там теория одна, а мне бы какой-нибудь практический курс. :roll: :roll:

 Профиль  
                  
 
 
Сообщение16.06.2006, 22:27 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
stud писал(а):
Пункт 3) не понятен

Вы пишите E^2 == 3^2+4^2. Это декларация того, что у Вас есть. Конструктивный же вариант -- указать, что надо вычислить: E = Sqrt[3^2+4^2].

Воспользуйтесь poiskknig.ru (я нашел по крайней мере "Mathematica book" и "Mastering Mathematica"). Вам нужны не приложения, а базовые сведения о Mathematica. Можно еще в библиотеку попробовать сходить (Вы же аспирант?)...

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

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



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

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


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

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