| 9 | 1/1 | 返回列表 |
| 查看: 1862 | 回復(fù): 8 | |||
makechange74鐵蟲 (小有名氣)
|
[求助]
用Gauss-Neuton算法解非線形最小二乘法問題 已有1人參與
|
|
自己根據(jù)網(wǎng)上下載源代碼修改的高斯-牛頓迭代法求非線形最小二乘問題,老是顯示輸入?yún)?shù)不足。注釋是根據(jù)自己理解填寫的 m文件代碼如下: function [x,minf] = GN(f,x0,var,eps) format long; if nargin == 3 %如果沒有設(shè)置eps,則eps=1.0e-6 eps = 1.0e-6; end S = transpose(f)*f; %trnspose是轉(zhuǎn)置,求得r方 k = length(f); % n = length(x0); %n為變量個(gè)數(shù),但是沒用到。 x0 = transpose(x0); %將行向量轉(zhuǎn)置為列向量 tol = 1; %初始容差 A = jacobian(f,var); while tol>eps Fx = zeros(k,1); for i=1:k Fx(i,1) = subs(f(i),var,x0); end Sx = subs(S,var,x0); %求得f轉(zhuǎn)置與其本身值, Ax = subs(A,var,x0); %雅克比矩陣的值 gSx = transpose(Ax)*Fx; dx = -transpose(Ax)*Ax\gSx; x0 = x0 + dx; tol = norm(dx); %tol=dx絕對值之和 end minf = subs(S,var,x); format short; x = x0; end 命令窗口調(diào)用如下: xdata = S1o; %S1o及下面的ydata1都是自己的數(shù)據(jù) syms z1 z2 z3 z4 z5 f = ydata1 - exp(z1)./(exp(z1)+exp(-z1)).*exp(-(xdata./exp(z3)).^exp(z2))+(1-exp(z1)./(exp(z1)+exp(-z1))).*exp(-(xdata./exp(z5)).^exp(z4)); x0 = [1.7380;0.9555;-1.3863;2.0149;-2.5257]; var = findsym(f); eps = 1.0e-3; >> GN 提示錯(cuò)誤如下: 錯(cuò)誤使用 GN (line 6) 輸入?yún)?shù)的數(shù)目不足。 |
source |
金蟲 (小有名氣)
鐵蟲 (小有名氣)
|
function [x,minf] = GN(f,x0,var,eps) format long; if nargin == 3 %如果沒有設(shè)置eps,則eps=1.0e-6 eps = 1.0e-6; end m = 0; S = transpose(f)*f; %trnspose是轉(zhuǎn)置,求得r方 k = length(f); % %n = length(x0); %n為變量個(gè)數(shù),但是沒用到? x0 = transpose(x0); %將行向量轉(zhuǎn)置為列向量 tol = 1; %初始容差 A = jacobian(f,var); while tol>eps Fx = zeros(k,1); for i=1:k Fx(i,1) = subs(f(i),var,x0); end Sx = subs(S,var,x0); %求得f轉(zhuǎn)置與其本身值, Ax = subs(A,var,x0); %雅克比矩陣的值 gSx = transpose(Ax)*Fx; dx = -transpose(Ax)*Ax\gSx; x0 = x0 + dx; tol = norm(dx); %tol=dx絕對值之和 m = m+1; if(m>100000) disp('迭代步數(shù)太多,可能不收斂'); return; end end minf = subs(S,var,x); format short; x = x0; end xdata = S1o; f = ydata1 - exp(z1)./(exp(z1)+exp(-z1)).*exp(-(xdata./exp(z3)).^exp(z2))+(1-exp(z1)./(exp(z1)+exp(-z1))).*exp(-(xdata./exp(z5)).^exp(z4)); x0 = [1.7380;0.9555;-1.3863;2.0149;-2.5257]; var = findsym(f); eps = 1.0e-3; GN(f,x0,var,eps) 從 sym 轉(zhuǎn)換為 double 時(shí)出現(xiàn)以下錯(cuò)誤: 出錯(cuò) GN (line 17) Fx(i,1) = subs(f(i),var,x0); 又出新問題了,還是麻煩能夠解答一下 以下是數(shù)據(jù) S1o:0.0580000000000000 0.0710000000000000 0.0760000000000000 0.0790000000000000 0.0830000000000000 0.0870000000000000 0.0980000000000000 0.111000000000000 0.117000000000000 0.122000000000000 0.122000000000000 0.133000000000000 0.134000000000000 0.138000000000000 0.140000000000000 0.142000000000000 0.150000000000000 0.155000000000000 0.160000000000000 0.160000000000000 0.168000000000000 0.173000000000000 0.173000000000000 0.173000000000000 0.175000000000000 0.176000000000000 0.177000000000000 0.181000000000000 0.182000000000000 0.183000000000000 0.194000000000000 0.203000000000000 0.214000000000000 0.218000000000000 0.222100000000000 0.223000000000000 0.225000000000000 0.247000000000000 0.253000000000000 0.256000000000000 0.257000000000000 0.258000000000000 0.262000000000000 0.263000000000000 0.264000000000000 0.266000000000000 0.267000000000000 0.276000000000000 0.278000000000000 0.280000000000000 0.288000000000000 0.289000000000000 0.306000000000000 0.315000000000000 0.333000000000000 0.335000000000000 0.353000000000000 0.389000000000000 0.404000000000000 0.418000000000000 0.456000000000000 0.489000000000000 ydata1: 0.983870967741936 0.967741935483871 0.951612903225807 0.935483870967742 0.919354838709677 0.903225806451613 0.887096774193548 0.870967741935484 0.854838709677419 0.838709677419355 0.822580645161290 0.806451612903226 0.790322580645161 0.774193548387097 0.758064516129032 0.741935483870968 0.725806451612903 0.709677419354839 0.693548387096774 0.677419354838710 0.661290322580645 0.645161290322581 0.629032258064516 0.612903225806452 0.596774193548387 0.580645161290322 0.564516129032258 0.548387096774193 0.532258064516129 0.516129032258064 0.500000000000000 0.483870967741935 0.467741935483871 0.451612903225806 0.435483870967742 0.419354838709677 0.403225806451613 0.387096774193548 0.370967741935484 0.354838709677419 0.338709677419355 0.322580645161290 0.306451612903226 0.290322580645161 0.274193548387097 0.258064516129032 0.241935483870968 0.225806451612903 0.209677419354839 0.193548387096774 0.177419354838710 0.161290322580645 0.145161290322581 0.129032258064516 0.112903225806452 0.0967741935483870 0.0806451612903230 0.0645161290322580 0.0483870967741930 0.0322580645161290 0.0161290322580639 0 |
金蟲 (小有名氣)
鐵蟲 (小有名氣)
金蟲 (小有名氣)
鐵蟲 (小有名氣)
|
一直在關(guān)注帖子,可就是沒看到回復(fù),真是囧。。 按照你的建議試了試,如果在命令窗口中輸入syms x0(1) 則會提醒錯(cuò)誤使用syms,如果只定義syms x0,令yfitdata=exp(x0(1))./(exp(x0(1))+exp(-x0(1))).*exp(-(xdata./exp(x0(3))).^exp(x0(2)))+(1-exp(x0(1))./(exp(x0(1))+exp(-x0(1)))).*exp(-(xdata./exp(x0(5))).^exp(x0(4)));也會提醒錯(cuò)誤, 在輸入命令時(shí),應(yīng)該是不允許()作為變量;但是如果將yfitdata(我函數(shù)名稱寫的是R)作為一個(gè)函數(shù)寫在m文件中, function F = R(x0,xdata) F = exp(x0(1))./(exp(x0(1))+exp(-x0(1))).*exp(-(xdata./exp(x0(3))).^exp(x0(2)))+(1-exp(x0(1))./(exp(x0(1))+exp(-x0(1)))).*exp(-(xdata./exp(x0(5))).^exp(x0(4))); 調(diào)用如下: syms x0 >> x0 = [1.7380;0.9555;-1.3863;2.0149;-2.5257]; >> xdata = S1o; >> f = 0.5.*(ydata1 - R(x0,xdata)).^2; 錯(cuò)誤使用 sym>checkindex (line 1545) Index must be a positive integer or logical. 出錯(cuò) sym>privformatmatrix (line 1503) checkindex(x); 出錯(cuò) sym>privformat (line 1478) s = privformatmatrix(x); 出錯(cuò) sym/subsref (line 685) [inds{k},refs{k}] = privformat(inds{k}); 真是不知道該怎么辦了? 此外,按照最原本程序,錯(cuò)誤提醒的是從 sym 轉(zhuǎn)換為 double 時(shí)出現(xiàn)以下錯(cuò)誤: 是不是跟sym定義的類型有關(guān),這個(gè)問題還不是很明白,網(wǎng)絡(luò)找的資源只有源程序,沒有對應(yīng)例子,對于新手還是有些困難 |
金蟲 (小有名氣)
鐵蟲 (小有名氣)
| 9 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 328求調(diào)劑 +4 | LHHL66 2026-03-23 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 一志愿上海交大生物與醫(yī)藥專碩324分,求調(diào)劑 +4 | jiajunX 2026-03-22 | 4/200 |
|
|
[考研] 求老師收我 +3 | zzh16938784 2026-03-23 | 3/150 |
|
|
[考研] 070300化學(xué)求調(diào)劑 +5 | 苑豆豆 2026-03-20 | 5/250 |
|
|
[考研] 0703 調(diào)劑 +3 | 我可以上岸的對?/a> 2026-03-16 | 6/300 |
|
|
[考研] 0854電子信息求調(diào)劑 +3 | α____ 2026-03-22 | 3/150 |
|
|
[考研] 289材料與化工(085600)B區(qū)求調(diào)劑 +3 | 這么名字咋樣 2026-03-22 | 4/200 |
|
|
[考研] 一志愿華中農(nóng)業(yè)071010,總分320求調(diào)劑 +5 | 困困困困坤坤 2026-03-20 | 6/300 |
|
|
[考研] 求調(diào)劑 +5 | Zhangbod 2026-03-21 | 7/350 |
|
|
[考研] 354求調(diào)劑 +7 | Tyoumou 2026-03-18 | 10/500 |
|
|
[考博] 招收博士1-2人 +3 | QGZDSYS 2026-03-18 | 4/200 |
|
|
[考研] 085600材料與化工306 +4 | z1z2z3879 2026-03-21 | 4/200 |
|
|
[考研] 材料 271求調(diào)劑 +5 | 展信悅_ 2026-03-21 | 5/250 |
|
|
[考研] 308求調(diào)劑 +3 | 阿姐阿姐家啊 2026-03-18 | 3/150 |
|
|
[考研] 一志愿 西北大學(xué) ,070300化學(xué)學(xué)碩,總分287,雙非一本,求調(diào)劑。 +4 | 晨昏線與星海 2026-03-19 | 4/200 |
|
|
[考研] 一志愿蘇州大學(xué)材料求調(diào)劑,總分315(英一) +5 | sbdksD 2026-03-19 | 5/250 |
|
|
[考研] 0817 化學(xué)工程 299分求調(diào)劑 有科研經(jīng)歷 有二區(qū)文章 +22 | rare12345 2026-03-18 | 22/1100 |
|
|
[考研] 廣西大學(xué)家禽遺傳育種課題組2026年碩士招生(接收計(jì)算機(jī)專業(yè)調(diào)劑) +3 | 123阿標(biāo) 2026-03-17 | 3/150 |
|
|
[考研] 材料學(xué)碩318求調(diào)劑 +5 | February_Feb 2026-03-19 | 5/250 |
|
|
[考研] 一志愿中國海洋大學(xué),生物學(xué),301分,求調(diào)劑 +5 | 1孫悟空 2026-03-17 | 6/300 |
|