М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Molka2005
Molka2005
04.03.2022 01:49 •  Информатика

Задание №1 Автоматизация экономических задач средствами MS Excel
Задача 1. Выдача и погашение кредита
1. Постановка задачи.
Фирма решила взять кредит размером 200 000$ сроком на 5 лет, погашать который (основной долг и проценты) намерена равномерными платежами в конце каждого года. За на финансирование фирма направила в три банка, из которых пришли ответы с соответствующими условиями.
Рассчитайте на листе КРЕДИТ согласно условиям реальные суммы, которые может получить фирма по кредиту и размер ежегодных выплат.
На листе ПОГАШЕНИЕ составьте план погашения кредита по годам.
2. Пояснения.
На листе КРЕДИТ создайте таблицу, состоящую из граф: «№ п/п» (1), «Наименование банка» (2), «Сумма кредита» (3), «Плата за риск и обработку данных» (4), «Плата за издержки» (5), «Процентная ставка» (6), «Срок выплаты кредита» (7), «Сумма дополнительных выплат банку» (8), «Сумма годового платежа по кредиту» (9).
Данные для граф 1, 2, 3, 6 и 7 задайте самостоятельно.
Значение графы 4 составляет фиксированный процент от суммы кредита, задаваемый банком.
Значение графы 5 — фиксированная сумма, определенная банком за издержки при оформлении кредита.
Значение графы 8 определяется как сумма граф 4 и 5.
Значение графы 9 рассчитывается с финансовой функции ПЛТ.
Определите, в каком банке выгоднее взять кредит фирме.
На листе ПОГАШЕНИЕ составьте план погашения кредита, предусмотрев следующие графы: «Номер периода» (1), «Сумма основного долга» (2), «Сумма процентов по кредиту» (3), «Накопленный долг» (4), «Накопленный процент» (5), «Баланс на конец периода» (6).
Значение граф 2-5 рассчитайте с финансовых функций ОСПЛТ, ПРПЛТ, ОБЩДОХОД, ОБЩПЛАТ соответственно.
Значение графы 6 определяется как разность между суммой кредита и суммой накопленного долга.

👇
Открыть все ответы
Ответ:
reaper3780p08ut7
reaper3780p08ut7
04.03.2022

Объяснение:

Эта задача сводится к задаче поиска пути на графе пространства состояний.

Состояние - положение черепашки на поле - (x, y).

Граф пространства состояний состоит из таких вершин-состояний, их количество N * M.

Переходов между вершинами всего два: R и D.

Здесь можно заметить, что прийти к одним и тем же вершинам мы можем разными путями. Например, путь из (0,0) в (1,1) можно расписать и как RD ((0,0) -> (0,1) -> (1,1)), и как DR ((0,0) -> (1,0) -> (1,1)), но это два разных маршрута.

Однако при неизменном ценовом листе максимальная стоимость и оный маршрут в любой клетке поля значение строго определённое и неизменное во времени.

Это значит, что нам не нужно рассчитывать результат для одинаковых состояний больше одного раза, так как они будут совпадать.

Итак, для каждого состояния у нас есть два правила перехода. Рассчитывая максимальную стоимость маршрута для состояния (x,y) мы следуем алгоритму:

Если можем идти вправо, рассчитываем параметры для этого маршрутаЕсли можем идти вниз, рассчитываем параметры для этого маршрутаВыбираем между путями, если можем идти, или стоим, если уже не можемК выбранному варианту добавляем параметры текущего состояния

Если такой алгоритм применить к состоянию (0,0), то дойдем до (N, M) и получим максимальную цену и маршрут.

Код:

import re

from typing import List

cache = {}

def calculate_max_way_price(x: int, y: int, prices: List[List[int]], m:int, n:int):

   if (x, y) in cache:

       return cache[(x, y)]

   direction = ''

   cost = prices[y][x]

   x_cost, y_cost = -1, -1

   x_way, y_way = '', ''

   if x < m - 1:

       x_cost, x_way = calculate_max_way_price(x + 1, y, prices, m, n)

   if y < n - 1:

       y_cost, y_way = calculate_max_way_price(x, y + 1, prices, m, n)

   if not (x_cost < 0 and y_cost < 0):

       if x_cost > y_cost:

           cost += x_cost

           direction = 'R' + x_way

       else:

           cost += y_cost

           direction = 'D' + y_way

   cache[(x, y)] = (cost, direction)

   return cost, direction

MNtext = input('Enter N M: ')

MN = [int(x) for x in re.findall(r'\d+', MNtext)]

if len(MN) != 2:

   print("Input data error! It is not M and N")

   exit(-1)

N, M = MN[0], MN[1]

MAX_STEP_PRICE = 100

data = input('Enter all numbers separated by spaces. You must type ' + str(M*N) + ' elements:')

data = [int(x) for x in re.findall(r'\d+', data)]

if len(data) != N * M:

   print("Input data error! Too few/many numbers")

   exit(-2)

prices = []

for j in range(N):

   prices.append(data[M*j:M*(j+1)])

print(calculate_max_way_price(0, 0, prices, M, N))

4,4(49 оценок)
Ответ:
лиза4710
лиза4710
04.03.2022

Объяснение:

Эта задача сводится к задаче поиска пути на графе пространства состояний.

Состояние - положение черепашки на поле - (x, y).

Граф пространства состояний состоит из таких вершин-состояний, их количество N * M.

Переходов между вершинами всего два: R и D.

Здесь можно заметить, что прийти к одним и тем же вершинам мы можем разными путями. Например, путь из (0,0) в (1,1) можно расписать и как RD ((0,0) -> (0,1) -> (1,1)), и как DR ((0,0) -> (1,0) -> (1,1)), но это два разных маршрута.

Однако при неизменном ценовом листе максимальная стоимость и оный маршрут в любой клетке поля значение строго определённое и неизменное во времени.

Это значит, что нам не нужно рассчитывать результат для одинаковых состояний больше одного раза, так как они будут совпадать.

Итак, для каждого состояния у нас есть два правила перехода. Рассчитывая максимальную стоимость маршрута для состояния (x,y) мы следуем алгоритму:

Если можем идти вправо, рассчитываем параметры для этого маршрутаЕсли можем идти вниз, рассчитываем параметры для этого маршрутаВыбираем между путями, если можем идти, или стоим, если уже не можемК выбранному варианту добавляем параметры текущего состояния

Если такой алгоритм применить к состоянию (0,0), то дойдем до (N, M) и получим максимальную цену и маршрут.

Код:

import re

from typing import List

cache = {}

def calculate_max_way_price(x: int, y: int, prices: List[List[int]], m:int, n:int):

   if (x, y) in cache:

       return cache[(x, y)]

   direction = ''

   cost = prices[y][x]

   x_cost, y_cost = -1, -1

   x_way, y_way = '', ''

   if x < m - 1:

       x_cost, x_way = calculate_max_way_price(x + 1, y, prices, m, n)

   if y < n - 1:

       y_cost, y_way = calculate_max_way_price(x, y + 1, prices, m, n)

   if not (x_cost < 0 and y_cost < 0):

       if x_cost > y_cost:

           cost += x_cost

           direction = 'R' + x_way

       else:

           cost += y_cost

           direction = 'D' + y_way

   cache[(x, y)] = (cost, direction)

   return cost, direction

MNtext = input('Enter N M: ')

MN = [int(x) for x in re.findall(r'\d+', MNtext)]

if len(MN) != 2:

   print("Input data error! It is not M and N")

   exit(-1)

N, M = MN[0], MN[1]

MAX_STEP_PRICE = 100

data = input('Enter all numbers separated by spaces. You must type ' + str(M*N) + ' elements:')

data = [int(x) for x in re.findall(r'\d+', data)]

if len(data) != N * M:

   print("Input data error! Too few/many numbers")

   exit(-2)

prices = []

for j in range(N):

   prices.append(data[M*j:M*(j+1)])

print(calculate_max_way_price(0, 0, prices, M, N))

4,4(85 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ