当前位置:文档之家› 蛋白质分解问题

蛋白质分解问题

分子量分解问题研究第39组:陈胜:模型建立,程序设计徐南:算法优化,程序设计周荣玲:搜索资料,论文撰写摘要:生命是由蛋白质组成的,没有蛋白质就没有生命。

蛋白质是由C、H、O、N、P、S等元素组成的一类高分子化合物,氨基酸是其主要组成物质。

研究蛋白质的组成,最重要的就是研究其是由哪些氨基酸组成的。

本文在基于对实际蛋白质分子量之大的认识基础上,认为在没有计算机的情况下求解其分解情况已不现实,所以不考虑在没有计算机的情形下求解。

在有计算机的前提下,我们根据考虑氮元素含量的限制条件与否建立了不考虑氮元素限制的模型1和更加优化的考虑氮元素含量限制的模型2,模型2相较模型1更加合理,可以剔除模型1中大量无实际意义的解。

对两个模型分别建立18元一次方程181i iia x X ==∑,通过穷举法和C++编程求解出题目给定的蛋白质分子量X=1000时,模型1的可能解的个数N=28268,模型2的可能解的个数N=13421。

关键字:蛋白质分解氨基酸分子量n元一次方程穷举法1、问题重述生命蛋白质是由若干种氨基酸经不同的方式组合而成。

在实验中,为了分析某个生命蛋白质的分子组成,通常用质谱实验测定其分子量x (正整数),然后将分子量x分解为n个已知分子量a[i](i=1,.......,n)氨基酸的和的形式。

某实验室所研究的问题中:n=18, x≤1000a[i](i=1,.......,18)分别为57, 71, 87, 97, 99, 101, 103, 113, 114, 115, 128, 129, 131, 137, 147, 156, 163, 186要求针对该实验室拥有或不拥有计算机的情况作出解答。

2、问题分析氨基酸脱水缩合形成蛋白质是一个复杂的过程,为建模方便我们忽略氨基酸经脱水缩合形成肽键对蛋白质分子量的影响,认为蛋白质分子量就是组成其结构的各种氨基酸分子量之和,也即181i iia x X ==∑,该题目就是建立相关模型寻找不同方法求解这个多元一次方程,得出所有满足条件的蛋白质分子量分解的可能解的个数。

我们认为实际蛋白质分子量非常大,在没有计算机的情况下求解其分解情况已不现实,所以我们不考虑在没有计算机的情形下求解。

在有计算机的前提下,我们根据考虑氮元素含量的限制条件与否建立了不考虑的模型1和更加优化的模型2,分别通过穷举法和C++编程求解出题目给定的蛋白质分子量可能分解情况的解的个数。

3、模型假设1)组成蛋白质的各种氨基酸是任意排列组合的,任一种氨基酸的存在不以其他氨基酸存在为前提。

2)蛋白质分子只由组成其结构且给定分子量的氨基酸组成,而不含有其他物质。

3)蛋白质分子质量为组成其结构的各种氨基酸分子量之和,即不考虑各氨基酸形成蛋白质时脱水缩合形成肽键的过程。

4) 蛋白质分子中的各给定分子量的氨基酸水解程度相同。

5)题目中所给出的各氨基酸分子量是准确的,没有测量误差。

4、系统符号与说明i a :第i 种氨基酸的分子量(1,2...18,i i N =∈); i x :第i 种氨基酸的个数(1,2...18,i i N =∈); X :蛋白质的分子量;N :蛋白质分子量分解的可能解的个数;T : 执行程序至得出答案需要的时间(s )。

5、模型建立与求解给定蛋白质的分子量X 和各种氨基酸的分子量i a ,测定蛋白质的组成,即求解n 元一次线性方程1ni i i a x X ==∑的所有整数解的问题。

特别的,对于本题,当18n =时即为本题所要求解的问题。

在此,本文给出两个模型,即不考虑氮元素限制的模型和考虑氮元素限制的优化模型。

5、1在拥有计算机的情况下求解:模型1—穷举法(不考虑氮元素限制)所谓穷举法,即根据问题中的条件将所有可能的情况一一列举出来,逐一尝试从中找出满足问题条件的解。

对于本文的问题,我们可以根据18元一次方程181i i i a x X ==∑编写C++程序,设计多重循环并进行判断,满足条件即输出,进而列举出所有可能组合成该蛋白质的解的情况,并统计出所有解的个数。

通过程序运行得到不同蛋白质质量输入值X与其可能氨基酸组合解的个数N以及程序运行时间T之间的关系(表一)。

表一:不考虑氮元素限制时输入X与解个数N、耗时T关系表X的值解的个数N/个花费时间T/s100 0 0200 4 0300 14 0400 45 0500 158 0600 522 0.015700 1508 0.047800 4291 0.062900 11249 0.141000 28268 0.2971100 67339 0.7181200 154143 1.6071300 338158 3.5421400 716481 7.4421500 1467221 15.35据表一我们可以知道此种情况下,当输入蛋白质质量X=1000时,其对应的可能解的个数N=28268。

使用MATLAB软件对表一中的数据进行数据拟合(图一、图二)(具体程序见附录)。

图一:不考虑氮元素限制时输入X 与解个数N 关系拟合曲线图据图一可以看出,不考虑氮元素限制时解的个数N 随着输入X 呈现指数增长趋势,具体函数关系为:0.00736823.33X N e =。

图二:不考虑氮元素限制时输入X 与求解时间T 拟合关系曲线图据图二可以看出,不考虑氮元素限制时求解时间T 随着输入X 也呈现指数增长趋势,具体函数关系式为:0.0073840.0002382X T e =。

我们可以发现,当X 较小时,解的个数相对较少,求解时间相对较快;当X 增加时,其解的个数显著增加,求解时间也显著延长。

而实际蛋白质质量变化范围很大,从6000到100万或更大,因此对于5输入X解个数N输入X 与解个数N 关系图输入X求解时间T输入X 与求解时间T 关系图一般的蛋白质分子量分解问题,即使利用计算机,用穷举法也很难得出全部解,而且大量的解并没有实际意义。

所以,必须对模型进行改进,寻找约束条件,尽可能消除无实际意义的解。

5、2在拥有计算机的情况下求解:模型2—穷举法(考虑氮元素限制)考虑到本题是针对将蛋白质分解为多种氨基酸的问题,而此问题不仅仅受到简单的质量守恒原理限制,还应该考虑到化学上的元素守恒定理,根据现有的生物知识,我们知道蛋白质中的氮元素的含量是介于15%和17%之间的。

因此,我们可以将此条件作为约束条件,剔除掉模型1中很多不符合此条件的解。

此条件反应在C++程序中即为增加一个判别条件(具体程序见附录)。

经过程序验证,我们容易得出输入X的值与解的个数N以及花费时间T之间的关系(表二)。

表二:考虑氮元素限制时输入X与解的个数N、耗时T关系表X的值解的个数N/个花费时间T/s100 0 0200 0 0300 0 0400 0 0500 115 0.015600 56 0.015700 732 0.047800 589 0.062900 3898 0.1411000 13421 0.3121100 27358 0.7171200 63214 1.6071300 120859 3.5411400 343255 7.4731500 514175 15.51根据表二,我们可以看出当输入蛋白质质量X=1000时,其对应的可能解的个数N=13421。

根据程序验证的结果,我们利用MATLAB 软件将得到的数据进行拟合(图三、图四),(具体程序见附录)。

图三:考虑氮元素限制时输入X 与解得个数N 拟合关系曲线图据图三可以看出,考虑氮元素限制时解的个数N 随着输入X 呈现指数增长趋势,具体函数关系为: 0.00634639.23X N e 。

图四:考虑氮元素限制时输入X 与求解时间T 拟合关系曲线图据图四可以看出,考虑氮元素限制时求解时间T 随着输入X 也呈现指5输入X解的个数N输入X 与解的个数N 关系图输入X求解时间T输入X 与求解时间T 关系图数增长趋势,具体函数关系式为:0.0074290.0002247X T e 。

对比表一和表二,图一和图三,图二和图四,我们可以看出:增加一个氮元素含量占15%-17%的约束条件,蛋白质分子量分解的可能解的个数大大较少;但是因为模型2中增加了一个判别条件,所以模型2的求解时间有所延长。

6、模型评价与推广本文中的模型2是在模型1的基础上考虑到实际蛋白质中氮元素含量的限制条件而建立的优化模型,大大较少了模型1中无实际意义的解的个数,值得肯定。

如果进一步考虑,可以查阅相关资料根据氨基酸中C 、H 、O 含量的限制增加约束条件来减少无实际意义的解的个数,但是随着约束条件的增加,求解时间也会延长。

此模型还可以运用在投资、运输、订购物资等方面。

在投资方面,假设有一定的运转资金,可以购买不同公司的股票,通过本模型可以计算出所有可以投资的种类,然后通过对每种股票风险的计算得出最佳投资方式;在运输方面,有不同货物运输线路,在资金一定的情况下计算出何种组合方式或线路最适合,然后反过来计算最小资金;在订购物资方面,有不同厂家提供不同价格不同质量的物资,可以通过本模型得出最合理又最省资金的订购方式。

7、结论本文在有计算机的情况下采取穷举法来解决蛋白质分子量分解的问题,根据考不考虑氮元素限制的约束条件建立了两个模型,不考虑的模型1得出当蛋白质质量X=1000时,其对应的可能解的个数N=28268;考虑限制的模型2得出当X=1000时,其对应的可能解的个数N=13421,解的个数大大减少。

8、参考文献[1] 张德丰等. MATLAB语言高级编程. 北京:机械工业出版社,2009.[2] 杨春德郑继明等. 数学建模的认识与实践. 重庆:重庆大学出版社,2009.附录1、不考虑氮元素时求解C++程序:#include"stdafx.h"#include<iostream>#include<ctime>#include<iomanip>using namespace std;int main(){int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,x,count=0;cout<<"enter the a nmber:";cin>>x;double t=clock();for(a=0;a<=int (x/57);a++)for(b=0;b<=int ((x-57*a)/71);b++)for(c=0;c<=int ((x-57*a-71*b)/87) ;c++)for(d=0;d<=int ((x-57*a-71*b-87*c)/97);d++)for(e=0;e<=int ((x-57*a-71*b-87*c-97*d)/99) ;e++)for(f=0;f<=int ((x-57*a-71*b-87*c-97*d-99*e)/101);f++) for(g=0;g<=int((x-57*a-71*b-87*c-97*d-99*e-101*f)/103);g++)for(h=0;h<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g)/113);h++)for(i=0;i<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h)/114);i++) for(j=0;j<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i)/115); j++)for(k=0;k<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j) /128);k++)for(l=0;l<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k)/129);l++)for(m=0;m<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l)/131);m++)for(n=0;n<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m)/137);n++)for(o=0;o<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m-137*n)/147);o++)for(p=0;p<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m-137*n-147*o)/156);p++)for(q=0;q<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m-137*n-147*o-156*p)/163);q++)for(r=0;r<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m-137*n-147*o-156*p-163*q)/186);r++)for(;57*a+71*b+87*c+97*d+99*e+101*f+103*g+113*h+114*i+j*115 +128*k+129*l+131*m+137*n+147*o+p*156+163*q+186*r==x;) {count++;cout<<"第"<<count<<"组是"<<a<<","<<b<<","<<c<<","<<d<<","<<e<<","<<f<<","<<g<<","<< h<<","<<i<<","<<j<<","<<k<<","<<l<<","<<m<<","<<n<<","<<o<< ","<<p<<","<<q<<","<<r<<endl;break;}cout<<count<<endl;cout<<"the timeis"<<"\t"<<setprecision(4)<<(clock()-t)/1000<<"\t"<<"second"<<endl;}2、考虑氮元素的求解C++程序:#include"stdafx.h"#include<iostream>#include<ctime>#include<iomanip>using namespace std;int main(){int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,x,count=0;cout<<"enter the a nmber:";cin>>x;double t=clock();for(a=0;a<=int (x/57);a++)for(b=0;b<=int ((x-57*a)/71);b++)for(c=0;c<=int ((x-57*a-71*b)/87) ;c++)for(d=0;d<=int ((x-57*a-71*b-87*c)/97);d++)for(e=0;e<=int ((x-57*a-71*b-87*c-97*d)/99) ;e++)for(f=0;f<=int ((x-57*a-71*b-87*c-97*d-99*e)/101);f++)for(g=0;g<=int((x-57*a-71*b-87*c-97*d-99*e-101*f)/103);g++)for(h=0;h<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g)/113);h++)for(i=0;i<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h)/114);i++) for(j=0;j<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i)/115); j++)for(k=0;k<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j) /128);k++)for(l=0;l<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k)/129);l++)for(m=0;m<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l)/131);m++)for(n=0;n<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m)/137);n++)for(o=0;o<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m-137*n)/147);o++)for(p=0;p<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m-137*n-147*o)/156);p++)for(q=0;q<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m-137*n-147*o-156*p)/163);q++)for(r=0;r<=int((x-57*a-71*b-87*c-97*d-99*e-101*f-103*g-113*h-114*i-115*j-128*k-129*l-131*m-137*n-147*o-156*p-163*q)/186);r++)for(;57*a+71*b+87*c+97*d+99*e+101*f+103*g+113*h+114*i+j*115 +128*k+129*l+131*m+137*n+147*o+p*156+163*q+186*r==x&&0.15<=(14*(float)(a+b+c+d+e+f+g+h+2*i+j+2*k+l+m+3*n+2*o+ 2*p+q+r)/x)&&(14*(float)(a+b+c+d+e+f+g+h+2*i+j+2*k+l+m+3*n+2*o+2*p+q+ r)/x)<=0.17;){count++;cout<<"第"<<count<<"组是"<<a<<","<<b<<","<<c<<","<<d<<","<<e<<","<<f<<","<<g<<","<< h<<","<<i<<","<<j<<","<<k<<","<<l<<","<<m<<","<<n<<","<<o<< ","<<p<<","<<q<<","<<r<<endl;break;}cout<<count<<endl;cout<<"the timeis"<<"\t"<<setprecision(4)<<(clock()-t)/1000<<"\t"<<"second "<<endl;}3、不考虑氮元素输入X与解的个数N图像MATLAB程序:A=load('input.txt');X=A(:,1);N=A(:,2);T=A(:,3);function [fitresult, gof] = createFit1(X, N)[xData, yData] = prepareCurveData( X, N );ft = fittype( 'exp1' );opts = fitoptions( ft );opts.Display = 'Off';opts.Lower = [-Inf -Inf];opts.StartPoint = [1.95071316714773 0.00910565523475773]; opts.Upper = [Inf Inf];[fitresult, gof] = fit( xData, yData, ft, opts );figure( 'Name', 'untitled fit 1' );h = plot( fitresult, xData, yData );legend( h, 'N vs. X', 'untitled fit 1', 'Location', 'NorthEast' );xlabel( 'X' );ylabel( 'N' );grid on4、不考虑氮元素输入X与求解时间T图像MATLAB程序:A=load('input.txt');X=A(:,1);N=A(:,2);T=A(:,3);function [fitresult, gof] = createFit2(X, T)[xData, yData] = prepareCurveData( X, T );ft = fittype( 'exp1' );opts = fitoptions( ft );opts.Display = 'Off';opts.Lower = [-Inf -Inf];opts.StartPoint = [0.00014642850474961 0.00772267004039731];[fitresult, gof] = fit( xData, yData, ft, opts );figure( 'Name', 'untitled fit 1' );h = plot( fitresult, xData, yData );legend( h, 'T vs. X', 'untitled fit 1', 'Location', 'NorthEast' ); xlabel( 'X' );ylabel( 'T' );grid on5、考虑氮元素输入X与解的个数N图像MATLAB程序:B=load('input1.txt');X=B(:,1);N=B(:,2);T=B(:,3);function [fitresult, gof] = createFit2(X, N)[xData, yData] = prepareCurveData( X, N );ft = fittype( 'exp1' );opts = fitoptions( ft );opts.Display = 'Off';opts.Lower = [-Inf -Inf];opts.StartPoint = [0.648029705316125 0.00921744234236462]; opts.Upper = [Inf Inf];、[fitresult, gof] = fit( xData, yData, ft, opts );figure( 'Name', 'untitled fit 1' );h = plot( fitresult, xData, yData );legend( h, 'N vs. X', 'untitled fit 1', 'Location', 'NorthEast' );xlabel( 'X' );ylabel( 'N' );grid on6、考虑氮元素输入X与求解时间T图像MATLAB程序:B=load('input1.txt');X=B(:,1);N=B(:,2);T=B(:,3);function [fitresult, gof] = createFit2(X, T)[xData, yData] = prepareCurveData( X, T );ft = fittype( 'exp1' );opts = fitoptions( ft );opts.Display = 'Off';opts.Lower = [-Inf -Inf];opts.StartPoint = [0.00022688110222015 0.00741778810400599]; opts.Upper = [Inf Inf];figure( 'Name', 'untitled fit 1' );h = plot( fitresult, xData, yData );legend( h, 'T vs. X', 'untitled fit 1', 'Location', 'NorthEast' );xlabel( 'X' ); ylabel( 'T' ); grid on。

相关主题