求和标量和向量[MATLAB]

时间:2015-04-29 15:08:48

标签: matlab physics

首先关闭;我在编程方面的教学不是很好,但我倾向于准确地学习我需要学习的东西,以便在编程时做我想要的,我对python,html / css C和matlab有适度的经验。我现在参加了物理模拟课程,在那里我使用matlab计算了不同大小的5个力场影响下的500个粒子的轨迹。

现在对我的事情;我需要为所有i = 1 ... 500粒子编写以下内容

f_i = m * g - 总和{(f_k / r_k ^ 2)* exp((|| vec(x)_i - vec(p)_k || ^ 2)/ 2 * r_k ^ 2)(vec( x)_i - vec(p)_k)}

我希望它不会太混乱

到目前为止,这是我的代码;

    clear all
    close all
    echo off

%Simulation Parameters-------------------------------------------

h = 0.01;                %Time-step h (s)
t_0 = 0;                %initial time (s)
t_f = 3;                %final time (s)
m = 1;                  %Particle mass (kg)
L = 5;                  %Charateristic length (m)
NT = t_f/h;             %Number of time steps
g = [0,-9.81]; 
f = [32 40 28 16 20];      %the force f_k (N)
r = [0.3*L 0.2*L 0.4*L 0.5*L 0.3*L];    %the radii r_k
p = [-0.2*L 0.8*L; -0.3*L -0.8*L; -0.6*L 0.1*L; 
                                          0.4*L 0.7*L; 0.8*L -0.3*L]; 
                                         %Forcefield origin position

%stepper = 'forward_euler'; % use forward Euler time-integration

fprintf('Simulation Parameters set');

%initialization--------------------------------------------------- for i = 1:500 %Gives inital value to each of the 500 particles particle{i,1}.x = [-L -L];
particle{i,1}.v = [5,10]; particle{i,1}.m = m;

for k = 1:5 C = particle{i}.x - p(k,:); F = rdivide(f(1,k),r(1,k)^2).*C %clear C; %Creates elements for array F end particle{i}.fi = m*g - sum(F); %Compute attractive force on particle %clear F; %Clear F for next use end

这段代码似乎做的是它进入带索引i的第一个循环,然后通过' k' -loop并以F的值退出,然后使用F的最后一个值(k)计算f_i。 我想要它做的是将F(k)的所有值从1-5放入并放入一个矩阵,我可以为f_i求和。我更倾向于对列进行求和,因为第一列应代表x轴中的所有F分量,第二列代表y轴中的所有F分量。

请注意,k循环中F的表达式未完成。

1 个答案:

答案 0 :(得分:0)

我通过定义F(k,:)

的索引来修复它