首先关闭;我在编程方面的教学不是很好,但我倾向于准确地学习我需要学习的东西,以便在编程时做我想要的,我对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的表达式未完成。
答案 0 :(得分:0)
我通过定义F(k,:)
的索引来修复它