Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±

    Вычисление интеграла

    Нужна помощь по программе. Возможно кто-то решал или сталкивался с подобным, буду благодарен за подсказку или помощь.
    Задача следующая.
    Вычисление интеграла пользовательской функции численными методам. Пользователь выбирает вид функции, коэффициенты и метод (правых или левых прямоугольников, трапеций)
    Алгоритм на метод прямоугольников получился такой:
      Открыть/закрыть

  2. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Тут конечно трудно будет найти помощь. Попробуй кинуть на SO. (тэги #algorithm, #mathematics)

    А ещё конечно все эти методы давно есть в инете (я просто не знаю все эти методы. В шараге только прямоугольниками решали).

    Посмотри вот тут:
    ru.stackoverflow.com
    http://www.cyberforum.ru/cpp-beginne...ad1100227.html
    http://www.programmersforum.ru/showp...62&postcount=9
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  3. #3
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±
    Получилось примерно так, считает правильно
    PHP код:
    // 45.cpp: определяет точку входа для консольного приложения.
    //

    #include "stdafx.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
    #include <clocale>
    #include <iostream>
    using namespace std;

    int a,b,n,i,sum,aa;
    double qy;

    float h,x,s;

    float f(float x){
        return 
    1/(x+2);
    }
    float F(float afloat bfloat hfloat N){
        
    float S = (f(a)+f(a+N*h))/2;
        
    float x,y;
        for (
    int i 1Ni++){
            
    a+i*h;
            
    f(x);
            
    += y
        }
        return 
    h*S;
     
    }

    int main()
    {
        
    setlocale(LC_CTYPE"rus");
        
    cout<<"Выберите вид функции" <<endl;
        
    cout<<"1. Прямая"<<endl;
        
    cout<<"2. Парабола"<<endl;
        
    int f,a1,b1,c
        
    cin>>f;
        if (
    f==1)
        {
        
    cout<<"Введите коэффициенты в уравнение ax+b" <<endl;
        
    cin >> a1 >> b1;
        }
        if (
    f==2)
        {
        
    cout<<"Введите коэффициенты в уравнение ax^2+bx+c" <<endl;
        
    cin >> a1 >> b1>>c;
        }
    printf("Введите интервал [a;b]\n");
    printf("a=");
    scanf("%d",&a);
    printf("b=");
    scanf("%d",&b);
    printf("Введите кол-во точек \n");
    scanf("%d",&n);

    h= (b-a);
    h/=n;
    printf("h=%f  \n",h);

    cout<<"Выберите метод:"<<endl;
        
    cout<<"1. Левых прямоугольников"<<endl;
        
    cout<<"2. Правых прямоугольников"<<endl;
        
    cout<<"3. Трапеции"<<endl;
        
    int m;
        
    cin>>m;
        if(
    m==1) {

    x=a;
    s=0;
    for(
    i=0;i<=(n-1);i++)
    {
        if(
    f==1)
            
    s+=(a1*x+b1);
        else if(
    f==2)
    s+=(a1*(x*x)+(b1*x)+c);
    x=x+h;
    }
    s*=h;
    printf("\nРешение найдено методом левых прямоугольников");
    printf("\ns=%.2f \n",s);
        }
         else if(
    m=2){
    x=a+h;
    s=0;
    for(
    i=0;i<=n;i++)
    {
        if(
    f==1)
            
    s+=h*(a1*x+b1);
        else if(
    f==2)
    s+=h*(a1*(x*x)+(b1*x)+c);
    x=x+h;
    }
    printf("\nРешение найдено методом правых прямоугольников");
    printf("\ns=%.2f \n",s);
        }
        else if(
    m==3){
    float integral;
        
    integral F(a,b,h,n);
    printf("\nРешение найдено методом трапеций");
    printf("\ns=%.2f \n",integral);
        }

    system("PAUSE");
    return 
    0;


 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •