Разложение синуса в ряд: Точные и быстрые вычисления для чисел с плавающей точкой на примере функции синуса. Введение и часть 1 / Хабр

математика — Разложение в ряд Тейлора функции(Python). Приближённое значение функции

Вроде бы ввожу правильное значение разложения в ряд Тейлора функции, а выдаёт не правильное значение. Подскажите, в чём проблема.

import math
from math import factorial
a=3.0
b=4.0
lich = 0
krok=(b-a)/10
lich=0
def f(x):
    return 1/(1+((math.e)**(1+x)))
def f_tochne(x, n):
    result=0
    for i in range(n):
        result += ((factorial(n))/((1+x)**n))
    return result
   
    
while a<=b:    
    print(round(a,2), end=' ')
    print(round(f(a),5),end=' ')
    print(round(f_tochne(a,lich),5))
    lich+=1
    a+=krok[![введите сюда описание изображения][1]][1]

  • python
  • математика
  • ряды

1

Можно и без всяких импортов математики и факториалов…

def f(x):
    return 2.718281828459045**(1+x)
def tailor(x, eps):
    x = 1+x
    sum = 1+x
    term = x;
    n = 2;
    while term*term > eps*eps:
        term *= x/n
        n += 1
        sum += term
    return sum
a=3.
0 b=4.0 krok=(b-a)/10 while a<=b: print(round(a,2), end=' ') print(round(f(a),5),end=' ') print(round(tailor(a,1e-6),5)) a+=krok

Как там таблицу выводить красиво — это я не очень знаю, Python — не мое, смотрите сами. Но вот так считать, не по количеству членов, а по заданной точности — оно как-то надежнее 🙂 Кстати, пятью членами в этом диапазоне значений никак не отделаться — нужно штук 20…

3

from math import factorial
def taylor(x, n):
    return sum((1+x) ** i / factorial(i) for i in range(n + 1))

2

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

python — Вычисление функций разложением в ряд Тейлора

Вопрос задан

2 года 2 месяца назад

Изменён 2 года 2 месяца назад

Просмотрен 531 раз

Помогите, пожалуйста, решить проблему с вычислением функций разложением в ряд Тейлора. Первый столбец отвечает за значения аргумента, второй столбец за значения функции в точке. Третий столбец с неверными числами: там должны быть более точные значения функции (примерно равные числам со второго столбца), так как они вычисляются разложением функции в ряд Тейлора.

import math as m1 
a = -0.1
b = 1
eps = 0.00001
def f(a):
    return (1/(m1.sqrt(1+a))) 
def doublefactorial(n):
    if n <= 0:
        return 1
    else:
        return n * doublefactorial(n-2)
        
def test(a):    
    n=2
    an=a
    S=0.0
    while abs(an)>=eps: 
        S+=an            
        an*= (-1)**(n-1)*(doublefactorial(2*n-1))*(a**(n))/(doublefactorial(2*n))            
        n+= 1
    return S        
    
    
print("  xi | f(xi)")
print("---------------------------------------------------------------------")
while a < b:
    if a != -0.1:
        print("", round(a, 2), "|", round(f(a), 3), round(test(a),3))
    else:
        print(round(a, 2), "|", round(f(a), 3), round(test(a),3))    
    a += 0.
1 print("---------------------------------------------------------------------")

  • python
  • математика
  • ряды
import math as m1 
def f(a):
    return (1/(m1.sqrt(1+a))) 
def test(x,eps):
    sum = 1
    n = 1
    t = 1
    while t*t > eps*eps:
        t *= -(2*n-1)*x/(2*n)
        n += 1
        sum += t
    return sum
a = -0.1
b = 0.9
eps = 0.00001
print("  xi | f(xi)")
print("---------------------------------------------------------------------")
while a < b:
    if a != -0.1:
        print("", round(a, 2), "|", round(f(a), 3), round(test(a,eps),3))
    else:
        print(round(a, 2), "|", round(f(a), 3), round(test(a,eps),3))    
    a += 0.1
    print("---------------------------------------------------------------------")

Только учтите, что ряд сходится, как у вас в условии написано, при -1<x<1, так что если написать

b = 1

то вычисления зациклятся — ряд не будет сходиться.

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

численные методы — Разложение Тейлора для синуса и косинуса

спросил

Изменено 6 лет, 10 месяцев назад

Просмотрено 946 раз

$\begingroup$

Здесь: Есть ли формула для синуса и косинуса?, один из ответов, упомянутых с использованием разложения Тейлора для аппроксимации $\sin(x)$ и $\cos(x)$, и кто-то заметил, однако, что это работают только для небольших значений $x$. 5} {5!}-\cdots$$ по-прежнему сходится к точному значению для $\sin(x)$, независимо от того, насколько велико значение $x$. 95}{5!}-\cdots$$ Как мы видим, использование только первых трех членов аппроксимировало бы $\sin(x)$ по-другому — это работает лучше для значений, близких к $2\pi$. Таким образом, мы можем интуитивно увидеть, что да, взятие разложения Тейлора в другой точке влияет ли на то, как $\sin(x)$ аппроксимирует $x$.

$\endgroup$

3

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

Ежемесячный обзор погоды, том 120, выпуск 1 (1992 г.)

  • Предыдущая статья
  • Следующая статья

Abstract

Разложение функции в двумерном пространстве в ряд по гармоническому синусу предлагается в виде суммы двух частей. Гармоническая часть представляет собой решение уравнения Лапласа с заданными граничными значениями этой функции. Внутренняя часть — это функция, из которой вычтена гармоническая часть; таким образом, он имеет нулевое граничное значение и может быть разложен двойным рядом синусов Фурье. С помощью разложения в ряд по гармоническому синусу показано, что для решения уравнений Лапласа, Пуассона и Гельмгольца с заданным граничным условием требуются лишь простые операции.

Разложение гармонического синусоидального ряда используется для решения задач разделения и реконструкции ветра на ограниченной территории. Внутренний ветер вычисляется из внутренних частей функции тока и потенциала скорости. Гармонический ветер – это разница между наблюдаемым ветром и внутренним ветром. В ограниченной области с внутренним ветром можно бороться так же, как с горизонтальным ветром на земном шаре. Развитие завихренности и дивергенции на ограниченном участке можно диагностировать по внутренним частям функции тока и потенциала скорости и соответствующим внутренним вращательным и дивергентным компонентам ветра. Поскольку внутренние части функции тока и потенциала скорости определены, разделение поля ветра на внутренний вращательный, внутренний расходящийся и гармонический становится вполне определенным. Гармонический ветер не только нерасходящийся, но и безвихревой в ограниченной области.

Как в задачах разделения, так и в задачах реконструкции ключом является решение уравнений Лапласа гармонических частей с заданным граничным значением гармонического ветра. Решение гармонических частей для ключевой задачи не является уникальным, но вычисленный гармонический ветер из гармонических частей является уникальным. На основе этой характеристики разработан итерационный метод. На примере реальных данных показано, что гармонические части функции тока и потенциала скорости, а также расчетный гармонический ветер могут быть точно определены в течение 15 итераций. Итерационный метод с использованием разложения в ряд по гармоническим синусам очень эффективен при решении задач разбиения и реконструкции в ограниченной области.

Abstract

Разложение функции в двумерном пространстве в ряд по гармоническому синусу предлагается в виде суммы двух частей. Гармоническая часть представляет собой решение уравнения Лапласа с заданными граничными значениями этой функции.

Внутренняя часть — это функция, из которой вычтена гармоническая часть; таким образом, он имеет нулевое граничное значение и может быть разложен двойным рядом синусов Фурье. С помощью разложения в ряд по гармоническому синусу показано, что для решения уравнений Лапласа, Пуассона и Гельмгольца с заданным граничным условием требуются лишь простые операции.

Разложение гармонического синусоидального ряда используется для решения задач разделения и реконструкции ветра на ограниченной территории. Внутренний ветер вычисляется из внутренних частей функции тока и потенциала скорости. Гармонический ветер – это разница между наблюдаемым ветром и внутренним ветром. В ограниченной области с внутренним ветром можно бороться так же, как с горизонтальным ветром на земном шаре. Развитие завихренности и дивергенции на ограниченном участке можно диагностировать по внутренним частям функции тока и потенциала скорости и соответствующим внутренним вращательным и дивергентным компонентам ветра. Поскольку внутренние части функции тока и потенциала скорости определены, разделение поля ветра на внутренний вращательный, внутренний расходящийся и гармонический становится вполне определенным.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *