24小时热门版块排行榜    

查看: 1195  |  回复: 4

wndg

木虫 (正式写手)

[求助] 牛顿迭代法解非线性方程组中的矩阵维数 已有1人参与

f1.m
%牛顿迭代法的 方程函数
function f=f1(x0)
x=x0(1);
y=x0(2);
f1=x^2-2*x-y+0.5;
f2=x^2+4*y^2-4;
%最后方程函数 以行向量输出
f=[f1 f2];

df1.m
function  f=df1(x0);
x=x0(1);
y=x0(2);

f=[2*x-2  -1
2*x 8*y];

new_ton.m
%牛顿迭代法 计算非线性方程组
%输入 x0为迭代初值
%tol为误差容限  如果缺省 默认为10的-10次方
%data用来存放计算的中间数据便于计算收敛情况分析
function  [x,n,data]=new_ton(x0,tol)
if nargin==1
tol=1e-10;
end
x1=x0-f1(x0)/df1(x0);
n=1;
%迭代过程
while (norm(x1-x0)>tol)&(n<500)
x0=x1;
x1=x0-f1(x0)/df1(x0);
n=n+1;
%data用来存放中间数据
data(:,n)=x1;
end
x=x1;

new_main.m
%牛顿迭代法的主函数
x0=[1 1];
[x,n,data]=new_ton(x0);
disp('计算结果为')
x
disp('迭代次数为')
n
%抽取data1中第一个变量数据 画出曲线
subplot(2,1,1)
plot(data(1,),title('x在迭代中的变化')
%抽取data中的第二个变量数据 画出其变化曲线
subplot(2,1,2)
plot(data(2,),title('y在迭代中的变化')

%以下为数据存储部分
num=(1:n)';
a=[num data'];
save data1.txt a -ascii


以上是书上的代码,我的问题是这个式子
f1(x0)/df1(x0)
左边是行向量,右边是2阶矩阵,为什么能除呢??
不应该是2维列向量才能除吗?
对于AX=B,B不应该是列向量吗??
代码里X也是行向量,搞不清楚这种处理什么意思,求大神
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

假装四处看风景
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (职业作家)

Matlab专家

感谢参与,应助指数 +1
本帖仅楼主可见
2楼2016-10-13 17:56:01
已阅   申请程序强帖   回复此楼   编辑   查看我的主页

昊客天下

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by yanze at 2016-10-13 17:56:01
f1(x0)/df1(x0)  等同于 f1(x0) * ( df1(x0)  )^-1


( df1(x0)  )^-1  是df1(x0) 的逆  还是二阶矩阵

可是,矩阵会变换的

发自小木虫Android客户端
3楼2016-10-13 18:01:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wndg

木虫 (正式写手)

引用回帖:
2楼: Originally posted by yanze at 2016-10-13 17:56:01
f1(x0)/df1(x0)  等同于 f1(x0) * ( df1(x0)  )^-1


( df1(x0)  )^-1  是df1(x0) 的逆  还是二阶矩阵

AX=B,X=A^-1*B,不应该左乘逆吗?
假装四处看风景
4楼2016-10-13 18:05:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (著名写手)

本帖仅楼主可见
5楼2016-10-17 18:53:19
已阅   申请程序强帖   回复此楼   编辑   查看我的主页
相关版块跳转 我要订阅楼主 wndg 的主题更新
信息提示
请填处理意见