AlgebraMaster

Modern C++ 创造非凡 . 改变世界

导航

Mathematica/偏导数/最小二乘法(线性回归)

 

a = 2/123
a                          //输出的还是2/123
N[a]                       //输出的就是小数点
N[a,2]                     //保留三位小数点
Clear[a] 
Solve[2== x^2-7 , x]       //结果-3 和 3
Plot[Sin[x], {x, 0, pi}]
Integrate[1/(1 - x^3), x]
Log[1] = 0
积分中的积分d 一定适用esc dd 打出来的 或者\[DifferentialD]. 

求导:
    f = 1/(1+x)
    D[f,x]           也就是f'(x)
    D[f, {x, 2}]     二阶导
ScientificForm[0.0000125] = 1.25 * (10^-5)  //这种是科学计数

微分:
DSolve[{y'[x] - 2*y[x] == 0}, y[x], x]             //不带初值
DSolve[{y'[x] - 2*y[x] == 0, y[0] == 1}, y[x], x]  //初值微分方程y'-2y=0 y[0]=1

 

绘图:

1,one dim一元函数

2,画带有积分的一元函数要注意:

 

 参数方程:

x=(sin t) ^3

y=(cos t) ^3

 

同时绘制2个参数图:

 

 

参数图并且求导:

 

三维参数图:

r(t ) = (cos t)i + (sin t)j + (sin2t)k

 

 

 

 

 

 

 

z = x^2 + y^2

ContourPlot3D[x^2 + y^2 == z, {x, -3, 3}, {y, -3, 3}, {z, -18, 18}, PlotLabel -> "x^2+y^2=z"] 

 

 

2,:z^2 + x^2 -y^2=1

 

3 二元函数:

二元函数的图形是三维坐标空间的一个点集. 所以二元函数形式为f(x,y) ,f(x,y)= c ,就是等位线(等高线)方程。

画 (a)二元函数给定的曲面,(b)并且画等高线(等位线),(c)并且画f 给定点的等高线(等位线)

 

 

 

 

 4,三元函数:

三元函数的的图形是四维空间的一个点集. 所以画三元函数的一些等高线便于理解三元函数.

例如:f(x,y,z) = 4Ln(x^2 + y^2 + z^2)

可以画f(x,y,z) = 0 ,f(x,y,z)=1 .... 三维等位面图形。

 

5,参数化表面:并画等位线

x = u cosv,   y=u sinv,  z=u , 0<=u <=2,  0<=v<=2Pi

ParametricPlot3D[{u*Cos[v], u Sin[v], u},  {u, 0, 2}, {v, 0, 
  2 Pi}    ]
ParametricPlot[
 Evaluate[Table[{z Cos[v], z Sin[v]}, {z, 0, 2, 1/3}]], {v, 0, 2 Pi}, 
 AspectRatio -> Automatic]

 

 

 

 

 

 

 

偏导数不存在的f(x,y) = sqrt(x^2 + y^2)

 

 

最小二乘法,线性回归算法。

自己在笔上求了一阶偏导数=0时的临界点。二阶偏导数太麻烦,还要判断Wxx*Fyy - (Wxy)^2 > 0 , Wxx>0 才满足求到最近距离。直接把上答案。

 

一阶偏导数推到过程:

 

 

二阶具体完整过程:

 

分析二阶偏导数,才能确定是不是 w最小。

 

 

 

最小二乘方平面拟合:

 

 

 

 

画3d图形,绘制等高线,求二阶导数fxx,fyy,fxy,求fxx*fyy - fxy^2:

Clear[x, y];
f[x_, y_] = 2*x^4 + y^4 - 2*x^2 - 2*y^2 + 3;
{xmin, xmax} = {-3/2 , 3/2};
{ymin, ymax} = {-3/2, 3/2};
Plot3D[f[x, y], {x, xmin, xmax}, {y, ymin, ymax}]  (* 绘制三维图形 *)
ContourPlot[f[x, y], {x, xmin, xmax}, {y, ymin, ymax}] (* 绘制几条等高线 *)
fx = D[f[x, y], x] ;       
fy = D[f[x, y], y];

(* 求critical points*)
cirt = Solve[{fx == 0, fy == 0}];

(*把临界点写成{x,y} {x,y} {x,y}... 形式*)
critpts = {x, y} /. cirt

(* 求二阶导数*)
fxx = D[fx, x];
fxy = D[fx, y];
fyy = D[fy, y];

(*二阶导数判别法 写成{{临界点},判别法的值,fxx的值}*)
disc = fxx * fyy - fxy ^2 {{x, y}, disc, fxx} /. cirt

 输出:

 lagrange method:

到一个点的极大距离,求球面x^2+y^2+z^2=4离点(1,-1,1)最远的点

1, method 1 use the build-in function Select[] method... But i think the it is not fastest, The F function has run two times order to get variable d

and Select[] method also run the f[x,y,z] two times. Select[] and Map[] should pay attention to these two functions.Big loop~......o(N) + o(N)

 

Use fully programming method: o(N)

as you can see, the d variable is not useable.

 

RegionPlot/PolarPlot 区域图/极坐标图

 

posted on 2018-08-24 11:52  gearslogy  阅读(6961)  评论(0编辑  收藏  举报