Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с задачей, Вычисление элементарных функций 
:(
    Опции темы
fifty
Дата 28.4.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.4.2009

Репутация: нет
Всего: нет



Помогите сделать задачу на lisp!  
Вычисление элементарных функций с помощью ряда Тейлора или Макларена. 

Вот нашел формулы Тейлора http://elib.ispu.ru/library/math/sem1/index.html - 6-ой раздел
и  http://e-science.ru/math/theory/?t=573

Но незнаю как можно сделать, помогите люди добрые
PM MAIL   Вверх
fifty
Дата 30.4.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.4.2009

Репутация: нет
Всего: нет



Как можно разложить функцию в lisp smile 
 f(x)=sin x 

что бы в итоге получилось

user posted image

Неужели не кто незнает?
PM MAIL   Вверх
Enflout
Дата 10.5.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 22.5.2004

Репутация: нет
Всего: 6



fifty, тебе просто синус посчитать надо? smile 
Код

(defun getSin(x k)
    (cond ((= k 1) x)
          (t (+ (* (expt -1 (- k 1)) (/ (expt x (- (* 2.0 k) 1)) (fact (- (* 2.0 k) 1)) )) (getSin x (- k 1))
             )
          )
    )
)

(defun fact(n)
   (cond ((= n 0) 1)
             (t (* n (fact (- n 1))))

    )    
)


Вызывать как-то так:
Код

(getSin 1 100)

x (в примере - 1) - угол в радианах, синус которого мы хотим вычислить.
k (в примере - 100) - число шагов. Чем больше шагов, тем больше точность, но тут главное, без фанатизма.

P.S.:
В Corman Common Lisp работает  smile 
PM MAIL   Вверх
fifty
Дата 22.5.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.4.2009

Репутация: нет
Всего: нет



Спасибо за ответ, но немного не так.

Мне надо найти сперва Разделенную разность по формуле:

user posted image

например дано 6 точек на отрезке в ответе мы должны получить 1 точку на отрезке по центру по формуле Разделенные разности, ниже приведена таблица как все это должно выглядеть

user posted image




Как посчитаем Разделенную разность, мы должны вставить в формулу ряда Маклорена

user posted image

В итоге в конечном счете мы должны вводить с клавиатуры:
 f    (любая функция) необязательно можно не склавиатуры =
 k   число ряда =
 x   точка вычисления значения =

У меня не получается посчитать Разделенную разность и вставить в формулу ряды Маклорена

Код

(defun fakt (N)
       (if (= N 0) 1 (* N (fakt (- N 1)))))

(progn
(defun F (X)
    (+ (cos (* X X)) 1)
)

(defun getFunction(string1 k string2 x string3)
    (cond    
((= k 1) (F x))    
    (+ (*(/ (expt (F x) k) (fakt (- k 1))) (expt x k)) (getFunction string1 (- k 1) string2 x string3)
                )
         
           (T "Неправильно ввели функцию")
    )
)
)
        

(terpri)
(princ "Тема: Вычисление элементарных функций" ) ; записываем первую стороку

(terpri)(terpri)
(princ "Разложения по формуле Маклорена, где x - любое число" ) ; записываем первую стороку
(terpri)
(princ "Введите функцию(например: cos,sin,e,sh,ch,arctg,ln1+x,ln1-x)= ")
(princ
    (getFunction            
            (princ "Введите колличество членов ряда(k)= ")
        (read) 
            (princ "Введите в какой точке вычислять значение(x)= ")
        (read)        
            (princ "Ответ= " )
    )
)
(terpri)


Помогите ничего не выходит, думаю доступна объяснил, совсем запутался с формулами на LISP. Кто знает не проходите мимо smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0755 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.