2013-04-21 4 views
1

Я решаю уравнение стационарного состояния тепла с граничным условием, изменяющимся как 10,0,0,10,0,0,10,0,0,10,0,0,10 .. .. и т. д. в зависимости от количества точек, которые я выбираю. Я хочу построить матрицу для этих граничных условий, но не могу указать логику последовательности в терминах i-го элемента для матрицы.Программа для конкретной последовательности целых чисел

Я использую математику для этого, однако мне нужна формула только как для нечетного, мы можем указать 2n + 1 и для четного 2n, что-то вроде этого для последовательности 10,0,0,10,0,0,10, 0,0,10, ....

+0

Почему вы отметили matlab, если он предназначен для математики? – Memming

+0

Я могу сделать это в обоих случаях, но я предпочитал математику, вот почему я пометил matlab –

+0

, что у вас есть вектор чисел, а не матрица. Каково измерение требуемой матрицы? – Memming

ответ

0

Поскольку вы конкретно хотите математическая формула, позволь мне предложить метод:

seq = PadRight[{}, 30, {10, 0, 0}]; 

func = FindSequenceFunction[seq] 
10/3 (1 + Cos[2/3 \[Pi] (-1 + #1)] + Cos[4/3 \[Pi] (-1 + #1)]) & 

Попробуй:

Array[func, 10] 
{10, 0, 0, 10, 0, 0, 10, 0, 0, 10} 

Есть, конечно, проще программы для генерирования этой последовательности, такие как:

Array[10 Boole[1 == Mod[#, 3]] &, 10] 
{10, 0, 0, 10, 0, 0, 10, 0, 0, 10} 
+0

Wizard Спасибо большое за хороший ответ. Извините, что допоздна я до сих пор не возвращался к этому вопросу. –

+0

@FarrukhShehzad Добро пожаловать, и спасибо, что сообщили мне, что вы это цените. –

1

в MATLAB, было бы

M = zeros(1000, 1); 
M(1:3:1000) = 10; 

сделать 1000 длинный вектор с такой структурой. 1:3:1000 является 1,4,7,....

+0

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

+0

@FarrukhShehzad: Примите, пожалуйста, ответ, если вы удовлетворены этим. Это означает, что вопрос отвечает и может принести пользу сообществу. –

0

способ сделать это в Mathematica:

Take[Flatten[ConstantArray[{10, 0, 0}, Ceiling[1000/3] ], 1],1000] 

Другим способ

Table[Boole[Mod[i,3]==1]*10, {i,1,1000}] 
+0

Большое спасибо за ваш ответ. Мне жаль, что я больше не смотрел на этот вопрос, поскольку я был в состоянии это сделать. Еще раз спасибо :) –

Смежные вопросы