• 大小: 122KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-07-17
  • 语言: 其他
  • 标签: 三次样条  

资源简介

计算方法与算法分析课程中的一个上机实验,自己看书写很麻烦的,我都已经写好了,直接下载copy交给老师就行啦

资源截图

代码片段和文件信息

#include
#include
int main()
{
    //输入数据
    int n;
    double y0yn;
    double *x*y*h*a*B;
    cout<<“请输入节点的个数: “<    cin>>n;
    x = new double [n];
    y = new double [n];
    n=n-1;
    h = new double [n];
    a = new double [n];
    B = new double [n];
    int i=0;
    cout<<“请输入节点(x,y):“<    do{
        cin>>x[i];
        cin>>y[i];
        i++;
        }while(i!=(n+1));
    cout<<“请输入初始节点的导数y0’:“<    cin>>y0;
    cout<<“请输入最后一个节点的导数yn‘: “<    cin>>yn;

    //列出需要求解的矩阵方程组
    for(i=0;i<=n;i++)
        h[i]=x[i+1]-x[i];
    for(i=1;i        {
        a[i]=h[i-1]/(h[i]+h[i-1]);
        B[i]=3*((1-a[i])*(y[i]-y[i-1])/h[i-1]+a[i]*(y[i+1]-y[i])/h[i]);
        }

    //追赶法求方程组的根

    double *d*b*c*N*M*utXtemp1temp2;
    d = new double [n];
    b = new double [n];
    c = new double [n];
    N = new double [n];
    M = new double [n];
    u = new double [n];
    b[1]=2;
    c[1]=a[1];
    d[1]=B[1]-(1-a[1])*y0;
    for(i=2;i        {
        c[i]=a[i];
        a[i]=1-a[i];
        b[i]=2;
        d[i]=B[i];
        }
    b[n-1]=2;
    d[n-1]=B[n-1]-a[n-1]*yn;
    a[n-1]=1-a[n-1];
    u[1]=c[1]/b[1];
    N[1]=d[1]/b[1];
    for(i=2;i        {
         t=b[i]-u[i-1]*a[i];
         u[i]=c[i]/t;
         N[i]=(d[i]-N[i-1]*a[i])/t;
        }
    N[n-1]=(d[n-1]-N[n-2]*a[n-1])/(b[n-1]-u[n-2]*a[n-1]);
    M[n-1]=N[n-1];
    for(i=n-2;i>=1;i--)
    M[i]=N[i]-u[i]*M[i+1];
    //输出所求得的导数值
    cout<<“******************************************“<    cout<<“通过追赶法计算得到节点处的导数为:“<    for(i=1;i        {
        cout<<“f‘(“<        }
    cout<<“******************************************“<
    //输入要计算的自变量,计算其函数值
    cout<<“请输入你所要求的自变量:“<    while(cin>>X)
    {
    i=0;
    temp1=0;
    temp2=0;
    do
    {
        temp1=X-x[i];
        temp2=X-x[i+1];
        i++;
    }while(temp1<0||temp2>0);
    i=i-1;
    temp1=(X-x[i])/(x[i+1]-x[i]);
    temp2=(temp1-1)*(temp1-1)*(2*temp1+1)*y[i]+temp1*temp1*(3-2*temp1)*y[i+1]+(x[i+1]-x[i])*temp1*(temp1-1)*(temp1-1)*M[i]+(x[i+1]-x[i])*temp1*temp1*(temp1-1)*M[i+1];
    cout<<“通过计算得到:f(“<    }
    return 0;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2462  2011-01-04 19:54  三次样条函数\main.cpp

     文件       3377  2011-01-05 23:24  三次样条函数\main.dsp

     文件        533  2011-01-05 23:26  三次样条函数\main.dsw

     文件     491213  2011-01-04 19:54  三次样条函数\main.exe

     文件      33792  2011-01-05 23:26  三次样条函数\main.ncb

     文件       5587  2011-01-04 19:54  三次样条函数\main.o

     文件      48640  2011-01-05 23:26  三次样条函数\main.opt

     文件       1145  2011-01-05 23:24  三次样条函数\main.plg

     文件        138  2011-01-04 18:34  三次样条函数\测试数据.txt

     目录          0  2011-03-10 20:08  三次样条函数

----------- ---------  ---------- -----  ----

               586887                    10


评论

共有 条评论