PHP网页设计Linux剧本开辟数学库在PHP中的主要性
如果你单纯是为了做网站赚钱,我想你还是别学php的好,去学ASP,JSP好了,毕竟它们有实力雄厚的公司去支持它们。 <P> 简介 <P> 与其它开放源码言语(好比 Perl 和 Python)比拟,PHP 社区短少强无力的任务来开辟数学库。形成这类情况的一个缘由多是因为已存在大批成熟的数学东西,这能够障碍了社区自行开辟 PHP 东西的任务。例如,我曾研讨过一个功效壮大的东西 S System,它具有一组使人印象深入的统计库,专门被设计成用来剖析数据集,而且在 1998 年因为其言语设计而取得了 ACM 奖。假如 S 或其开放源码同类 R 仅仅是一个 exec_shell 挪用,那末为什么还要费事用 PHP 完成不异的统计盘算功效呢?有关 S System、它的 ACM 奖或 R 的更多信息,请参阅参考材料。 <P> 岂非这不是在华侈开辟人员的精神吗?假如开辟 PHP 数学库的念头是出自节俭开辟人员的精神和利用最好的东西来完成任务,那末 PHP 如今的课题是很成心义的。 <P> 另外一方面,出于教授教养念头能够会勉励对 PHP 数学库的开辟。关于大约 10% 的人来讲,数学是个值得探究的风趣课题。关于那些同时还纯熟使用 PHP 的人来讲,PHP 数学库的开辟可以加强数学进修进程,换句话说,不要只浏览有关 T 测试的章节,还要完成一个能盘算响应的两头值并用尺度格局显示它们的类。 <P> 经由过程指点和练习,我但愿证实开辟 PHP 数学库并非一项很难的义务,它能够代表一项风趣的手艺和进修困难。在本文中,我将供应一个 PHP 数学库示例,名为 SimpleLinearRegression,它演示了一个可以用来开辟 PHP 数学库的通用办法。让咱们从会商一些通用的准绳入手下手,这些准绳指点我开辟这个 SimpleLinearRegression 类。 <P> 指点准绳 <P> 我利用了六个通用准绳来指点 SimpleLinearRegression 类的开辟。 <P> 每一个剖析模子创立一个类。 <P> 利用逆向链接来开辟类。 <P> 估计有大批的 getter。 <P> 存储两头了局。 <P> 为具体的 API 制订首选项。 <P> 精美绝伦并不是方针。 <P> 让咱们更具体地逐条研讨这些指点方针。 <P> 每一个剖析模子创立一个类 <P> 每种次要的剖析测试或进程应该有一个称号与测试或进程名不异的 PHP 类,这个类包括了输出函数、盘算两头值和汇总值的函数和输入函数(将两头值和汇总值用文本或图形格局全体显示在屏幕上)。 <P> 利用逆向链接来开辟类 <P> 在数学编程中,编码的方针凡是是剖析进程(好比 MultipleRegression、TimeSeries 或 ChiSquared)所但愿生成的尺度输入值。从处理成绩的角度动身,这意味着您可使用逆向链接来开辟数学类的办法。 <P> 例如,汇总输入屏幕显示了一个或多个汇总统计了局。这些汇总统计了局依附于两头统计了局的盘算,这些两头统计了局又能够会触及到更深一层的两头统计了局,以此类推。这个基于逆向链接的开辟办法导出了下一个准绳。 <P> 估计有大批的 getter 数学类的大局部类开辟任务都触及到盘算两头值和汇总值。实践上,这意味着,假如您的类包括很多盘算两头值和汇总值的 getter 办法,您不该当感应惊奇。<P> 存储两头了局 将两头盘算了局存储在了局对象内,如许您就能够将两头了局用作后续盘算的输出。在 S 言语设计中实行了这一准绳。在以后情况下,经由过程选择实例变量来暗示盘算失掉的两头值和汇总了局,从而实行了该准绳。
为具体的 API 制订首选项
<P> 当为 SimpleLinearRegression 类中的成员函数和实例变量制订定名计划时,我发明:假如我利用较长的称号(相似于 getSumSquaredError 如许的称号,而不是 getYY2)来描写成员函数和实例变量,那末就更轻易懂得函数的操作内容和变量所代表的意义。 <P> 我没有完整保持简写称号;然而,当我用简写模式的称号时,我得想法供应正文以完全论述该称号的寄义。我的意见是:高度简写的定名计划在数学编程中很罕见,但它们使得了解和证实某个数学例程是不是墨守成规更加坚苦,而本来不用形成此种坚苦。 <P> 精美绝伦并不是方针 <P> 这个编码实习的方针不是必定要为 PHP 开辟高度优化和严厉的数学引擎。在初期阶段,应该强调进修完成意义严重的剖析测试,和处理这方面的困难。 <P> 实例变量:当对统计测试或进程停止建模时,您需求指作声明哪些实例变量。 <P> 实例变量的选择可以经由过程申明由剖析进程生成的两头值和汇总值来肯定。每一个两头值和汇总值都可以有一个响应的实例变量,将变量的值作为对象属性。 <P> 我采取如许的剖析来肯定为清单 1 中的 SimpleLinearRegression 类声明哪些变量。可以对MultipleRegression、ANOVA 或 TimeSeries 进程履行相似的剖析。 <P> <?php // Copyright 2003, Paul Meagher // Distributed under GPL class SimpleLinearRegression { var $n; var $X = array(); var $Y = array(); var $ConfInt; var $Alpha; var $XMean; var $YMean; var $SumXX; var $SumXY; var $SumYY; var $Slope; var $YInt; var $PredictedY = array(); var $Error = array(); var $SquaredError = array(); var $TotalError; var $SumError; var $SumSquaredError; var $ErrorVariance; var $StdErr; var $SlopeStdErr; var $SlopeVal; // T value of Slope var $YIntStdErr; var $YIntTVal; // T value for Y Intercept var $R; var $RSquared; var $DF; // Degrees of Freedom var $SlopeProb; // Probability of Slope Estimate var $YIntProb; // Probability of Y Intercept Estimate var $AlphaTVal; // T Value for given alpha setting var $ConfIntOfSlope; var $RPath = "/usr/local/bin/R"; // Your path here var $format = "%01.2f"; // Used for formatting output } ?> <P> 清单 1. SimpleLinearRegression 类的实例变量 机关函数
<P> SimpleLinearRegression 类的机关函数办法承受一个 X 和一个 Y 向量,每一个向量都有不异数目的值。您还可觉得您估计的 Y 值设置一个缺省为 95% 的相信区间(confidence interval)。 <P> 机关函数办法从验证数据模式是不是合适于处置入手下手。一旦输出向量经由过程了“巨细相等”和“值大于 1”测试,就履行算法的中心局部。 <P> 履行这项义务触及到经由过程一系列 getter 办法盘算统计进程的两头值和汇总值。将每一个办法挪用的前往值赋给该类的一个实例变量。用这类办法存储盘算了局确保了前后链接的盘算中的挪用例程可使用两头值和汇总值。还可以经由过程挪用该类的输入办法来显示这些了局,如清单 2 所描写的那样。 <P> <?php // Copyright 2003, Paul Meagher // Distributed under GPL function SimpleLinearRegression($X, $Y, $ConfidenceInterval="95") { $numX = count($X); $numY = count($Y); if ($numX != $numY) { die("Error: Size of X and Y vectors must be the same."); } if ($numX <= 1) { die("Error: Size of input array must be at least 2."); } $this->n = $numX; $this->X = $X; $this->Y = $Y; $this->ConfInt = $ConfidenceInterval; $this->Alpha = (1 + ($this->ConfInt / 100) ) / 2; $this->XMean = $this->getMean($this->X); $this->YMean = $this->getMean($this->Y); $this->SumXX = $this->getSumXX(); $this->SumYY = $this->getSumYY(); $this->SumXY = $this->getSumXY(); $this->Slope = $this->getSlope(); $this->YInt = $this->getYInt(); $this->PredictedY = $this->getPredictedY(); $this->Error = $this->getError(); $this->SquaredError = $this->getSquaredError(); $this->SumError = $this->getSumError(); $this->TotalError = $this->getTotalError(); $this->SumSquaredError = $this->getSumSquaredError(); $this->ErrorVariance = $this->getErrorVariance(); $this->StdErr = $this->getStdErr(); $this->SlopeStdErr = $this->getSlopeStdErr(); $this->YIntStdErr = $this->getYIntStdErr(); $this->SlopeTVal = $this->getSlopeTVal(); $this->YIntTVal = $this->getYIntTVal(); $this->R = $this->getR(); $this->RSquared = $this->getRSquared(); $this->DF = $this->getDF(); $this->SlopeProb = $this->getStudentProb($this->SlopeTVal, $this->DF); $this->YIntProb = $this->getStudentProb($this->YIntTVal, $this->DF); $this->AlphaTVal = $this->getInverseStudentProb($this->Alpha, $this->DF); $this->ConfIntOfSlope = $this->getConfIntOfSlope(); return true; } ?><P> 清单 2. 挪用类输入办法第1步环境配置好了,你算了进了1小步了,那么第2步呢 就是调出第1个程序 一般都是用hello world,视频教程里面我都做了,hello world 当然这种网站的会员费就几十块钱。 你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、 本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 做为1门年轻的语言,php一直很努力。 php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
页:
[1]