Мегаобучалка Главная | О нас | Обратная связь


Вычисление математических функций с помощью компьютера



2019-11-13 378 Обсуждений (0)
Вычисление математических функций с помощью компьютера 0.00 из 5.00 0 оценок




Процессор обычного компьютера способен выполнять лишь простейшие арифметические действия, такие как сложение, вычитание, умножение, деление. Каким же образом языки программирования, табличные процессоры, вроде Microsoft Office Excel и Open Office Calc, а также иные программы вычисляют значения синусов, косинусов, логарифмов и многих других функций? Давайте заглянем «за кулисы» программирования и попробуем ответить на этот вопрос.

Когда нужно вычислить xn при натуральном n, это превращается в достаточно тривиальную задачу с использованием циклов. Представим данную величину в виде произведения

       xn= x × x × … × x , с общим числом множителей n.

Или, если это выразить в виде фрагмента программы на C++:

double x, s = 1;

unsigned int n;

cin >> x >> n;

for(int i = 1; i <= n; i++) s *= x;

cout << s;

Не вдаваясь в сферу высшей математики, отметим, для элементарных функций существует разложение в степенные ряды Маклорена:

      

Рис. 17. Разложение элементарных функций в ряды Маклорена

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

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

Однако практическое вычисление самих слагаемых строго по формуле каждого слагаемого оказывается затруднительным. Например, рассмотрим первую из функций с рисунка – экспоненту[15]ex.

Очевидно, что уже для n=20, вычисление

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

      

Это не только позволяет считать каждый член ряда значительно проще без использования длинной арифметики, рассматриваемой в следующей части книги, но и сокращает два цикла - для нахождения числителя и знаменателя. Сама программа определения суммы nпервых членов ряда Маклорена для экспоненты выглядит совсем несложно.

#include <iostream>

using namespace std;

int main() {

unsigned int n = 10;

double u = 1, s = 1, x;

cin >> x;

for(int i = 1; i<=n; i++){

     u *= x/i;

     s += u;

}

cout << s << endl;

}

Попробуйте самостоятельно написать программу приближённого вычисления значения sin(x) и cos(x) с использованием рядов Маклорена.

Указатели и адреса

Я обнаружил, что понимание указателей в С - это не навык, а способность. При поступлении на факультет кибернетики набирается человек 200 вундеркиндов, писавших игрушки для Atari 800 на BASIC в возрасте 4 лет. Затем они хорошо проводят время, изучая Паскаль, но в один прекрасный день профессор заводит речь об указателях, и они внезапно не могут этого понять. То есть абсолютно. 90% потока переходит на политехнический и становится отличниками, уверяя друзей, что на кибернетике мало девок. На самом же деле по неизвестной причине часть человечества просто рождается без той части мозга, которая понимает указатели.

Джоэль Спольски, «Искусство интервью»

Указатель - это переменная, содержащая адрес другой переменной. Указатели широко применяются в C/C++ - отчасти потому, что в некоторых случаях без них просто не обойтись, а отчасти потому, что программы с ними обычно короче и эффективнее.

Рассмотрим упрощенную схему организации памяти. Память типичной машины подставляет собой набор последовательно пронумерованных ячеек[16], с которыми можно работать по отдельности или связными кусками. Применительно к любой машине верны следующие утверждения: один байт может хранить значение типа char, двухбайтовые ячейки могут рассматриваться как целое типа short, а четырехбайтовые - как целые типа long. Указатель - это группа ячеек (как правило, четыре), в которых может храниться адрес. Так, если c имеет тип char, а p - указатель на c, то ситуация выглядит следующим образом [1]:

 

p

          c        
                             
                             


2019-11-13 378 Обсуждений (0)
Вычисление математических функций с помощью компьютера 0.00 из 5.00 0 оценок









Обсуждение в статье: Вычисление математических функций с помощью компьютера

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (378)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)