값 목록에서 가져온 계수로 시리즈 만들기

Aug 18 2020

함수를 만들고 싶습니다 $u(x) = \sum_{j=0}^9 a_j \cos{j\pi x}$ 어디 $a_j$s는 난수 목록에서 나옵니다. 나는 다음을 시도했다

Coeffs = RandomReal[1, 10]
u[x] := Series[(Part[Coeffs, j + 1]) Cos[π j x], {j, 0, 9}]
u[x]

그리고 또한

Coeffs = RandomReal[1, 10]
sum = 0
For[j = 0, j < 10, sum += Part[Coeffs, j + 1] Cos[j π x]]
u[x] = sum
u[x]

그러나 이들 중 어느 것도 작동하지 않는 것 같습니다. 첫 번째는 오류를 발생시킵니다."The expression 1+k cannot be used as a part specification"

두 번째 노트북에서는 노트북 실행이 완료되지 않습니다.

이를 수행하는 올바른 방법은 무엇입니까?

답변

2 LouisB Aug 18 2020 at 14:45

Table이 응용 프로그램에 사용하기에 좋은 기능입니다. 사용하는 한 가지 방법 TableDot제품 기능 을 사용하는 것입니다.

coeffs = RandomReal[1, 10];
basis = Table[Cos[π j x], {j, 0, 9}];
sum = Dot[coeffs, basis]

변수 coeffsbasis다른 것이 필요하지 않은 경우 다음을 수행 할 수 있습니다.

sum = Total @ Table[RandomReal[1] Cos[π j x], {j, 0, 9}]

이 두 가지 접근 방식은 매우 일반적입니다.

3 cvgmt Aug 18 2020 at 14:32

최신 정보

조언 감사합니다

RandomReal[1, 10].Cos[Range[0, 9]*Pi*x]

실물

Coeffs = RandomReal[1, 10]
u[x_] = Coeffs.(Cos[#*Pi*x] & /@ Range[0, 9])
2 kglr Aug 18 2020 at 15:16
ClearAll[f1, f2]
f1[x_] := Inner[Times, RandomReal[1, 10], Cos[Range[0, 9] π x]]
f2[x_] := Dot[RandomReal[1, 10], Cos[π Range[0, 9] x]]

SeedRandom[1]
f1[x]
 0.817389 + 0.11142 Cos[π x] + 0.789526 Cos[2 π x] + 
 0.187803 Cos[3 π x] + 0.241361 Cos[4 π x] + 
 0.0657388 Cos[5 π x] + 0.542247 Cos[6 π x] + 
 0.231155 Cos[7 π x] + 0.396006 Cos[8 π x] + 
 0.700474 Cos[9 π x]
SeedRandom[1]
f2[x]

같은 결과