# How to use an anonymous function in a ''for''?

조회 수: 1(최근 30일)
Migue Balma 2020년 10월 15일
댓글: Steven Lord 2020년 10월 15일
Hi everyone!!
I'm trying to write a general solution for a differential equation using a moment method (Galerkin, with polynomials as base functions). When I try to write the general solution por N polynomials, the anonymous function that I'm using, it doesnt update with every loop. I write my code:
N = 10; %number of elements;
l = zeros([N,N]);
g = zeros(N,1);
A = zeros (N,1);
f = @(x) 0;
for i=1:N
for k = 1:N;
l(i,k) = i*k/(i+k+1);
g(k,1) = (k*(8+3*k))/(2*(2+k)*(4+k));
A = linsolve(l,g);
f = @(x) f(x) + A(i,1)*(x - x.^(i+1));
end
end
Thanks!!
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
Steven Lord 2020년 10월 15일
Use the sum function and element-wise operations inside the anonymous function.

댓글을 달려면 로그인하십시오.

### 채택된 답변

if you don't need to use it inside loop. you can define f(x) after for loop:
N = 10; %number of elements;
l = zeros([N,N]);
g = zeros(N,1);
A = zeros (N,1);
for i=1:N
for k = 1:N;
l(i,k) = i*k/(i+k+1);
g(k,1) = (k*(8+3*k))/(2*(2+k)*(4+k));
A = linsolve(l,g);
f = @(x) f(x) + A(i,1)*(x - x.^(i+1));
end
end
f = @(x) sum(A'.*(x-x.^(2:N+1)));
##### 댓글 수: 1표시숨기기 없음
Migue Balma 2020년 10월 15일
편집: Migue Balma 2020년 10월 15일
Thank you for your answer!! But when I insert and array of values, for example, x1 = linspace (0,1). It gives me an error, that can't evaluate f(x1) to represent it in a plot, I don't know why.
Edit: I solve it using another ''for'' to evaluate the function:
x1 = linspace(0,1)
f1 = zeros(1,length(x1));
for j = 1: length (x1);
f1(j) = f(x1(j));
end
Thank you so much!! You solved my question!

댓글을 달려면 로그인하십시오.

### 범주

Find more on Tables in Help Center and File Exchange

R2017b

### Community Treasure Hunt

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

Start Hunting!