How do I plot points coming from a for loop without using vectors?

5 ビュー (過去 30 日間)
Hi, I am new to Matlab so excuse my ignorance. I am trying to make a code that evaluates a definite integral from 0 to infinity for different values of two parameters, which I called v,L in the script below. Then I want to plot these definite integrals versus values of, say, L, which increases by one in each cycle. Why aren't values of L on the horizontal axis equally spaced as they should be? Is there something wrong with the plot function? If so, is there a way to plot points coming from a for loop as they get out, without using vectors? Thanks in advance.
syms x;
double L;
double v;
f=L*exp(-v*x^2);
L=0;
v=1;
for i=0:50
L=L+i;
k=int(f,x,0,inf);
plot(L,k,'o');
hold on
end
hold off
  3 件のコメント
Salvatore Manfredi D'Angelo
Salvatore Manfredi D'Angelo 2021 年 7 月 22 日
Hi, thanks for your reply! I was actually testing out the code before letting double L take on decimal values on an interval
Konrad
Konrad 2021 年 7 月 22 日
I think what Stephen refers to is that
double L; % = double('L')
doesn't declare a variable (as in other languages), but type-casts the character 'L' to type double, which is simply the number 76.

サインインしてコメントする。

採用された回答

Konrad
Konrad 2021 年 7 月 22 日
Hi,
values on the x-axis are not equally spaced because on every interation you increase L by i, which itself is increased by 1 on every interation:
1st interation: L = 0+0 = 0
2nd L = 0+1 = 1
3rd L = 1+2 = 3
4th L = 3+3 = 6
...
but you can just use i as your x-parameter for the plot function:
plot(i,k,'o');
> "is there a way to plot points coming from a for loop as they get out, without using vectors?"
you allready do that using hold on
  3 件のコメント
Konrad
Konrad 2021 年 7 月 22 日
I'm not really familiar with the symbolic math toolbox and I don't know int() for integrals, sorry.
But here would be a numeric solution:
ffactory = @(L,v)@(x)L*exp(-v*x.^2); % function factory returning f as an anonymous function
v = 1;
for i = 0:50
f = ffactory(i,v);
k = integral(f,0,inf);
plot(i,k,'o');
hold on;
end
Salvatore Manfredi D'Angelo
Salvatore Manfredi D'Angelo 2021 年 7 月 22 日
Thank you! This solved my issue. integral() is numeric and int() is symbolic then, I will keep in mind

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAssumptions についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by