Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2015, 11:15   #1
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию Многочлены Бернштейна

Здравствуйте, помогите пожалуйста разобраться с многочленом Бернштейна. Программа считает f(x) и сам B(x;f). А как добавить функцию, которая будет дифференцировать многочлен и выдавать результат (1-я и 2-я производная).

Код:
import java.math.*;//загрузка библиотеки

public class Berntein //описание класса
{
 static double[] coefficients = {2.3, -4.321, 908.342};//описание одномерного массива
 static double argument = 0.345219023;//описание скалярной переменной
 static double Polynomial (double t)//функция
  {
   return (coefficients[0] * t + coefficients[1]) * t + coefficients[2];
}

static int Binomial (int n, int k)//функция с двумя переменными
{
 int y = 1;
 for (int i = 1; i <= k; i++)
 y = y * (n - i + 1) / i;
 return y;
}

static double BernsteinPolynomial (double t, int n)
 {
  double z = Polynomial(0);
  for (int i = 1; i <= n; i++)
  z += Polynomial(i/n) * Binomial(n,i) * Math.pow(t,i) * Math.pow(1-t,n-i);
  return z;
}

public static void main (String[] args)//главный метод
{
 System.out.println("The value of polynomial in the point " + argument + " is equal to " + Polynomial(argument));

System.out.println("The value of Benstein polynomial in the point " + argument + " is equal to " + BernsteinPolynomial(argument,2));
}
}
fkty вне форума Ответить с цитированием
Старый 23.09.2015, 18:20   #2
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

Никто не знает?
fkty вне форума Ответить с цитированием
Старый 24.09.2015, 16:20   #3
anticlown111
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 10
По умолчанию

Если вы хотите составить функцию для вычисления производной произвольной функции, то можно действовать так:
Код:
#include <stdio.h>
#define h_step 1e-6

double f(double x); //Произвольная функция
double f_diff(double(*f)(double x), double x); // Производная функции

int main(void)
{
double x;
printf("Введите точку:");
scanf("%lf",&x);

printf("Значение первой производной в данной точке:%lf\n",f_diff(f,x));
return 0;
}

double f(double x){
return 5*x*x*x + x;
}

double f_diff(double(*f)(double x), double x){
	return (f(x+h_step)-f(x-h_step))/(2*h_step);
}
При таком подходе естественно будет возникать погрешность. Но если вы работаете с многочленами, а многочлен можно задать степенью и набором коэффициентов, то при дифференцировании такого многочлена достаточно просто изменять его степень и коэффициенты.
Код:
#include <stdio.h>
#define LIMIT 100
int diff_polynom(int n,double coef[]); //Возвращает степень нового многочлена

int main(void)
{
int i;
int n,n_diff;
double coef[LIMIT];
printf("Введите степень многочлена:"); scanf("%d",&n); if(n<0 || n>LIMIT-1) return -1;
printf("Введите коэффициенты многочлена начиная со старшего:"); 
for(i=0;i<=n;i++)
scanf("%lf",&coef[i]);

n_diff=diff_polynom(n,coef);
printf("Степень полученного многочлена:%d\n",n_diff);
printf("Коэффициенты многочлена начиная со старшего:");
for(i=0;i<=n_diff;i++)
printf("%.2lf ",coef[i]);

return 0;
}

int diff_polynom(int n,double coef[]){
	int i;
	for(i=0;i<=n;i++)
		coef[i]=(n-i)*coef[i];
	return n-1;
}
anticlown111 вне форума Ответить с цитированием
Старый 25.09.2015, 20:22   #4
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

anticlown111, спасибо
fkty вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Курсовая работа многочлены Лежандра PROkaZZZniK Помощь студентам 0 03.09.2013 16:09
Симметрические многочлены haosmaks Помощь студентам 0 06.05.2012 16:12