[3주차1일차] Chapter 03_기초수학 기초5~6

HA_·2023년 10월 21일
0
post-thumbnail

시그마

시그마 (∑) 란?

∑란, 수열의 합을 나타내는 기호이다.

시그마를 이용해서 나타낸 수열의 합을 파이썬 프로그램으로 만들기(등차)

# an = a1 + (n-1)d
# Sn = n(a1 + an) / 2
inputN1 = int(input('a1 입력: '))
inputD = int(input('공차 입력: '))
inputN = int(input('n 입력: '))

valueN = inputN1 + (inputN - 1) * inputD
sumN = inputN * (inputN1 + valueN) / 2
print('{}번쨰 항까지의 합: {}'.format(inputN, int(sumN)))

시그마를 이용해서 나타낸 수열의 합을 파이썬 프로그램으로 만들기(등비)

# Sn = a1 * (1 - r^n) / (1-r)
inputN1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))

sumN = inputN1 * (1 - (inputR ** inputN)) / (1 - inputR)
print('{}번쨰 항까지의 합: {}'.format(inputN, int(sumN)))

계차 수열

계차 수열이란?

어떤 수열의 인접하는 두 항의 차로 만들어진 또 다른 수열

계차 수열 (파이썬)

계차 수열

다음 수열을 보고 n번째 항의 값을 출력하는 프로그램 만들기

# an = {3, 7, 13, 21, 31, 43, 57}
# bn = {4, 6, 8, 10, 12, 14}

inputAN1 = int(input('a1 입력: '))
inputAN = int(input('an 입력: '))

inputBN1 = int(input('b1 입력: '))
inputBD = int(input('bn 공차 입력: '))

valueAN = 0
valueBN = 0

n = 1
while n <= inputAN:

    if n == 1:
        valueAN = inputAN1
        valueBN = inputBN1
        print('an의 {}번째 항의 값: {}' .format(n, valueAN))
        print('bn의 {}번째 항의 값: {}' .format(n, valueBN))
        n += 1
        continue

    valueAN = valueAN + valueBN
    valueBN = valueBN + inputBD
    print('an의 {}번쨰 항의 값: {}' .format(n, valueAN))
    print('bn의 {}번쨰 항의 값: {}' .format(n, valueBN))
    n += 1

print('an의 {}번째 항의 값: {}' .format(inputAN, valueAN))
print('bn의 {}번째 항의 값: {}' .format(inputAN, valueBN))

수열의 일반항을 알 때, n번째 항의 값을 출력하는 프로그램 만들기(계차수열을 사용하지 않음)

# an = {3, 7, 13, 21, 31, 43, 57}
# bn = {4, 6, 8, 10, 12, 14}

inputAN1 = int(input('a1 입력: '))
inputAN = int(input('an 입력: '))

# n^2 + n + i = an
valueAN = inputAN ** 2 + inputAN + 1
print('an의 {}번째 항의 값: {}' .format(inputAN, valueAN))

피보나치 수열

피보나치 수열이란?

세 번째 항은 두 번째 항과 첫 번째 항을 더한 합이다.

파이썬을 이용해서 피보나치 수를 계산하는 프로그램 만들기

inputN = int(input('n 입력: '))

valueN = 0
sumN = 0

valuePreN2 = 0
valuePreN1 = 0

n = 0
while n <= inputN:
    if n == 1 or n ==2:
        valueN = 1
        valuePreN2 = valueN
        valuePreN1 = valueN
        sumN += valueN
        n += 1

    else:
        valueN = valuePreN2 + valuePreN1
        valuePreN2 = valuePreN1
        valuePreN1 = valueN
        sumN += valueN
        n += 1

print('{}번째 항의 값: {}' .format(inputN, valueN))
print('{}번째 항까지의 합: {}' .format(inputN, sumN))

팩토리얼

팩토리얼이란?

1부터 양의 정수 n까지의 정수를 모두 곱한 것

파이썬을 이용해서 팩토리얼 결괏값을 출력하는 프로그램 만들기

  1. 반복문을 이용하는 경우
# for문 이용
inputN = int(input('n 입력: '))

result = 1
for n in range(1, inputN+1):
    result *= n

print('{} 팩토리얼: {}' .format(inputN, result))

# while문 이용
inputN = int(input('n 입력: '))

result = 1
n = 1
while n <= inputN:
    result *= n
    n += 1

print('{} 팩토리얼: {}' .format(inputN, result))
  1. 재귀 함수를 이용하는 경우
inputN = int(input('n 입력: '))

def factorial(n):
    if n == 1: return 1

    return n * factorial(n - 1)

print('{} 팩토리얼: {}' .format(inputN, factorial(inputN)))
  1. math 모듈을 이용한 팩토리얼 구하기
inputN = int(input('n 입력: '))

import math

print('{} 팩토리얼: {}' .format(inputN, math.factorial(inputN)))

군수열

군 수열이란?

여러 개의 항을 묶었을 때 규칙성을 가지는 수열

군수열 (파이썬)

군 수열

다음 수열을 보고 n번째 항의 값을 출력하는 프로그램 만들기

1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, ...

inputN = int(input('n항 입력: '))

flag = True
n = 1; nCnt = 1; searchN = 0
while flag:

    for i in range(1, (n+1)):
        if i == n:
            print('{} '.format(i), end='')
        else:
            print('{} '.format(i), end='')

        nCnt += 1
        if (nCnt > inputN):
            searchN = i
            flag = False
            break

    print()
    n += 1

print('{}항: {}' .format(inputN, searchN))

순열

순열이란?

n개에서 r개를 택하여 나열하는 경우의 수

순열과 팩토리얼

순열은 팩토리얼(계승)을 이용해서 나타낼 수 있다.

순열 (파이썬)

순열이란?

파이썬을 이용해서 다음 순열들의 값을 구하는 프로그램 만들기

numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
result = 1

for n in range(numN, (numN-numR), -1):
    print('n : {}' .format(n))
    result = result * n

print('result: {}' .format(result))

원순열

시작과 끝의 구분이 없는 순열

4명의 친구가 원탁 테이블에 앉을 수 있는 순서를 계산해보자.

n = int(input('친구 수 입력: '))
result = 1
for i in range(1, n):
    result *= i

print('result: {}' .format(result))

0개의 댓글