| 查看: 1816 | 回复: 8 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
用Gauss-Neuton算法解非线形最小二乘法问题 已有1人参与
|
|||
|
自己根据网上下载源代码修改的高斯-牛顿迭代法求非线形最小二乘问题,老是显示输入参数不足。注释是根据自己理解填写的 m文件代码如下: function [x,minf] = GN(f,x0,var,eps) format long; if nargin == 3 %如果没有设置eps,则eps=1.0e-6 eps = 1.0e-6; end S = transpose(f)*f; %trnspose是转置,求得r方 k = length(f); % n = length(x0); %n为变量个数,但是没用到啊? x0 = transpose(x0); %将行向量转置为列向量 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转置与其本身值, 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 命令窗口调用如下: xdata = S1o; %S1o及下面的ydata1都是自己的数据 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 提示错误如下: 错误使用 GN (line 6) 输入参数的数目不足。 |
» 收录本帖的淘帖专辑推荐
source |
» 猜你喜欢
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有147人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
求助NH4V4O10晶体的CIF文件
已经有0人回复
英国全奖博士招聘-深度学习与量子物理
已经有0人回复
间接带隙半导体有效质量求助
已经有0人回复
» 本主题相关价值贴推荐,对您同样有帮助:
用Gauss-Neuton算法解非线形最小二乘法问题
已经有0人回复
5楼2015-01-25 09:45:11
yongcailiu
金虫 (小有名气)
- 应助: 63 (初中生)
- 金币: 2283.9
- 红花: 10
- 帖子: 181
- 在线: 250.4小时
- 虫号: 1406563
- 注册: 2011-09-18
- 性别: GG
- 专业: 计算数学与科学工程计算
2楼2015-01-23 08:56:32
|
function [x,minf] = GN(f,x0,var,eps) format long; if nargin == 3 %如果没有设置eps,则eps=1.0e-6 eps = 1.0e-6; end m = 0; S = transpose(f)*f; %trnspose是转置,求得r方 k = length(f); % %n = length(x0); %n为变量个数,但是没用到啊? x0 = transpose(x0); %将行向量转置为列向量 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转置与其本身值, 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('迭代步数太多,可能不收敛'); 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 转换为 double 时出现以下错误: 出错 GN (line 17) Fx(i,1) = subs(f(i),var,x0); 又出新问题了,还是麻烦能够解答一下 以下是数据 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 |
3楼2015-01-23 19:12:03
yongcailiu
金虫 (小有名气)
- 应助: 63 (初中生)
- 金币: 2283.9
- 红花: 10
- 帖子: 181
- 在线: 250.4小时
- 虫号: 1406563
- 注册: 2011-09-18
- 性别: GG
- 专业: 计算数学与科学工程计算
4楼2015-01-24 11:14:35













回复此楼