首页 > 其他分享 >5月18号今日总结

5月18号今日总结

时间:2023-05-18 21:11:47浏览次数:37  
标签:总结 opt 迭代 18 fprintf iterations 今日 x0 grad

今日代码:

% 定义目标函数
f = @(x) 100*(x(1)^2 - x(2))^2 + (x(1) - 1)^2;

% 定义目标函数的梯度
grad_f = @(x) [400*x(1)*(x(1)^2 - x(2)) + 2*(x(1) - 1); -200*(x(1)^2 - x(2))];

% 定义终止准则
epsilon = 1e-5;

% 定义最大迭代次数
max_iterations = 1000;

% 初始点列表
initial_points = [0, 0; -1, 1; 2, -2];

% 迭代过程函数
function [x_opt, f_opt, iterations] = gradient_descent(f, grad_f, x0, epsilon, max_iterations)
    x = x0; % 初始化x
    f_values = []; % 用于存储每次迭代的函数值
    iterations = 0; % 迭代次数
    
    while iterations < max_iterations
        f_values = [f_values, f(x)]; % 记录当前迭代的函数值
        grad = grad_f(x); % 计算梯度
        alpha = 0.01; % 步长(学习率)选择为常数0.01
        x = x - alpha * grad; % 更新x
        iterations = iterations + 1; % 迭代次数加1
        
        % 判断终止准则
        if norm(grad) < epsilon
            break;
        end
    end
    
    x_opt = x; % 最优解
    f_opt = f(x); % 最优函数值
end

% 使用最速下降法求解并输出结果
for i = 1:size(initial_points, 1)
    x0 = initial_points(i, :);
    [x_opt, f_opt, iterations] = gradient_descent(f, grad_f, x0, epsilon, max_iterations);
    fprintf('初始点: [%d, %d]\n', x0);
    fprintf('迭代次数: %d\n', iterations);
    fprintf('最优函数值: %.6f\n', f_opt);
    fprintf('最优解: [%.6f, %.6f]\n', x_opt);
    fprintf('-------------------------------------\n');
end

 

标签:总结,opt,迭代,18,fprintf,iterations,今日,x0,grad
From: https://www.cnblogs.com/psh888/p/17413306.html

相关文章

  • 5-18打卡
    递归写爬楼梯#include<stdio.h>//定义一个函数,用来打印每次爬的台阶数voidprint_steps(intsteps[],intn){printf("一种可能的方法是:");for(inti=0;i<n;i++){printf("%d",steps[i]);}printf("\n");}//定义一个递......
  • 5.18
    #include<iostream>usingnamespacestd;#include<string>classstudent{public:   voidshangke();protected:   stringname;   intbj;   intid;};classteacher{public:   voidjiaoke();protected:   intID;   intgz;};c......
  • 5.18总结
    packagecom.mf.jdbc.exmaple;importcom.alibaba.druid.pool.DruidDataSourceFactory;importcom.mf.jdbc.Brand;importorg.junit.Test;importjavax.sql.DataSource;importjava.io.FileInputStream;importjava.sql.Connection;importjava.sql.PreparedStatement;......
  • 每日总结2023-05-18
    今天对项目进行美化对于登录按钮,使用<?xmlversion="1.0"encoding="utf-8"?><ripplexmlns:android="http://schemas.android.com/apk/res/android"android:color="@color/mi_bai"><itemandroid:id="@+id/maske......
  • 2023 5 18
    #include<iostream>#include<fstream>usingnamespacestd;classTercher{public:stringname="";intID=0;charsex='m';};stringname;intID;charsex;intmain(){ofstreamofs("D:\\Visua......
  • 5.18CSDN贪吃蛇
    贪吃蛇 速度不要调很慢会影响判断#include<iostream>#include<windows.h>#include<conio.h>#include<deque>#include<ctime>#include<stdexcept>usingnamespacestd;structSnake{//蛇类结构体charimage;shortx,y;//坐标};classsnakeGame......
  • 2023.5.18
    importosimportpandasaspd#添加测试数据os.makedirs(os.path.join('.','data'),exist_ok=True)data_file=os.path.join('.','data','house_tiny.csv')withopen(data_file,'w')asf:   f.write('N......
  • 5.18打卡
    一、问题描述:骰子是一个有六个面的正方体,每个面分别印有1~6之间的小圆点代表点数。假设这个游戏的规则是:两个人轮流掷骰子6次,并将每次投掷的点数累加起来。点数多者获胜;点数相同则为平局。要求编写程序模拟这个游戏的过程,并求出玩100盘之后谁是最终的获胜者。二、设计思路:由于每......
  • 总结20230518
    代码时间(包括上课)1h代码量(行):30行博客数量(篇):1篇相关事项:1、今天上午没课,把形势与政策写了,但是查重不过关,今天晚上在完善完善。2、今天下午上的是体育,进行了体育考试,结果非常的不理想,步法不知道怎么个事,跑的也太慢了。......
  • 5.18
    #include<stdio.h>main(){inti,x,y,last=1;printf("Inputxandy:\n");scanf("%d%d",&x,&y);for(i=1;i<=y;i++)last=last*x%1000;printf("Thelastthreedigitsis:%d\n",last);}......