⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2_1.cpp

📁 恩
💻 CPP
字号:
#include <fstream>
#include <iostream>

using namespace std;

void main()
{
	long double u;
	cin>>u;		
	ifstream fin;
	ofstream fout;
	fin.open("input.txt");
	fout.open("output.txt");
	int n;
	long double P0,Pn,s;
	int i,j,k;
	fin>>n>>P0>>Pn;
	long double *x=new long double[n+1];
	long double *y=new long double[n+1];
	long double *h=new long double[n];
	long double *a=new long double[n+1];
	long double *b1=new long double[n+1];
	long double *b2=new long double[n+1];
	long double *c=new long double[n+1];
	long double *g=new long double[n+1];
	long double *m=new long double[n+1];
	while (u!=0)
	{
		for (i=0;i<=n;i++)
		{
			fin>>x[i]>>y[i];
		}
		for (i=0;i<n;i++)
		{
				h[i]=x[i+1]-x[i];
		}
		c[0]=1;
		g[0]=3*(y[1]-y[0])/h[0]-P0*h[0]*0.5;
		for (k=1;k<n;k++)
		{
			a[k]=h[k]/(h[k]+h[k-1]);
			c[k]=1-a[k];
			g[k]=3*(c[k]*(y[k+1]-y[k])/h[k]+a[k]*(y[k]-y[k-1])/h[k-1]);
		}
		a[n]=1;
		g[n]=3*(y[n]-y[n-1])/h[n-1]+Pn*h[n-1]*0.5;
		b1[0]=2;
		b2[0]=0.5;
		for (i=1;i<=n;i++)
		{
			b1[i]=2-a[i]*b2[i-1];
			b2[i]=c[i]/b1[i];
		}
		g[0]=g[0]*0.5;
		for (j=1;j<=n;j++)
		{
			g[j]=(g[j]-a[j]*g[j-1])/b1[j];
		}
		m[n]=g[n];
		for (k=n-1;k>=0;k--)
		{
			m[k]=g[k]-b2[k]*m[k+1];
		}
		for (i=n-1;i>=0;i--)
		{
			if (u>=x[i])
			{
				s=0;
				s=s+(h[i]+2*(u-x[i]))*(u-x[i+1])*(u-x[i+1])*y[i]/(h[i]*h[i]*h[i]);
				s=s+(h[i]-2*(u-x[i+1]))*(u-x[i])*(u-x[i])*y[i+1]/(h[i]*h[i]*h[i]);
				s=s+(u-x[i])*(u-x[i+1])*(u-x[i+1])*m[i]/(h[i]*h[i]);
				s=s+(u-x[i+1])*(u-x[i])*(u-x[i])*m[i+1]/(h[i]*h[i]);
				break;
			}
		}
		cout<<s<<endl;
		cin>>u;
	}
	fin.close();
	fout.close();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -