Discuz!常用函数解析
php, 函数, Discuz, param, Discuz二次开发
/*
[Discuz!] (C)2001-2007 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: global.func.php 13426 2008-04-15 03:37:02Z heyond $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
/**
* 加密或者解密用户信息
* @param $string - 加密或解密的串
* @param $operation - 加密还是解密
* @param 密钥
* @return 返回字符串
* $ckey_length 随机密钥长度取值 0-32;
* 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
* 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方
* 当此值为 0 时,则不产生随机密钥
*/
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4;
$key = md5($key ? $key : $GLOBALS['discuz_auth_key']);
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() :
0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string);
$result = '';
$box = range(0, 255);
$rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($operation == 'DECODE') {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
} else {
return '';
}
} else {
return $keyc.str_replace('=', '',
base64_encode($result));
}
}
/**
* 清理cookie
*/
function clearcookies() {
global $discuz_uid, $discuz_user, $discuz_pw, $discuz_secques, $adminid, $credits;
dsetcookie('sid', '', -86400 * 365);
dsetcookie('auth', '', -86400 * 365);
dsetcookie('visitedfid', '', -86400 * 365);
dsetcookie('onlinedetail', '', -86400 * 365, 0);
dsetcookie('loginuser', '', -86400 * 365);
dsetcookie('activationauth', '', -86400 * 365);
$discuz_uid = $adminid = $credits = 0;
$discuz_user = $discuz_pw = $discuz_secques = '';
}
/**
* 检查积分下限
* @param $creditsarray - 积分数组
* @param $coef - 积分
*/
function checklowerlimit($creditsarray, $coef = 1) {
if(is_array($creditsarray)) {
global $extcredits, $id;
foreach($creditsarray as $id => $addcredits) {
$addcredits = $addcredits * $coef;
if($addcredits < 0 &&
($GLOBALS['extcredits'.$id] < $extcredits[$id]['lowerlimit'] || (($GLOBALS['extcredits'.$id] + $addcredits) <
$extcredits[$id]['lowerlimit']))) {
if($coef == 1) {
showmessage('credits_policy_l owerlimit');
} else {
showmessage('credits_policy_n um_lowerlimit');
}
}
}
}
}
/**
* 密码检测
*
* @param string $md5
* @param string $verified
* @param string $salt
* @return
* 0= Failed
* 1= MD5 with salt, 2= Dual MD5, 3= Normal Md5 4= MD5-16
*/
function checkmd5($md5, $verified, $salt = '') {
if(md5($md5.$salt) == $verified) {
$result = !empty($salt) ? 1 : 2;
} elseif(empty($salt)) {
$result = $md5 == $verified ? 3 : ((strlen($verified) == 16 && substr($md5, 8, 16) == $verified) ? 4 : 0);
} else {
$result = 0;
}
return $result;
}
/**
* 检查模板源文件是否更新
* 当编译文件不存时强制重新编译
* 当 tplrefresh = 1 时检查文件
* 当 tplrefresh > 1 时,则根据 tplrefresh 取余,无余时则检查更新
*
*/
function checktplrefresh($maintpl, $subtpl, $timecompare, $templateid, $tpldir) {
global $tplrefresh;
if(empty($timecompare) || $tplrefresh == 1 || ($tplrefresh > 1 && !($GLOBALS['timestamp'] % $tplrefresh))) {
if(empty($timecompare) || @filemtime($subtpl) > $timecompare) {
require_once
DISCUZ_ROOT.'./include/template.func.php';
parse_template($maintpl, $templateid, $tpldir); return TRUE;
}
}
return FALSE;
}
/**
* 根据中文裁减字符串
* @param $string - 字符串
* @param $length - 长度
* @param $doc - 缩略后缀
* @return 返回带省略号被裁减好的字符串
*/
function cutstr($string, $length, $dot = ' ...') {
global $charset;
if(strlen($string) <= $length) {
return $string;
}
$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
$strcut = '';
if(strtolower($charset) == 'utf-8') {
$n = $tn = $noc = 0;
while($n < strlen($string)) {
$t = ord($string[$n]);
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126))
{
$tn = 1; $n++; $noc++;
} elseif(194 <= $t && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif(224 <= $t && $t < 239) {
$tn = 3; $n += 3; $noc += 2;
} elseif(240 <= $t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif(248 <= $t && $t <= 251) {
$tn = 5; $n += 5; $noc += 2;
} elseif($t == 252 || $t == 253) {
$tn = 6; $n += 6; $noc += 2;
} else {
$n++;
}
if($noc >= $length) {
break;
}
}
if($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
} else {
for($i = 0; $i < $length; $i++) {
$strcut .= ord($string[$i]) > 127 ?
$string[$i].$string[++$i] : $string[$i];
}
}
$strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut);
return $strcut.$dot;
}
/**
* 处理转义字符
* @param $string -字符串
* @param $force - 是否强制
* @return 返回整理好的字符串
*/
function daddslashes($string, $force = 0) {
!defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
if(!MAGIC_QUOTES_GPC || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
}
return $string;
}
/**
* 检测日期的有效性
*/
function datecheck($ymd, $sep='-') {
if(!empty($ymd)) {
list($year, $month, $day) = explode($sep, $ymd);
return checkdate($month, $day, $year);
} else {
return FALSE;
}
}
/**
* 调试信息
*/
function debuginfo() {
if($GLOBALS['debug']) {
global $db, $discuz_starttime, $debuginfo;
$mtime = explode(' ', microtime());
$debuginfo = array('time' => number_format(($mtime[1] + $mtime[0] - $discuz_starttime), 6), 'queries' => $db->querynum);
return TRUE;
} else {
return FALSE;
}
}
/**
* 退出系统
*/
function dexit($message = '') {
echo $message;
output();
exit();
}
function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {
$return = '';
$matches = parse_url($url);
$host = $matches['host'];
$path = $matches['path'] ?
$matches['path'].'?'.$matches['query'].'#'.$matches['fragment'] : '/'; $port = !empty($matches['port']) ? $matches['port'] : 80;
if($post) {
$out = "POST $path HTTP/1.0\r\n";
$out .= "Accept: */*\r\n";
//$out .= "Referer: $boardurl\r\n";
$out .= "Accept-Language: zh-cn\r\n";
$out .= "Content-Type:
application/x-www-form-urlencoded\r\n";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; $out .= "Host: $host\r\n";
$out .= 'Content-Length: '.strlen($post)."\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cache-Control: no-cache\r\n";
$out .= "Cookie: $cookie\r\n\r\n";
$out .= $post;
} else {
$out = "GET $path HTTP/1.0\r\n";
$out .= "Accept: */*\r\n";
//$out .= "Referer: $boardurl\r\n";
$out .= "Accept-Language: zh-cn\r\n";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; $out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cookie: $cookie\r\n\r\n";
}
$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
if(!$fp) {
return '';//note $errstr : $errno \r\n
} else {
stream_set_blocking($fp, $block);
stream_set_timeout($fp, $timeout);
@fwrite($fp, $out);
$status = stream_get_meta_data($fp);
if(!$status['timed_out']) {
while (!feof($fp)) {
if(($header = @fgets($fp)) && ($header
== "\r\n" || $header == "\n")) {
break;
}
}
$stop = false;
while(!feof($fp) && !$stop) {
$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
$return .= $data;
if($limit) {
$limit -= strlen($data);
$stop = $limit <= 0;
}
}
}
@fclose($fp);
return $return;
}
}
/**
* HTML转义字符
* @param $string - 字符串
* @return 返回转义好的字符串
*/
function dhtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = dhtmlspecialchars($val);
}
} else {
$string =
preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});) /', '&\\1',
str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));
}
return $string;
}
function dheader($string, $replace = true, $http_response_code = 0) { $string = str_replace(array("\r", "\n"), array('', ''), $string); if(empty($http_response_code) || PHP_VERSION < '4.3' ) {
@header($string, $replace);
} else {
@header($string, $replace, $http_response_code);
}
if(preg_match('/^\s*location:/is', $string)) {
exit();
}
}
/**
* 上传文件的函数
* @param $file - 要上传的文件
* @return 返回带省略号被裁减好的字符串
*/
function disuploadedfile($file) {
return function_exists('is_uploaded_file') &&
(is_uploaded_file($file) || is_uploaded_file(str_replace('\\\\', '\\', $file)));
}
/**
* 刷新重定向
*/
function dreferer($default = '') {
global $referer, $indexname;
$default = empty($default) ? $indexname : '';
if(empty($referer) &&
isset($GLOBALS['_SERVER']['HTTP_REFERER'])) {
$referer =
preg_replace("/([\?&])((sid\=[a-z0-9]{6})(&|$))/i", '\\1', $GLOBALS['_SERVER']['HTTP_REFERER']);
$referer = substr($referer, -1) == '?' ? substr($referer, 0, -1) : $referer;
} else {
$referer = dhtmlspecialchars($referer);
}
if(!preg_match("/(\.php|[a-z]+(\-\d+)+\.html)/", $referer) || strpos($referer, 'logging.php')) {
$referer = $default;
}
return $referer;
}
/**
* 设置cookie
* @param $var - 变量名
* @param $value - 变量值
* @param $life - 生命期
* @param $prefix - 前缀
*/
function dsetcookie($var, $value, $life = 0, $prefix = 1) {
global $cookiepre, $cookiedomain, $cookiepath, $timestamp, $_SERVER;
setcookie(($prefix ? $cookiepre : '').$var, $value,
$life ? $timestamp + $life : 0, $cookiepath,
$cookiedomain, $_SERVER['SERVER_PORT'] == 443 ? 1 : 0); }
function dunlink($filename, $havethumb = 0, $remote = 0) {
global $authkey, $ftp, $attachdir;
if($remote) {
require_once DISCUZ_ROOT.'./include/ftp.func.php';
if(!$ftp['connid']) {
if(!($ftp['connid'] =
dftp_connect($ftp['host'], $ftp['username'], authcode($ftp['password'], 'DECODE', md5($authkey)), $ftp['attachdir'], $ftp['port'],
$ftp['ssl']))) {
return;
}
}
dftp_delete($ftp['connid'], $filename);
$havethumb && dftp_delete($ftp['connid'],
$filename.'.thumb.jpg');
} else {
@unlink($attachdir.'/'.$filename);
$havethumb &&
@unlink($attachdir.'/'.$filename.'.thumb.jpg');
}
}
/**
* 格式化email
* @param $email - 邮箱地址
* @param $tolink - 是否增加链接
* @return 返回代码
*/
function emailconv($email, $tolink = 1) {
$email = str_replace(array('@', '.'), array('@', '.'), $email); return $tolink ? ''.$email.'': $email;
}
/**
* 系统错误日志
* @param $type - 信息类型
* @param $message - 信息
* @param $halt - 是否退出
*/
function errorlog($type, $message, $halt = 1) {
global $timestamp, $discuz_userss, $onlineip, $_SERVER;
$user = empty($discuz_userss) ? '' : $discuz_userss.'
'; $user .= $onlineip.'|'.$_SERVER['REMOTE_ADDR'];
writelog('errorlog',
dhtmlspecialchars("$timestamp\t$type\t$user\t".str_replace(array("\r", "\n"), array(' ', ' '), trim($message))));
if($halt) {
exit();
}
}
/**
* 去掉文件扩展名
* @param $finename - 文件名称
* @return 文件名
*/
function fileext($filename) {
return trim(substr(strrchr($filename, '.'), 1, 10));
}
/**
* 产生form防伪码
*/
function formhash($specialadd = '') {
global $discuz_user, $discuz_uid, $discuz_pw, $timestamp, $discuz_auth_key;
$hashadd = defined('IN_ADMINCP') ? 'Only For Discuz! Admin Control Panel' : '';
return substr(md5(substr($timestamp, 0,
-7).$discuz_user.$discuz_uid.$discuz_pw.$discuz_auth_key.$hashadd.$sp ecialadd), 8, 8);
}
/**
* 论坛权限
* @param $permstr - 权限信息
* @return 0 无权限 > 0 有权限
*/
function forumperm($permstr) {
global $groupid, $extgroupids;
$groupidarray = array($groupid);
foreach(explode("\t", $extgroupids) as $extgroupid) {
if($extgroupid = intval(trim($extgroupid))) {
$groupidarray[] = $extgroupid;
}
}
return preg_match("/(^|\t)(".implode('|', $groupidarray).")(\t|$)/", $permstr);
}
/**
权限表达式
* @param $formula - 权限表达式
* @param $type - 0 论坛权限验证 1 勋章权限验证 2 返回勋章权限字串
*/
function formulaperm($formula, $type = 0) {
global $_DSESSION, $extcredits, $formulamessage, $usermsg, $forum, $language;
if((!$formula || $_DSESSION['adminid'] == 1 ||
$forum['ismoderator']) && !$type) {
return;
}
$formula = unserialize($formula);$formula = $formula[1];
if(!$formula) {
return;
}
@eval("\$formulaperm = ($formula) ? TRUE : FALSE;");
if(!$formulaperm || $type == 2) {
include_once language('misc');
$search = array('$_DSESSION[\'digestposts\']',
'$_DSESSION[\'posts\']', '$_DSESSION[\'oltime\']',
'$_DSESSION[\'pageviews\']');
$replace = array($language['formulaperm_digestposts'], $language['formulaperm_posts'], $language['formulaperm_oltime'], $language['formulaperm_pageviews']);
for($i = 1; $i <= 8; $i++) {
$search[] = '$_DSESSION[\'extcredits'.$i.'\']'; $replace[] = $extcredits[$i]['title'] ? $extcredits[$i]['title'] : $language['formulaperm_extcredits'].$i;
}
$i = 0;$usermsg = '';
foreach($search as $s) {
$usermsg .= strexists($formula, $s) ? $replace[$i].' = '.(@eval('return intval('.$s.');')).' ' : '';
$i++;
}
$search = array_merge($search, array('and', 'or', '>=', '<='));
$replace = array_merge($replace,
array(' '.$language['formulaperm_and'].' ',
' '.$language['formulaperm_or'].' ', '≥', '≤'));
$formulamessage = str_replace($search, $replace, $formula);
if($type == 1) {
showmessage('medal_permforum_nopermission', NULL, 'NOPERM');
} elseif($type == 2) {
return $formulamessage;
} else {
showmessage('forum_permforum_nopermission', NULL, 'NOPERM');
}
}
return TRUE;
}
/**
* 获取用户所在组
* @param $uid - 用户组
* @param $group - 用户组
* @param $member - 用户组
*/
function getgroupid($uid, $group, &$member) {
global $creditsformula, $db, $tablepre;
if(!empty($creditsformula)) {
$updatearray = array();
eval("\$credits = round($creditsformula);");
if($credits != $member['credits']) {
$updatearray[] = "credits='$credits'";
$member['credits'] = $credits;
}
if($group['type'] == 'member'
&& !($member['credits'] >= $group['creditshigher'] && $member['credits'] < $group['creditslower'])) {
$query = $db->query("SELECT groupid FROM {$tablepre}usergroups WHERE type='member' AND
$member[credits]>=creditshigher AND $member[credits] if($db->num_rows($query)) { $member['groupid'] = $db->result($query, 0); $updatearray[] = "groupid='$member[groupid]'"; } } if($updatearray) { $db->query("UPDATE {$tablepre}members SET ".implode(', ', $updatearray)." WHERE uid='$uid'"); } } return $member['groupid']; } function getrobot() { if(!defined('IS_ROBOT')) { $kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla'; $kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla'; if(preg_match("/($kw_browsers)/", $_SERVER['HTTP_USER_AGENT'])) { define('IS_ROBOT', FALSE); } elseif(preg_match("/($kw_spiders)/", $_SERVER['HTTP_USER_AGENT'])) { define('IS_ROBOT', TRUE); } else { define('IS_ROBOT', FALSE); } } return IS_ROBOT; } /** * 根据用户的 uid 得到 avatar/home 目录 * * @param int $uid * @return string */ function get_home($uid) { $uid = sprintf("%05d", $uid); $dir1 = substr($uid, 0, -4); $dir2 = substr($uid, -4, 2); $dir3 = substr($uid, -2, 2); return $dir1.'/'.$dir2.'/'.$dir3; } /** * vip用户购买组权限是否到期 * @param $terms 期限来源于 memberfields 表的 groupterms 字段 * @return 返回过期信息 */ function groupexpiry($terms) { $terms = is_array($terms) ? $terms : unserialize($terms); $groupexpiry = isset($terms['main']['time']) ? intval($terms['main']['time']) : 0; if(is_array($terms['ext'])) { foreach($terms['ext'] as $expiry) { if((!$groupexpiry && $expiry) || $expiry < $groupexpiry) { $groupexpiry = $expiry; } } } return $groupexpiry; } /** * ip允许访问 * @param $ip 要检查的ip地址 * @param - $accesslist 允许访问的ip地址 * @param 返回结果 */ function ipaccess($ip, $accesslist) { return preg_match("/^(".str_replace(array("\r\n", ' '), array('|', ''), preg_quote($accesslist, '/')).")/", $ip); } /** * 将数组元素格式化成类似 '1','2','3' 的字符串 * @return STRING 字串否则为 NULL */ function implodeids($array) { if(!empty($array)) { return "'".implode("','", is_array($array) ? $array : array($array))."'"; } else { return ''; } } /** * ip限制访问 * @param $ip 要检查的ip地址 * @param - $accesslist 允许访问的ip地址 * @param 返回结果 */ function ipbanned($onlineip) { global $ipaccess, $timestamp, $cachelost; if($ipaccess && !ipaccess($onlineip, $ipaccess)) { return TRUE; } $cachelost .= (@include DISCUZ_ROOT.'./forumdata/cache/cache_ipbanned.php') ? '' : ' ipbanned'; if(empty($_DCACHE['ipbanned'])) { return FALSE; } else { if($_DCACHE['ipbanned']['expiration'] < $timestamp) { @unlink(DISCUZ_ROOT.'./forumdata/cache/cache_ ipbanned.php'); } return preg_match("/^(".$_DCACHE['ipbanned']['regexp'].")$/", $onlineip); } } /** * 检查邮箱是否有效 * @param $email 要检查的邮箱 * @param 返回结果 */ function isemail($email) { return strlen($email) > 6 && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email); } /** * 加载语言 * @param $file - 语言文件 * @param $templateid - 模板号码 * @param $tpldir - 模板路径 * @return 加载的语言 */ function language($file, $templateid = 0, $tpldir = '') { $tpldir = $tpldir ? $tpldir : TPLDIR; $templateid = $templateid ? $templateid : TEMPLATEID; $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/'.$file.'.lang.php'; if(file_exists($languagepack)) { return $languagepack; } elseif($templateid != 1 && $tpldir != './templates/default') { return language($file, 1, './templates/default'); } else { return FALSE; } } /** * 分页 * @param $num - 总数 * @param $perpage - 每页数 * @param $curpage - 当前页 * @param $mpurl - 跳转的路径 * @param $maxpages - 允许显示的最大页数 * @param $page - 最多显示多少页码 * @param $autogoto - 最后一页,自动跳转 * @param $simple - 是否简洁模式(简洁模式不显示上一页、下一页和页码跳转) * @return 返回分页代码 */ function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) { global $maxpage; //debug 加入 ajaxtarget 属性 $ajaxtarget = !empty($_GET['ajaxtarget']) ? " ajaxtarget=\"".dhtmlspecialchars($_GET['ajaxtarget'])."\" " : ''; $multipage = ''; $mpurl .= strpos($mpurl, '?') ? '&' : '?'; $realpages = 1; if($num > $perpage) { $offset = 2; $realpages = @ceil($num / $perpage); $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages; if($page > $pages) { $from = 1; $to = $pages; } else { $from = $curpage - $offset; $to = $from + $page - 1; if($from < 1) { $to = $curpage + 1 - $from; $from = 1; if($to - $from < $page) { $to = $page; } } elseif($to > $pages) { $from = $pages - $page + 1; $to = $pages; } } $multipage = ($curpage - $offset > 1 && $pages > $page ? '1 ...' : ''). ($curpage > 1 && !$simple ? ' href="'.$mpurl.'page='.($curpage - 1).'" class="prev"'.$ajaxtarget.'>?? for($i = $from; $i <= $to; $i++) { $multipage .= $i == $curpage ? ''.$i.'' : } $multipage .= ($curpage < $pages && !$simple ? ' class="next"'.$ajaxtarget.'>?? ($to < $pages ? ' href="'.$mpurl.'page='.$pages.'" class="last"'.$ajaxtarget.'>... '.$realpages.' (!$simple && $pages > $page && !$ajaxtarget ? '' : ''); $multipage = $multipage ? ' class="pages">'.(!$simple ? ' '.$num.' ' : '').$multipage.'
}
$maxpage = $realpages;
return $multipage;
}
/**
* 系统输出
* @return 返回内容
*/
function output() {
if(defined('DISCUZ_OUTPUTED')) {
return;
}
define('DISCUZ_OUTPUTED', 1);
global $sid, $transsidstatus, $rewritestatus, $ftp, $advlist, $insenz, $queryfloat, $thread, $inajax;
if(($advlist || !empty($insenz['hardadstatus']) || $queryfloat) && !defined('IN_ADMINCP') && !(CURSCRIPT == 'viewthread' &&
$thread['digest'] == '-1') && !$inajax) {
include template('adv');
}
if(($transsidstatus = empty($GLOBALS['_DCOOKIE']['sid']) && $transsidstatus) || $rewritestatus) {
if($transsidstatus) {
$searcharray = array
(
^\"\'\s]+)/ies",
"/(\
);
$replacearray = array
(
"transsid('\\3',' "\\1\n name=\"sid\" value=\"$sid\" />" ); } else { $searcharray = $replacearray = array(); if($rewritestatus & 1) { $searcharray[] = "/\ href\=\"forumdisplay\.php\?fid\=(\d+)(&page\=(\d+))?\"([^\>]*)\>/e"; $replacearray[] = "rewrite_forum('\\1', '\\3', '\\4')"; } if($rewritestatus & 2) { $searcharray[] = "/\ href\=\"viewthread\.php\?tid\=(\d+)(&extra\=page\%3D(\d+))?(&page\=(\ d+))?\"([^\>]*)\>/e"; $replacearray[] = "rewrite_thread('\\1', '\\5', '\\3', '\\6')"; } if($rewritestatus & 4) { $searcharray[] = "/\ href\=\"space\.php\?(uid\=(\d+)|username\=([^&]+?))\"([^\>]*)\>/e"; $replacearray[] = "rewrite_space('\\2', '\\3', '\\4')"; } if($rewritestatus & 8) { $searcharray[] = "/\ href\=\"tag\.php\?name\=([^&]+?)\"([^\>]*)\>/e"; $replacearray[] = "rewrite_tag('\\1', '\\2')"; } } $content = preg_replace($searcharray, $replacearray, ob_get_contents()); ob_end_clean(); $GLOBALS['gzipcompress'] ? ob_start('ob_gzhandler') : ob_start(); echo $content; } if($ftp['connid']) { @ftp_close($ftp['connid']); } $ftp = array(); //debug Module:HTML_CACHE 如果定义了缓存常量,则此处将缓冲区的内容写入文件。如果为 index 缓存,则直接写入 forumdata/index.cache ,如果为 viewthread 缓存,则根据md5(tid,等参数)取前三位为目录加上 $tid_$page,做文件名。 //debug $threadcacheinfo, $indexcachefile 为全局变量 if(defined('CACHE_FILE') && CACHE_FILE && !defined('CACHE_FORBIDDEN')) { global $cachethreaddir; if(diskfreespace(DISCUZ_ROOT.'./'.$cachethreaddir) > 1000000) { if($fp = @fopen(CACHE_FILE, 'w')) { flock($fp, LOCK_EX); fwrite($fp, empty($content) ? ob_get_contents() : $content); } @fclose($fp); chmod(CACHE_FILE, 0777); } } } /** * 时间段设置检测 * @param $periods - 那种时间段 $settings[$periods] $settings['postbanperiods'] $settings['postmodperiods'] * @param $showmessage - 是否提示信息 * @return 返回检查结果 */ function periodscheck($periods, $showmessage = 1) { global $timestamp, $disableperiodctrl, $_DCACHE, $banperiods; 高中数学必修一求函数解析式解题 方法大全及配套练习 一、 定义法: 根据函数的定义求解析式用定义法。 【例1】设23)1(2 +-=+x x x f ,求)(x f . 2]1)1[(3]1)1[(23)1(22+-+--+=+-=+x x x x x f =6)1(5)1(2 ++-+x x 65)(2+-=∴x x x f 【例2】设2 1 )]([++= x x x f f ,求)(x f . 解:设x x x x x x f f ++=+++=++=11111 11 21)]([ x x f += ∴11)( 【例3】设3 3 22 1)1(,1)1(x x x x g x x x x f +=++ =+,求)]([x g f . 解:2)(2)1 (1)1(2222-=∴-+=+=+ x x f x x x x x x f 又x x x g x x x x x x x x g 3)()1(3)1(1)1(3333-=∴+-+=+=+ 故2962)3()]([2 4 6 2 3 -+-=--=x x x x x x g f 【例4】设)(sin ,17cos )(cos x f x x f 求=. 解:)2 ( 17cos )]2 [cos()(sin x x f x f -=-=π π x x x 17sin )172 cos()1728cos(=-=-+ =π π π. 二、 待定系数法:(主要用于二次函数) 已知函数解析式的类型,可设其解析式的形式,根据已知条件建立关于待定系数的方程, 从而求出函数解析式。 它适用于已知所求函数类型(如一次函数,二次函数,正、反例函数等)及函数的某些特征求其解析式的题目。其方法:已知所求函数类型,可预先设出所求函数的解析式,再根据题意列出方程组求出系数。 【例1】 设)(x f 是一次函数,且34)]([+=x x f f ,求)(x f 【解析】设b ax x f +=)( )0(≠a ,则 b ab x a b b ax a b x af x f f ++=++=+=2)()()]([ ∴???=+=342b ab a ∴????? ?=-===32 1 2b a b a 或 32)(12)(+-=+=∴x x f x x f 或 【例2】已知二次函数f (x )满足f (0)=0,f (x+1)= f (x )+2x+8,求f (x )的解析式. 解:设二次函数f (x )= ax 2+bx+c ,则 f (0)= c= 0 ① f (x+1)= a 2 )1(+x +b (x+1)= ax 2+(2a+b )x+a+b ② 由f (x+1)= f (x )+2x+8 与①、② 得 ?? ?=++=+8 2 2b a b b a 解得 ?? ?==. 7, 1b a 故f (x )= x 2+7x. 【例3】已知1392)2(2 +-=-x x x f ,求)(x f . 解:显然,)(x f 是一个一元二次函数。设)0()(2 ≠++=a c bx ax x f 则c x b x a x f +-+-=-)2()2()2(2 )24()4(2c b a x a b ax +-+-+= 又1392)2(2 +-=-x x x f 比较系数得:?????=+--=-=1324942c b a a b a 解得:?? ???=-==312c b a 32)(2 +-=∴x x x f 求函数解析式的几种常 用方法 -CAL-FENGHAI.-(YICAI)-Company One1 求函数解析式的几种常用方法 一、高考要求: 求解函数解析式是高考重点考查内容之一,需引起重视.本节主要帮助考生在深刻理解函数定义的基础上,掌握求函数解析式的几种方法,并形成能力,并培养考生的创新能力和解决实际问题的能力. 重难点归纳: 求解函数解析式的几种常用方法主要有: 1.待定系数法,如果已知函数解析式的构造时,用待定系数法; 2.换元法或配凑法,已知复合函数f [g (x )]的表达式可用换元法,当表达式较简单时也可用配凑法; 3.消参法,若已知抽象的函数表达式,则用解方程组消参的方法求解f (x ); 另外,在解题过程中经常用到分类讨论、等价转化等数学思想方法. 二、题例讲解: 例1.(1)已知函数f (x )满足f (log a x )= )1 (1 2x x a a --.(其中a >0,a ≠1,x >0),求f (x )的表达式. (2)已知二次函数f (x )=ax 2+bx +c 满足|f (1)|=|f (-1)|=|f (0)|=1,求f (x )的表达式. 命题意图:本题主要考查函数概念中的三要素:定义域、值域和对应法则,以及计算能力和综合运用知识的能力. 知识依托:利用函数基础知识,特别是对“f ”的理解,用好等价转化,注意定义域. 错解分析:本题对思维能力要求较高,对定义域的考查、等价转化易出错. 技巧与方法:(1)用换元法;(2)用待定系数法. 解:(1)令t=log a x (a >1,t >0;01,x >0;0 AVERAGE函数 主要功能:求出所有参数的算术平均值。 使用格式:AVERAGE(number1,number2,……) 参数说明:number1,number2,……:需要求平均值的数值或引用单元格(区域),参数不超过30个。 应用举例:在B8单元格中输入公式:=AVERAGE(B7:D7,F7:H7,7,8),确认后,即可求出B7至D7区域、F7至H7区域中的数值和7、8的平均值。 特别提醒:如果引用区域中包含“0”值单元格,则计算在内;如果引用区域中包含空白或字符单元格,则不计算在内。 COUNTIF函数 主要功能:统计某个单元格区域中符合指定条件的单元格数目。 使用格式:COUNTIF(Range,Criteria) 参数说明:Range代表要统计的单元格区域;Criteria表示指定的条件表达式。 应用举例:在C17单元格中输入公式:=COUNTIF(B1:B13,">=80"),确认后,即可统计出B1至B13单元格区域中,数值大于等于80的单元格数目。 特别提醒:允许引用的单元格区域中有空白单元格出现 DATEDIF函数 主要功能:计算返回两个日期参数的差值。 使用格式:=DATEDIF(date1,date2,"y")、=DATEDIF(date1,date2,"m")、=DATEDIF(date1,date2,"d") 参数说明:date1代表前面一个日期,date2代表后面一个日期;y(m、d)要求返回两个日期相差的年(月、天)数。 应用举例:在C23单元格中输入公式:=DATEDIF(A23,TODAY(),"y"),确认后返回系统当前日期[用TODAY()表示)与A23单元格中日期的差值,并返回相差的年数。 特别提醒:这是Excel中的一个隐藏函数,在函数向导中是找不到的,可以直接输入使用,对于计算年龄、工龄等非常有效。 IF函数 主要功能:根据对指定条件的逻辑判断的真假结果,返回相对应的内容。 使用格式:=IF(Logical,Value_if_true,Value_if_false) 参数说明:Logical代表逻辑判断表达式;Value_if_true表示当判断条件为逻辑“真(TRUE)”时的显示内容,如果忽略返回“TRUE”;Value_if_false表示当判断条件为逻辑“假(FALSE)”时的显示内容,如果忽略返回“FALSE”。 应用举例:在C29单元格中输入公式:=IF(C26>=18,"符合要求","不符合要求"),确信以后,如果C26单元格中的数值大于或等于18,则C29单元格显示“符合要求”字样,反之显示“不符合要求”字样。 特别提醒:本文中类似“在C29单元格中输入公式”中指定的单元格,读者在使用时,并不需要受其约束,此处只是配合本文所附的实例需要而给出的相应单元格,具体请大家参考所附的实例文件。 INDEX函数 主要功能:返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。 使用格式:INDEX(array,row_num,column_num) 参数说明:Array代表单元格区域或数组常量;Row_num表示指定的行序号 函数解析式的求解方法 1.配凑法 例1.已知f (x + x 1)=2x +21x ,求()f x 的解析式 例2.已知3311()f x x x x +=+ ,求()f x 例3.已知f(x+1)=x-3, 求()f x 2.换元法(整体思想) 已知形如[()]y f x ?=的函数求解()f x 的解析式:令()x t ?=,反解()x t φ=,代入[()]y f x ?=,即可求解出。 例4.已知x x x f 2)1(+=+,求)1(+x f 例5.22)1(2++=+x x x f 求)3()(),3(+x f x f f 及 3.构造方程组法 若式子中,同时含有()f x 与()f x -,或者同时含有()f x 与1()f x ,那么将式子中的x 用x -替换,或是x 用1x 替换,得到另一个方程,通过求解方程组求解()f x 例6.设,)1(2)()(x x f x f x f =-满足求)(x f 例7.设)(x f 满足关系式x x f x f 3)1(2)(=+求函数的解析式 4.特殊值法 当题中所给变量较多,且含有“任意”等条件时,往往可以对具有“任意性”的变量进行赋值,使问题具体化、简单化,从而求得解析式。 例8.已知:1)0(=f ,对于任意实数x 、y ,等式)12()()(+--=-y x y x f y x f 恒成立, 求)(x f 例9.已知函数)(x f 对于一切实数 x,y 都有x y x y f y x f )12()()(++=-+成立,且0)1(=f 1.求)0(f 的值 2.求)(x f 的解析式 5.待定系数法(知道函数类型) 例10已知函数f(x)是一次函数,且满足关系式3f(x+1)-2f(x-1)=2x+17,求f(x)的解析式。 例11 已知f(x)是二次函数,且442)1()1(2 +-=-++x x x f x f ,求)(x f 1 / 4 张喜林制 [选取日期] 高三数学第二轮专题讲座复习:求解函数解析式的几种常用方法 高考要求 求解函数解析式是高考重点考查内容之一,需引起重视 本节主要帮助考生在深刻理解函数定义的基础上,掌握求函数解析式的几种方法,并形成能力,并培养考生的创新能力和解决实际问题的能力 重难点归纳 求解函数解析式的几种常用方法主要有 1 待定系数法,如果已知函数解析式的构造时,用待定系数法; 2 换元法或配凑法,已知复合函数f [g (x )]的表达式可用换元法,当表达式较简单时也可用配凑法; 3 消参法,若已知抽象的函数表达式,则用解方程组消参的方法求解f (x ); 另外,在解题过程中经常用到分类讨论、等价转化等数学思想方法 典型题例示范讲解 例1 (1)已知函数f (x )满足f (log a x )=)1(1 2x x a a -- (其中a >0,a ≠1,x >0),求f (x )的表达式 (2)已知二次函数f (x )=ax 2+bx +c 满足|f (1)|=|f (-1)|=|f (0)|=1,求f (x ) 命题意图 本题主要考查函数概念中的三要素 定义域、值域和对应法则,以及计算能力和综合运用知识的能力 知识依托 利用函数基础知识,特别是对“f ”的理解,用好等价转化,注意定义域 错解分析 本题对思维能力要求较高,对定义域的考查、等价转化易出错 技巧与方法 (1)用换元法;(2)用待定系数法 解 (1)令t=log a x (a >1,t >0;01,x >0;0 目录 一、IF函数——————————————————————————————————2 二、ASC函数—————————————————————————————————4 三、SEARCH函数——————————————————————————————4 四、CONCATENATE函数———————————————————————————4 五、EXACT函数———————————————————————————————5 六、find函数—————————————————————————————————5 七、PROPER函数——————————————————————————————7 八、LEFT函数————————————————————————————————7 九、LOWER函数———————————————————————————————7 十、MID函数————————————————————————————————8 十一、REPT函数———————————————————————————————8 十二、Replace函数——————————————————————————————9 十三、Right函数———————————————————————————————10 十四、UPPER函数——————————————————————————————10 十五、SUBSTITUTE函数———————————————————————————10 十六、VALUE函数——————————————————————————————12 十七、WIDECHAR函数———————————————————————————12 十八、AND函数———————————————————————————————12 十九、NOT函数———————————————————————————————13 二十、OR函数————————————————————————————————13 二十一、COUNT函数—————————————————————————————14 二十二、MAX函数——————————————————————————————15 二十三、MIN函数——————————————————————————————15 二十四、SUMIF函数—————————————————————————————16 二十五、OFFSET函数————————————————————————————17 二十六、ROW函数——————————————————————————————20 二十七、INDEX 函数————————————————————————————21 二十八、LARGE函数—————————————————————————————22 二十九、ADDRESS函数————————————————————————————23 三十、Choose函数——————————————————————————————24 三十一、HLOOKUP函数———————————————————————————24 三十二、VLOOKUP函数———————————————————————————26 三十三、LOOKUP函数————————————————————————————29 三十四、MATCH函数————————————————————————————29 三十五、HYPERLINK函数——————————————————————————30 三十六、ROUND函数————————————————————————————31 三十七、TREND函数—————————————————————————————32 函数解析式的表示形式及五种确定方式 函数的解析式是函数的最常用的一种表示方法,本文重点研究函数的解析式的表达形式与解析式的求法。 一、解析式的表达形式 解析式的表达形式有一般式、分段式、复合式等。 1、一般式是大部分函数的表达形式,例 一次函数:b kx y += )0(≠k 二次函数:c bx ax y ++=2 )0(≠a 反比例函数:x k y = )0(≠k 正比例函数:kx y = )0(≠k 2、分段式 若函数在定义域的不同子集上对应法则不同,可用n 个式子来表示函数,这种形式的函数叫做分段函数。 例1、设函数(]() ???+∞∈∞-∈=-,1,log 1,,2)(81x x x x f x ,则满足41)(=x f 的x 的值为 。 解:当(]1,∞-∈x 时,由4 12= -x 得,2=x ,与1≤x 矛盾; 当()+∞∈,1x 时,由4 1log 81=x 得,3=x 。 ∴ 3=x 3、复合式 若y 是u 的函数,u 又是x 的函数,即),(),(),(b a x x g u u f y ∈==,那么y 关于x 的函数[]()b a x x g f y ,,)(∈=叫做f 和g 的复合函数。 例2、已知3)(,12)(2 +=+=x x g x x f ,则[]=)(x g f ,[]=)(x f g 。 解:[]721)3(21)(2)(2 2+=++=+=x x x g x g f [][]4443)12(3)()(222 ++=++=+=x x x x f x f g 二、解析式的求法 根据已知条件求函数的解析式,常用待定系数法、换元法、配凑法、赋值(式)法、方程法等。 1待定系数法 若已知函数为某种基本函数,可设出解析式的表达形式的一般式,再利用已知条件求出系数。 excel常用函数及使用方法 一、数字处理 (一)取绝对值:=ABS(数字) (二)数字取整:=INT(数字) (三)数字四舍五入:=ROUND(数字,小数位数) 二、判断公式 (一)把公式返回的错误值显示为空: 1、公式:C2=IFERROR(A2/B2,"") 2、说明:如果是错误值则显示为空,否则正常显示。 (二)IF的多条件判断 1、公式:C2=IF(AND(A2<500,B2="未到期"),"补款","") 2、说明:两个条件同时成立用AND,任一个成立用OR函数。 三、统计公式 (一)统计两表重复 1、公式:B2=COUNTIF(Sheet15!A:A,A2) 2、说明:如果返回值大于0说明在另一个表中存在,0则不存在。 (二)统计年龄在30~40之间的员工个数 公式=FREQUENCY(D2:D8,{40,29} (三)统计不重复的总人数 1、公式:C2=SUMPRODUCT(1/COUNTIF(A2:A8,A2:A8)) 2、说明:用COUNTIF统计出每人的出现次数,用1除的方式把出现次数变成分母,然后相加。 (四)按多条件统计平均值 =AVERAGEIFS(D:D,B:B,"财务",C:C,"大专") (五)中国式排名公式 =SUMPRODUCT(($D$4:$D$9>=D4)*(1/COUNTIF(D$4:D$9,D$4:D$9))) 四、求和公式 (一)隔列求和 1、公式:H3=SUMIF($A$2:$G$2,H$2,A3:G3) 或=SUMPRODUCT((MOD(COLUMN(B3:G3),2)=0)*B3:G3) 2、说明:如果标题行没有规则用第2个公式 (二)单条件求和 1、公式:F2=SUMIF(A:A,E2,C:C) 2、说明:SUMIF函数的基本用法 (三)单条件模糊求和 说明:如果需要进行模糊求和,就需要掌握通配符的使用,其中星号是表示任意多个字符,如"*A*"就表示a前和后有任意多个字符,即包含A。 (四)多条求模糊求和 1、公式:=SUMIFS(C2:C7,A2:A7,A11&"*",B2:B7,B11) 2、说明:在sumifs中可以使用通配符* (五)多表相同位置求和 1、公式:=SUM(Sheet1:Sheet19!B2) 2、说明:在表中间删除或添加表后,公式结果会自动更新。 求函数解析式的六种常用方法 一、换元法 已知复合函数f [g (x )]的解析式,求原函数f (x )的解析式.令g (x )= t ,求f (t )的解析式,再把t 换为x 即可. 例1 已知f (x x 1+)= x x x 1122++,求f (x )的解析式. 解: 设x x 1+= t ,则 x= 1 1-t (t ≠1), ∴f (t )= 1 11)11(1)11(22-+-+-t t t = 1+2)1(-t +(t -1)= t 2-t+1 故 f (x )=x 2-x+1 (x ≠1). 评注: 实施换元后,应注意新变量的取值范围,即为函数的定义域. 二、配凑法 例2 已知f (x +1)= x+2 x ,求f (x )的解析式. 解: f (x +1)= 2)(x +2 x +1-1=2)1(+x -1, ∴ f (x +1)= 2)1(+x -1 (x +1≥1),将x +1视为自变量x , 则有 f (x )= x 2-1 (x ≥1). 评注: 使用配凑法时,一定要注意函数的定义域的变化,否则容易出错. 三、待定系数法 例3 已知二次函数f (x )满足f (0)=0,f (x+1)= f (x )+2x+8,求f (x )的解析式. 解:设二次函数f (x )= ax 2+bx+c ,则 f (0)= c= 0 ① f (x+1)= a 2)1(+x +b (x+1)= ax 2+(2a+b )x+a+b ② 由f (x+1)= f (x )+2x+8 与①、② 得 ???=++=+822b a b b a 解得 ???==. 7,1b a 故f (x )= x 2+7x. 评注: 已知函数类型,常用待定系数法求函数解析式. 高考求函数解析式方法 及例题 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN 函数专题之解析式问题 求函数解析式的方法 把两个变量的函数关系,用一个等式来表示,这个等式叫函数的解析式,简称解析式。 求函数解析式的题型有: (1)已知函数类型,求函数的解析式:待定系数法; (2)已知()f x 求[()]f g x 或已知[()]f g x 求()f x :换元法、配凑法; (3)已知函数图像,求函数解析式; (4)()f x 满足某个等式,这个等式除()f x 外还有其他未知量,需构造另个等式:解方程组法; (5)应用题求函数解析式常用方法有待定系数法等。 ,求f(x)的解, 待定系数法 ()f x 22(2)f x -=(2)f x --设二次函数满足且图象在轴上的截距为1,在轴截得的线段长为,求的解析式。 x y ()f x 例题: 解法一、 1222x x a ? -= =2248b ac a ∴-=21 ()21 2f x x x ∴=++1 c =又1 ,2,12a b c = ==解得2 ()(0)f x ax bx c a =++≠设(2)(2)f x f x -=--由40 a b -=得 解法二、 (0)1f =41 a k ∴+=12 22x x -=222k a -∴=1 ,12 a k ∴= =-22 1 ()(2)121212 f x x x x ∴= +-=++()y f x =2 x =-得的对称轴为 (2)(2)f x f x -=--由∴2()(2)f x a x k =++设 二 【换元法】(注意新元的取值范围) 已知))((x g f 的表达式,欲求)(x f ,我们常设)(x g t =,从而求得)(1t g x -=,然后代入 ))((x g f 的表达式,从而得到)(t f 的表达式,即为)(x f 的表达式。 三【配凑法(整体代换法)】 若已知))((x g f 的表达式,欲求)(x f 的表达式,用换元法有困难时,(如)(x g 不存在反函数)可把)(x g 看成一个整体,把右边变为由)(x g 组成的式子,再换元求出)(x f 的式子。 1、ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值。 使用格式:ABS(number) 参数说明:number代表需要求绝对值的数值或引用的单元格。 应用举例:如果在B2单元格中输入公式:=ABS(A2),则在A2单元格中无论输入正数(如100)还是负数(如-100),B2中均显示出正数(如100)。 特别提醒:如果number参数不是数值,而是一些字符(如A等),则B2中返回错误值“#VALUE!”。 2、AND函数 函数名称:AND 主要功能:返回逻辑值:如果所有参数值均为逻辑“真(TRUE)”,则返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。 使用格式:AND(logical1,logical2, ...) 参数说明:Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。 应用举例:在C5单元格输入公式:=AND(A5>=60,B5>=60),确认。如果C5中返回TRUE,说明A5和B5中的数值均大于等于60,如果返回FALSE,说明A5和B5中的数值至少有一个小于60。 特别提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。 3、AVERAGE函数 函数名称:AVERAGE 主要功能:求出所有参数的算术平均值。 使用格式:AVERAGE(number1,number2,……) 参数说明:number1,number2,……:需要求平均值的数值或引用单元格(区域),参数不超过30个。 应用举例:在B8单元格中输入公式:=AVERAGE(B7:D7,F7:H7,7,8),确认后,即可求出B7至D7区域、F7至H7区域中的数值和7、8的平均值。 特别提醒:如果引用区域中包含“0”值单元格,则计算在内;如果引用区域中包含空白或字符单元格,则不计算在内。 4、COLUMN 函数 函数名称:COLUMN 主要功能:显示所引用单元格的列标号值。 使用格式:COLUMN(reference) 参数说明:reference为引用的单元格。 应用举例:在C11单元格中输入公式:=COLUMN(B11),确认后显示为2(即B列)。 特别提醒:如果在B11单元格中输入公式:=COLUMN(),也显示出2;与之相对应的还有一个返回行标号值的函数——ROW(reference)。 5、CONCATENATE函数 函数名称:CONCATENATE 主要功能:将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中。 使用格式:CONCATENATE(Text1,Text……) 参数说明:Text1、Text2……为需要连接的字符文本或引用的单元格。 应用举例:在C14单元格中输入公式:=CONCATENATE(A14,"@",B14,".com"),确认后,即可将A14单元格中字符、@、B14单元格中的字符和.com连接成一个整体,显示在C14单元格中。 特别提醒:如果参数不是引用的单元格,且为文本格式的,请给参数加上英文状态下的双引号,如果将上述公式改为:=A14&"@"&B14&".com",也能达到相同的目的。 6、COUNTIF函数 函数名称:COUNTIF 主要功能:统计某个单元格区域中符合指定条件的单元格数目。 使用格式:COUNTIF(Range,Criteria) 参数说明:Range代表要统计的单元格区域;Criteria表示指定的条件表达式。 求函数解析式常用的方法 求函数解析式常用的方法有:待定系数法、换元法、配凑法、消元法、特殊值法。 以下主要从这几个方面来分析。 (一)待定系数法 待定系数法是求函数解析式的常用方法之一,它适用于已知所求函数类型(如一次函数,二次函数,正、反例函数等)及函数的某些特征求其解析式的题目,它在函数解析式的确定中扮演着十分重要的角色。其方法:已知所求函数类型,可预先设出所求函数的解析式,再根据题意列出方程组求出系数。 例1:已知()f x 是二次函数,若(0)0,f =且(1)()1f x f x x +=++试求()f x 的表达式。 解析:设2()f x ax bx c =++ (a ≠0) 由(0)0,f =得c=0 由(1)()1f x f x x +=++ 得 22(1)(1)1a x b x c ax bx c x ++++=++++ 整理得22(2)()1ax a b x a b c ax b c x c +++++=++++ 得 212211120011()22 a a b b a b c c b c c f x x x ?=?+=+????++=+?=????=?=??? ∴=+ 小结:我们只要明确所求函数解析式的类型,便可设出其函数解析式,设法求出其系数即可得到结果。类似的已知f(x)为一次函数时,可设f(x)=ax+b(a≠0);f(x)为反比例函数时,可设f(x)= k x (k≠0);f(x)为 二次函数时,根据条件可设①一般式:f(x)=ax2+bx+c(a≠0) ②顶点式:f(x)=a(x-h)2+k(a≠0) ③双根式:f(x)=a(x-x1)(x-x2)(a≠0) (二)换元法 换元法也是求函数解析式的常用方法之一,它主要用来处理不知道所求函数的类型,且函数的变量易于用另一个变量表示的问题。它主要适用于已知复合函数的解析式,但使用换元法时要注意新元定义域的变化,最后结果要注明所求函数的定义域。 例2 :已知1)1,f x =+求()f x 的解析式。 解析: 1视为t ,那左边就是一个关于t 的函数()f t , 1t =中,用t 表示x ,将右边化为t 的表达式,问题即可解决。 1t = 2220 1 ()(1)2(1)1()(1)x t f t t t t f x x x ≥∴≥∴=-+-+=∴=≥ 小结:①已知f[g(x)]是关于x 的函数,即f[g(x)]=F(x),求f(x)的解析式,通常令g(x)=t ,由此能解出x=(t),将x=(t)代入f[g(x)]=F(x)中,求得f(t)的解析式,再用x 替换t ,便得f(x)的解析式。 注意:换元后要确定新元t 的取值范围。 ②换元法就是通过引入一个或几个新的变量来替换原来的某些变量的解题方法,它的基本功能是:化难为易、化繁为简,以快速实现未知向已知的转换,从而达到顺利解题的目的。常见的换元法是多种多样的,如局部换元、整体换元、三角换元、分母换元等,它的应用极为广泛。 (三)配凑法 已知复合函数[()]f g x 的表达式,要求()f x 的解析式时,若[()]f g x 表达式右边易配成()g x 的运算形式,则可用配凑法,使用 EXCEL中常用函数及使用方法 Excel函数一共有11类:数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户自定义函数。 1.数据库函数 当需要分析数据清单中的数值是否符合特定条件时,可以使用数据库工作表函数。例如,在一个包含销售信息的数据清单中,可以计算出所有销售数值大于1,000 且小于2,500 的行或记录的总数。Microsoft Excel 共有12 个工作表函数用于对存储在数据清单或数据库中的数据进行分析,这些函数的统一名称为Dfunctions,也称为D 函数,每个函数均有三个相同的参数:database、field 和criteria。这些参数指向数据库函数所使用的工作表区域。其中参数database 为工作表上包含数据清单的区域。参数field 为需要汇总的列的标志。参数criteria 为工作表上包含指定条件的区域。 2.日期与时间函数 通过日期与时间函数,可以在公式中分析和处理日期值和时间值。 3.工程函数 工程工作表函数用于工程分析。这类函数中的大多数可分为三种类型:对复数进行处理的函数、在不同的数字系统(如十进制系统、十六进制系统、八进制系统和二进制系统)间进行数值转换的函数、在不同的度量系统中进行数值转换的函数。 4.财务函数 财务函数可以进行一般的财务计算,如确定贷款的支付额、投资的未来值或净现值,以及债券或息票的价值。财务函数中常见的参数: 未来值(fv)--在所有付款发生后的投资或贷款的价值。 期间数(nper)--投资的总支付期间数。 付款(pmt)--对于一项投资或贷款的定期支付数额。 现值(pv)--在投资期初的投资或贷款的价值。例如,贷款的现值为所借入的本金数额。 利率(rate)--投资或贷款的利率或贴现率。 类型(type)--付款期间内进行支付的间隔,如在月初或月末。 5.信息函数 可以使用信息工作表函数确定存储在单元格中的数据的类型。信息函数包含一组称为IS 的工作表函数,在单元格满足条件时返回TRUE。例如,如果单元格包含一个偶数值,ISEVEN 工作表函数返回TRUE。如果需要确定某个单元格区域中是否存在空白单元格,可以使用COUNTBLANK 工作表函数对单元格区域中的空白单元格进行计数,或者使用ISBLANK 工作表函数确定区域中的某个单元格是否为空。 6.逻辑函数 使用逻辑函数可以进行真假值判断,或者进行复合检验。例如,可以使用IF 函数确定条件为真还是假,并由此返回不同的数值。 求解函数解析式的几种常用方法 高考要求 求解函数解析式是高考重点考查内容之一,需引起重视 本节主要帮助考生在深刻理解函数定义的基础上,掌握求函数解析式的几种方法,并形成能力,并培养考生的创新能力和解决实际问题的能力 重难点归纳 求解函数解析式的几种常用方法主要有 1、换元法:已知))((x g f 的表达式,欲求)(x f ,我们常设)(x g t =,从而求得)(1t g x -=,然后代入))((x g f 的表达式,从而得到)(t f 的表达式,即为)(x f 的表达式。 2、凑配法 若已知))((x g f 的表达式,欲求)(x f 的表达式,用换元法有困难时,(如)(x g 不存在反函数)可把)(x g 看成一个整体,把右边变为由)(x g 组成的 3、待定系数法 若已知)(x f 的结构时,可设出含参数的表达式,再根据已知条件,列方程或方程组,从而求出待定的参数,求得)(x f 的表达式。 式子,再换元求出)(x f 的式子。 4、赋值法 在求某些函数的表达式或求某些函数值时,有时把已知条件中的某些变量赋值,使问题简单明了,从而易于求出函数的表达式。 另外,在解题过程中经常用到分类讨论、等价转化等数学思想方法 5、消元法 若已知以函数为元的方程形式,若能设法构造另一个方程,组成 方程组,再解这个方程组,求出函数元,称这个方法为消元法。 典型题例示范讲解 例1 如果45)1(2+-=+x x x f ,那么f(x)=______________________. 例2 设二次函数f(x)满足f(x-2)=f(-x-2),且图像在y 轴上的截距为1,被x 轴截得的线段长为22,求f(x)的解析式。 例 3 设y=f(x)是实数函数,且x x f x f =-)1(2)(,求证:23 2|)(|≥x f 。 例4 已知bx x f x af n n =-+)()(,其中n a ,12≠奇数,试求)(x f 。 例5 已知)12()()(+++=+b a a b f b a f ,且,1)0(=f 求)(x f 的表达式。 解:令0=b ,由已知得:.1)1()0()(2a a a a f a f ++=++= 1)(2++=∴x x x f 例6 (1)已知函数f (x )满足f (log a x )=)1(1 2x x a a -- (其中a >0,a ≠1,x >0),求f (x )的表达式 (2)已知二次函数f (x )=ax 2+bx +c 满足|f (1)|=|f (-1)|=|f (0)|=1,求 f (x ) 的表达式 命题意图 本题主要考查函数概念中的三要素 定义域、值域和对应法则,以及计算能力和综合运用知识的能力 知识依托 利用函数基础知识,特别是对“f ”的理解,用好等价转化,注意定义域 错解分析 本题对思维能力要求较高,对定义域的考查、等价转化易出错 技巧与方法 (1)用换元法;(2)用待定系数法 解 (1)令t=log a x (a >1,t >0;0 WPS表格常用函数应用教程 一、函数应用基础 (一)函数和公式 1.什么是函数 WPS表格函数即是预先定义,执行计算、分析等处理数据任务的特殊公式。以常用的求和函数SUM为例,它的语法是“SUM(数值1, 数值2,......)”。其中“SUM”称为函数名称,一个函数只有唯一的一个名称,它决定了函数的功能和用途。函数名称后紧跟左括号,接着是用逗号分隔的称为参数的内容,最后用一个右括号表示函数结束。参数是函数中最复杂的组成部分,它规定了函数的运算对象、顺序或结构等。使得用户可以对某个单元格或区域进行处理,如确定成绩名次、计算三角函数值等。 2.什么是公式 函数与公式既有区别又互相联系。如果说前者是WPS 表格预先定义好的特殊公式,后者就是由用户自行设计对工作表进行计算和处理的公式。以公式“=SUM(E1:H1)*A1+26”为例,它要以等号“=”开始,其内部可以包括函数、引用、运算符和常量。上式中的“SUM(E1:H1)”是函数,“A1”则是对单元格A1 的引用(使用其中存储的数据),“26”则是常量,“*”和 “+”则是算术运算符(另外还有比较运算符、文本运算符和引用运算符)。如果函数要以公式的形式出现,它必须有两个组成部分,一个是函数名称前面的等号,另一个则是函数本身。 (二)函数的参数 函数右边括号中的部分称为参数,假如一个函数可以使用多个参数,那么参数与参数之间使用半角逗号进行分隔。参数可以是常量(数字和文本)、逻辑值(例如真值或假值)、数组、错误值(例如#N/A)或单元格引用(例如E1:H1),甚至可以是另一个或几个函数等。参数的类型和位置必须满足函数语法的要求,否则将返回错误信息。 1.常量 常量是直接输入到单元格或公式中的数字或文本,或由名称所代表的数字或文本值,例如数字“2890.56”、日期“2003-8-19”和文本“黎明”都是常量。但是公式或由公式计算出的结果都不是常量,因为只要公式的参数发生了变化,它自身或计算出来的结果就会发生变化。 2.逻辑值 逻辑值是比较特殊的一类参数,它只有真或假两种类型。例如在公式“=IF(A3=0,"",A2/A3)”中,“A3=0”就是一个可以返回真或假两种结果的参数。当“A3=0”为真时在公式所在单元格中填入“0”,否则在单元格中填入“A2/A3”的计算结果。 求函数解析式的几种基本方法及例题: 1、凑配法:已知复合函数[()]f g x 的表达式,求()f x 的解析式,[()]f g x 的表达式容易配成()g x 的运算形式时,常用配凑法。但要注意所求函数()f x 的定义域不是原复合函数的定义域,而是()g x 的值域。 此法较适合简单题目。 例1、(1)已知f(x+1)=x 2+2x,求f(x)及f(x-2). (2) 已知2 2 1)1(x x x x f + =+ )0(>x ,求 ()f x 的解析式 解:(1)f(x+1)=(x+1)2-1,∴f (x )=x 2-1.f(x-2)=(x-2)2-1=x 2-4x+3. (2) 2)1()1(2 -+ =+ x x x x f , 21≥+ x x 2)(2-=∴x x f )2(≥x 2、换元法:已知复合函数[()]f g x 的表达式时,还可以用换元法求()f x 的解析式。与配凑法一样,要注意所换元的定义域的变化。 例2 (1) 已知x x x f 2)1(+=+,求)1(+x f (2)如果).(,,)(x f x x x x f 时,求则当1011≠-= 解:(1)令1+= x t ,则1≥t ,2)1(-=t x x x x f 2)1(+=+ ∴,1)1(2)1()(2 2 -=-+-=t t t t f 1)(2 -=∴x x f )1(≥x x x x x f 21)1()1(2 2 +=-+=+∴ )0(≥x (2)设 .)(,,,1 11 1111 11-= ∴-= - = = =x x f t t t f t x t x t )(代入已知得则 3、待定系数法:当已知函数的模式求解析式时适合此法。应用此法解题时往往需要解恒等式。 例3、已知f(x)是二次函数,且满足f(x+1)+f(x-1)=2x 2-4x,求f(x). 解:设f(x)=ax 2+bx+c(a ≠0),∴f(x+1)+f(x-1)=a(x+1)2+b(x+1)+c +a(x-1)2+b(x-1)+c=2ax 2+2bx+2a+2c=2x 2-4x, 则应有.)(12121 0224 2222 --=∴?? ???-=-==∴?????=+-==x x x f c b a c a b a 四、构造方程组法:若已知的函数关系较为抽象简约,则可以对变量进行置换,设法构造方程组,通过解方程组求得函数解析式。 例4 设,)1 (2)()(x x f x f x f =-满足求)(x f 解 x x f x f =-)1 (2)( ① 显然,0≠x 将x 换成 x 1,得: x x f x f 1 )(2)1(=- ② 解① ②联立的方程组,得: x x x f 323)(-- = 五、赋值法:当题中所给变量较多,且含有“任意”等条件时,往往可以对具有“任意性”的变量进行赋值,使问题具体化、简单化,从而求得解析式。 例5 已知:1)0(=f ,对于任意实数x 、y ,等式高中数学必修一求函数解析式解题方法大全及配套练习
求函数解析式的几种常用方法
日常工作中常用函数
函数解析式的求解方法例题
高三数学第二轮专题讲座复习:求解函数解析式的几种常用方法
Excel中常用函数及其使用方法简介
高中数学函数解析式求法
Excel常用函数及使用方法
高中数学-求函数解析式的六种常用方法
高考求函数解析式方法及例题
Excel常用函数的使用方法
求函数解析式常用的方法
EXCEL中常用函数及使用方法
求解函数解析式的几种常用方法
WPS表格常用函数应用教程(经典版)
函数解析式的几种基本方法及例题