高等數學,MATLAB求最小二乘法所建立的目標函式的方法

2021-04-21 08:42:08 字數 5518 閱讀 6168

1樓:緩緩掉落的松針

你是bai問建立目標函式在理論上du的方zhi法還是實際在matlab中運用dao的方法回?

理論的方法 就是尋找一

答個函式f(x)使得他在每一個x點的取值y與給定資料點的y值之差的平方和最小,這樣一來,目標函式自然就是假定的f(x)在每一個x點的取值y,與給定的y值之差的平方和。然後再由約束條件,取極值的方法求得目標函式的最小值。

實際運用 我這裡有** m檔案 可以直接在matlab引用,輸出擬合出的n次函式的係數。

附件上傳不了,我直接拷到這裡 編輯到m檔案裡面就可以用。

function c=lspoly(x,y,m)n=length(x);

b=zeros(1:m+1);

f=zeros(n,m+1);

for k=1:m+1

f(:,k)=x'.^(k-1);

enda=f'*f;

b=f'*y';

c=a\b;

c=flipud(c);

我想利用matlab的最小二乘法求解目標函式

2樓:偵探章邯

你是問建立目標

函式在理論上的方法還是實際在matlab中運用的方法?

理論的方法 就是尋找一個函式f(x)使得他在每一個x點的取值y與給定資料點的y值之差的平方和最小,這樣一來,目標函式自然就是假定的f(x)在每一個x點的取值y,與給定的y值之差的平方和。然後再由約束條件,取極值的方法求得目標函式的最小值。

實際運用 我這裡有**  m檔案 可以直接在matlab引用,輸出擬合出的n次函式的係數。

附件上傳不了,我直接拷到這裡  編輯到m檔案裡面就可以用。

function c=lspoly(x,y,m)n=length(x);

b=zeros(1:m+1);

f=zeros(n,m+1);

for k=1:m+1

f(:,k)=x'.^(k-1);

enda=f'*f;

b=f'*y';

c=a\b;

c=flipud(c);

數值方法重要求用matlab的最小二乘法"直線"擬合此題(要寫出完整的程式過程,急用,求高手!!!!!!)

3樓:匿名使用者

clcclear

format compact

xi=[163 123 150 123 141];

yi=[186 126 172 125 148];

p=polyfit(xi,yi,1);

syms x

xx=123:1:163;

yy=polyval(p,xx);

plot(xi,yi,'r*',xx,yy,'b-')%y=p(1)*x+p(2)

p裡面的兩個係數前

面一個是x的係數,後面回

一個是常答數b。

4樓:匿名使用者

excel 可以做到啊

matlab中用最小二乘法擬合直線

5樓:mcr董事長

用polyfit函式,(用來多項式擬合的,是用最小二乘法)舉個例子

x=[90 91 92 93 94 95 96];

z=[70 122 144 152 174 196 202];

a=polyfit(x,z,1)

結果:a =

1.0e+03 *

0.0205 -1.7551

1表示1次多項式(一次時就是直線,適用於你的情況)a是多項式的係數向量,是從高次項往低次項排的,如果想運用結果,比如想知道當x=97時z等於多少那麼有兩種方法,

直接用係數

>> a(1)*97+a(2)

ans =

233.4286

或者用polyval函式

>> polyval(a,97)

ans =

233.4286

6樓:吾書橋君雅

首先確認一下

,你這的log是以10為底的對數吧?那麼命令如下。(如果是以e為底就不用除以log(10)了,自己改一下。)

>>x=0.01:0.01:1;

>>m=log(x)/log(10);

>>for

i=1:100;

y(i)=log((2^0.5)*(x(i)+1)/(x(i)*x(i)+2*x(i))^0.5)/log(10);

end>>plot(m,y,'r');holdon;>>p

=polyfit(m,y,1)%這個就是擬合的函式p=-0.3600

0.4161

>>pp=poly2sym(p);

>>ezplot(pp,[-2,0]);

紅色的是原曲線,藍色的是擬合直線。擬合直線的斜率就是-0.3600

最小二乘法用matlab怎麼實現(求具體程式)

7樓:匿名使用者

function a=multifit(x,y,m)

%a--輸出的擬合多項式的係數

n=length(x);

m=length(y);

if(n ~= m)

disp('資料點座標不匹配!');

return;

endc(1:(2*m+1))=0;

b(1:(m+1))=0;

for j=1:(2*m+1) %求出c和b

for k=1:n

c(j)=c(j)+x(k)^(j-1);

if(j<(m+2))

b(j)=b(j)+y(k)*x(k)^(j-1);

endend

endc(1,:)=c(1:(m+1));

for s=2:(m+1)

c(s,:)=c(s:(m+s));

enda=b'\c; %直接求解法求出擬合係數

%離散試驗資料點的線性最小二乘擬合

function [a,b]=lzxec(x,y)

if(length(x) == length(y))

n = length(x);

else

disp('x和y的維數不相等!');

return;

end %維數檢查

a = zeros(2,2);

a(2,2) = n;

b = zeros(2,1);

for i=1:n

a(1,1) = a(1,1) + x(i)*x(i);

a(1,2) = a(1,2) + x(i);

b(1,1) = b(1,1) + x(i)*y(i);

b(2,1) = b(2,1) + y(i);

enda(2,1) = a(1,2);

s = a\b;

a = s(1);

b = s(2);

%離散試驗資料點的正交多項式最小二乘擬合

function a=zjzxec(x,y,m)

if(length(x) == length(y))

n = length(x);

else

disp('x和y的維數不相等!');

return;

end %維數檢查

syms v;

d = zeros(1,m+1);

q = zeros(1,m+1);

alpha = zeros(1,m+1);

for k=0:m

px(k+1)=power(v,k);

end %x的冪多項式

b2 = [1];

d(1) = n;

for l=1:n

q(1) = q(1) + y(l);

alpha(1) = alpha(1) + x(l);

endq(1) = q(1)/d(1);

alpha(1) = alpha(1)/d(1);

a(1) = q(1);

b1 = [-alpha(1) 1];

for l=1:n

d(2) = d(2) + (x(l)-alpha(1))^2;

q(2) = q(2) + y(l)*(x(l)-alpha(1));

alpha(2) = alpha(2) + x(l)*(x(l)-alpha(1))^2;

endq(2) = q(2)/d(2);

alpha(2) = alpha(2)/d(2);

a(1) = a(1)+q(2)*(-alpha(1));

a(2) = q(2);

beta = d(2)/d(1);

for i=3:(m+1)

b = zeros(1,i);

b(i) = b1(i-1);

b(i-1) = -alpha(i-1)*b1(i-1)+b1(i-2);

for j=2:i-2

b(j) = -alpha(i-1)*b1(j)+b1(j-1)-beta*b2(j);

endb(1) = -alpha(i-1)*b1(1)-beta*b2(1);

bf = b*transpose(px(1:i));

for l=1:n

qx = subs(bf,'v',x(l));

d(i) = d(i) + (qx)^2;

q(i) = q(i) + y(l)*qx;

alpha(i) = alpha(i) + x(l)*(qx)^2;

endalpha(i) = alpha(i)/d(i);

q(i) = q(i)/d(i);

beta = d(i)/d(i-1);

for k=1:i-1

a(k) = a(k)+q(i)*b(k);

enda(i) = q(i)*b(i);

b2 = b1;

b1 = b;

end舉第一個執行結果的例子吧!

>> x=[3,4,5,6,7,8,9];

>> y=[2.01,2.98,3.50,5.02,5.47,6.02,7.05];

>> multifit(x,y,7)

ans =

columns 1 through 3

0.153705817445571 1.28812217846988 10.9204180096604

columns 4 through 6

93.4341699408163 805.369642330511 6984.42872632458

columns 7 through 8

60878.714442185 532900.1377831

8樓:我的無奈人生

最小二乘法在matlab語言中就是最簡單的函式擬合。

請問怎樣用MATLAB最小二乘擬合多項式Zfx,y

可以來用回自歸的,看不bai懂du你的數zhi 據x 0 20 40 60 80 100 y 0 50 100 150 200 250 300 x,y meshgrid x,y z 2.3 3.2 3.3 4.1 3.8 2.9 1.2 3.1 3.5 4.2 3.9 2.8 2.6 3 3.6 4...

簡述最小二乘估計原理,什麼是最小二乘法及其原理?

對於x和y的n對觀察值,用於描述其關係的直線有多條,究竟用哪條直線來代表兩個變數之間的關係,需要有一個明確的原則。這時用距離各觀測點最近的一條直線,用它來代表x與y之間的關係與實際資料的誤差比其它任何直線都小。根據這一思想求得直線中未知常數的方法稱為最小二乘法,即使因變數的觀察值與估計值之間的離差平...

高等數學求不定積分,高等數學求不定積分

詳細過程如圖,希望能幫到你解決你心中的問題 希望過程清楚明白 高等數學求不定積分?兩邊對x求導 x 5 f x x x 2 1 f x 1 x 4 x 2 1 f x dx dx x 4 x 2 1 令x sect,專則1 x cost,dx secttantdt f x dx secttantdt...