Очевидно, вы изучаете закон гравитации.
Проблема 1: Ваша переменная d
является скалярной, вы наносите ее на вектор a
длины d = 93622. Вы хотите построить a
как функцию значений 1:d
. Это не удается из-за ограничений памяти.
Проблема 2: гравитационная сила стремится к нулю очень быстро из-за члена 1 / (r ^ 2). Вы пытаетесь увидеть все эффекты, нанося на график функцию с шагом 1 метр, что является слишком точной дискретизацией в астрономическом масштабе. Если вы дискретизируете с разрешением 1000 м = 1 км, MATLAB предоставит вам участок:
i = 1:1000:d;
a = G*(M./(i.^2));
plot(i,a);
Однако в этой шкале вы мало что узнаете, функция практически равна нулю очень скоро. Так что либо разделите диапазон вашего графика на диапазон около Земли, и второй диапазон в космосе. Или выведите график силы, чтобы увидеть изменение на несколько порядков.
Оценка эффективности: Вы должны использовать векторизацию вместо for
- циклов, где это возможно и понятно, это идиоматический MATLAB, короче и обычно быстрее. Вам потребуется точка-оператор для компонентного деления и силовых операций, как указано выше.