分数类的雏形

/*
* 程序的版权和版本声明部分
* Copyright (c)2014, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: fibnacci.cpp
* 作    者:高古尊
* 完成日期:2014年3月27日
* 版本号: v1.0
*
* 输入描述:
* 问题描述:
* 程序输出:
* 问题分析:
*/
#include <iostream>
using namespace std;
class CFraction
{
private:
    int nume;  // 分子
    int deno;  // 分母
public:
    CFraction(int nu=0,int de=1);   //构造函数,初始化用
    void set(int nu=0,int de=1);    //置值,改变值时用
    void input();	 //按照"nu/de"的格式,如"5/2"的形式输入
    void simplify();	 //化简(使分子分母没有公因子)
    void amplify(int n);	 //放大n倍,如2/3放大5倍为10/3
    void output(int style=0);	//输出:以8/6为例,style为0时,原样输出8/6;
    //style为1时,输出化简后形式4/3;
    //style为2时,输出1(1/3)形式,表示一又三分之一;
    //style为3时,用小数形式输出,如1.3333;
    //默认方式0
};
int main()
{
    int n;
    CFraction t;
    cout<<"请输入分数:";
    t.input();
    cout<<"请输入要放大的倍数:";
    cin>>n;
    t.amplify(n);
    t.output();
    return 0;
}
CFraction::CFraction(int nu,int de )
{
    nume=nu;
    deno=de;
    return ;
}
void CFraction::set(int nu,int de)
{
    nume=nu;
    deno=de;
    return ;
}
void CFraction::input()
{
    char ch;
    cin>>nume>>ch>>deno;
    return ;
}
void CFraction::simplify()
{
    int n;
    n=(nume>deno)?deno:nume;
    for(; n>1; n--)
    {
        if(nume%n==0&&deno%n==0)
        {
            nume/=n;
            deno/=n;
        }
    }
    return ;
}
void CFraction::amplify(int n)
{
    nume*=n;
    return ;
}
void CFraction::output(int style)
{
    switch(style)
    {
    case 0:
        cout<<nume<<'/'<<deno<<endl;
    case 1:
        simplify();
        cout<<nume<<'/'<<deno<<endl;
    case 2:
        int n,m;
        n=nume/deno;
        m=nume%deno;
        if(m==0)
        {
            m=1;
        }
        cout<<n<<'('<<m<<'/'<<deno<<')'<<endl;
    case 3:
        cout<<(double)nume/deno<<endl;;
    }
}

分数阶微积分是一种推广了传统整数阶微积分的概念,它允许对函数求任意实数甚至复数次的导数或积分。以下是关于分数阶微积分的定义及其解释: --- ### 定义 分数阶微积分的核心思想是对传统的$n$阶导数或积分进行广义化处理,其中$n$可以是非负整数以外的任何数值(包括小数、无理数和复数)。其主要形式可以通过Riemann-Liouville定义来描述。 #### Riemann-Liouville定义 对于一个给定的函数$f(x)$,$\alpha > 0$表示非整数阶次,则分数阶积分定义如下: $$ I^\alpha f(x) = \frac{1}{\Gamma(\alpha)} \int_0^x (x-t)^{\alpha-1} f(t) dt, $$ 其中$\Gamma(\cdot)$是伽马函数,用于扩展阶乘概念至非整数域。 当涉及分数阶导数时,通常先执行一次足够高的整数阶导数运算以消除积分中的奇异项,再结合上述积分公式完成计算。 #### Caputo定义 另一种常用的定义方式称为Caputo分数阶导数,适用于初始条件更自然的情形。设$m-1 < \alpha < m$ ($m$为正整数),则有: $$ D^\alpha f(x) = I^{m-\alpha} D^m f(x), $$ 即先取常规意义上的$m$阶导数,然后再做$(m-\alpha)$阶积分。 这两种定义虽然表述不同,在实际应用中有各自的优势场景选择依据具体需求决定采用哪一种更为合适。 --- ### 解释 为了更好地理解这些抽象表达式的意义可以从几个角度出发考虑: 1. **历史背景** 分数阶微积分最早由Leibniz提出雏形至今已有三百多年发展史。最初仅停留在理论探讨层面直到近几十年随着科学技术进步才逐渐找到广泛的实际应用场景比如异常扩散过程建模等领域。 2. **物理意义** 在某些复杂动态系统里普通的一阶二阶变化规律无法准确刻画现象特性这时引入分数阶算子能够更加贴切地反映实际情况例如粘弹性材料行为研究中就经常运用此工具。 3. **数学性质** 和标准微积分相比除了保留线性叠加原理外还具备记忆效应特征也就是说结果不仅依赖于当前状态也受到过去经历的影响这使得模型构建更具灵活性适应更多样化的现实世界问题解决需要。 --- ### 示例代码演示 下面给出一段简单的Python程序用来展示如何利用`scipy.special.gammainc`模块辅助实现基本的分数阶积分计算功能。 ```python from scipy import integrate, special import numpy as np def fractional_integral(f, alpha, x): def integrand(t): return (x - t)**(alpha - 1) * f(t) result, _ = integrate.quad(integrand, 0, x) return result / special.gamma(alpha) # 测试用例 f = lambda t: np.exp(-t) alpha = 0.5 x_values = np.linspace(0, 5, 100) results = [fractional_integral(f, alpha, xi) for xi in x_values] print(results[:10]) # 输出前十个点的结果 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值