① 求高手!!!!!!數值分析實驗用matlab計算
%選取節點
x = -1:2/19:1;
x = single(x);
%計算節點處樣本點
y = exp(x);
y = single(y);
%多項式基函數次數取值
table = [3 5 7 9 11 13 15];
cn = zeros(7,1);
sigma = zeros(7,1);
%多項式基函數次數
for m = 1:7
I = table(m);
%計算系數矩陣
G = zeros(I+1,I+1);
for i = 1:I+1
for j = 1:I+1
if (i==j)
G(i,j) = 2/(2*j-1);
else
G(i,j) = 0;
end
end
end
G = single(G);
%計算系數矩陣的條件數
cn(m) = cond(G);
%計算dd
dd = [2.3504 0.735759 0.143126 0.0201302 0.00221447 0.000199925 0.0000153007 1.01607*10^-6 5.95849*10^-8 3.12823*10^-9 1.48656*10^-10 0.*10^-12 2.57744*10^-13 0.*10^-15 0.*10^-15 0.*10^-18 0.*10^-15]
dd = single(dd);
%計算d
d = zeros(I+1,1);
for i = 1:I+1
d(i) = dd(i);
end
d=single(d);
%求解多項式系數矩陣a
a = inv(G)*d;
a = single(a);
%計算嘞讓德多項式在給定節點處的值
P = zeros(16,20);
for k = 1:20
P(1,k) = 1;
P(2,k) = x(k);
P(3,k) = (3*x(k)^2-1)/2;
P(4,k) = (5*x(k)^3-3*x(k))/2;
P(5,k) = (35*x(k)^4-30*x(k)^2+3)/8;
P(6,k) = (63*x(k)^5-70*x(k)^3+15*x(k))/8;
P(7,k) = (231*x(k)^6-315*x(k)^4+105*x(K)^2-5)/16;
P(8,k) = (429*x(k)^7-693*x(k)^5+315*x(k)^3-35*x(k))/6;
P(9,k) = (6435*x(k)^8-12012*x(k)^6+6930*x(k)^4-1260*x(k)^2+35)/128;
P(10,k) = (12155*x(k)^9-25740*x(k)^7+18018*x(k)^5-4620*x(k)^3+315*x(k))/128;
P(11,k) = (46189*x(k)^10-109395*x(k)^8+90090*x(k)^6-30030*x(k)^4+3465*x(k)^2-63)/256;
P(12,k) = (88179*x(k)^11-230945*x(k)^9+218790*x(k)^7-90090*x(k)^5+1505*x(k)^3-639*x(k))/256;
P(13,k) = (676039*x(k)^12-1939938*x(k)^10+2078505*x(k)^8-1021020*x(k)^6+225225*x(k)^4-18018*x(k)^2+231)/1024;
P(14,k) = (1300075*x(k)^13-4056234*x(k)^11+484945*x(k)^9-2771340*x(k)^7+765765*x(k)^5-90090*x(k)^3+3003*x(k))/1024;
P(15,k) = (5014575*x(k)^14-16900975*x(k)^12+22309287*x(k)^10-14549535*x(k)^8+4849845*x(k)^6-765765*x(k)^4+45045*x(k)^2-429)/2048;
P(16,k) = (9694845*x(k)^15-35102025*x(k)^13+50702925*x(k)^11-37182145*x(k)^9+14549535*x(k)^7-2909907*x(k)^5+255255*x(k)^3-6435*x(k))/2048;
end
P = single(P);
%計算擬合所得數值
yy = y;
for k = 1:20
sum3 = 0;
for i = 1:I+1
sum3 = sum3+a(i)*P(i,k);
end
yy(k) = sum3;
end
yy = single(yy);
%計算偏差sigma
for k = 1:20
sigma(m) = sigma(m)+(yy(k)-y(k))^2;
end
end
figure(1);
plot(table,log(cn))
hold on
plot(table,log(cn),'r*')
figure(2);
plot(table,sigma)
hold on
plot(table,sigma,'r*')
② 常微分方程的各種數值計算方法的matlab源程序
在help里有
③ 關於數值計算方法的線性方程組的數值解法,求解具體步驟,最好可以有matlab編程
會慢慢收斂到A的第一個特徵向量,然後max||Xk|會收斂到第一個特徵值,也就是絕對值最大的那個特徵值。
X=A\b; b=X/norm(X,'inf');
X=A\b; b=X/norm(X,'inf');
......
④ 應用數值計算方法(運用MATLAB)求解帶參數的定積分
這個很簡單啊:
>> syms t x
>> int(sin(t)/t,0,x)
ans =
sinint(x)
由於 sin(t)/t 的積分沒有更簡單的初等函數表示,所以用一個專門的函數 sinint 來表達(可以doc sinint 查看該函數的說明)。